Archeus 0.0.0
A C library and game engine that focuses on documentation
Loading...
Searching...
No Matches
chemical.c
Go to the documentation of this file.
1#include "arc/std/chemical.h"
3#include "arc/std/bool.h"
4#include "arc/std/hashtable.h"
5#include "arc/std/parser.h"
6#include <stddef.h>
7#include <stdint.h>
8#include <stdlib.h>
9
15
18
20 if(ARC_String_EqualsCStringWithStrlen(string, "LAMBDA")){
22 }
23
24 return ~(uint32_t)0;
25}
26
27void ARC_ChemicalData_CreateFn(void **data, ARC_ParserTagToken *parsedData, void *userData){
28 *data = NULL;
29 if(data == NULL || userData == NULL){
30 //TODO: error here?
31 *data = NULL;
32 return;
33 }
34}
35
37 *chemical = (ARC_Chemical *)malloc(sizeof(ARC_Chemical));
38
39 /* ~ define the language as a string ~ */
40 char *languageCString =
41 "<language> -> <group> <language> | <variableLine> <language> | <whitespace> <language>\n"
42
43 "<group> -> <groupName> <whitespace> <variable> <whitespace> LEFT_CURLY_BRACE <whitespace> <variableLine> <whitespace> RIGHT_CURLY_BRACE\n"
44
45 "<variableLine> -> <type> <whitespace> <variable> <whitespace> EQUALS <whitespace> value <whitespace> SEMICOLON <whitespace>\n"
46
47 "<groupName> -> <variable>\n"
48 "<type> -> <variable>\n"
49 "<value> -> <variable> | <number> | <nestedValue>\n"
50 "<nestedValue> -> OPEN_CURLY_BRACE <whitespace> <valueArgs> <whitespace> CLOSE_CURLY_BRACE\n"
51 "<valueArgs> -> <value> | <value> COMMA <valueArgs>\n"
52
53 "<variable> -> ALPHA_UPPER_CHAR <variableName> | ALPHA_LOWER_CHAR <variableName> | UNDERSCORE <variableName>\n"
54 "<variableName> -> <charOrNum> <variableName> | LAMBDA\n"
55 "<charOrNum> -> ALPHA_UPPER_CHAR | ALPHA_LOWER_CHAR | UNDERSCORE | NUM\n"
56
57 "<number> -> NUMBER <number> | NUMBER LAMBDA\n"
58
59 "<whitespace> -> SPACE <whitespace> | TAB <whitespace> | NEWLINE <whitespace> | LAMBDA\n";
60
61 /* ~ define the language as a string ~ */
62 ARC_String *languageString;
63 ARC_String_CreateWithStrlen(&languageString, languageCString);
64
65 /* ~ init the userdata? ~ */
66
67 /* ~ create the language ~ */
68 //ARC_ParserData_CreateFn createCharFn = ARC_ChemicalData_CreateFn;
69 //ARC_ParserData_DestroyFn destroyCharFn = ARC_ChemicalData_DestroyFn;
70 //ARC_Parser_CreateFromString(parser, languageString, ARC_ParserCSV_InitLexerRulesFn, ARC_ParserCSV_GetStringIdFn, &createCharFn, &destroyCharFn, userdata);
71
72 //cleanup
73 ARC_String_Destroy(languageString);
74}
75
78
81
82void ARC_Chemical_SetGroup(ARC_Chemical *chemical, ARC_String *groupName){
83}
84
85void *ARC_Chemical_Get(ARC_Chemical *chemical, ARC_String *element){
86 return NULL;
87}
88
91
94
97
void ARC_Chemical_LoadFromFile(ARC_String *path)
TODO: write this.
Definition chemical.c:92
void ARC_ChemicalData_CreateFn(void **data, ARC_ParserTagToken *parsedData, void *userData)
Definition chemical.c:27
void ARC_Chemical_UnloadFromFile(ARC_String *data)
TODO: write this.
Definition chemical.c:98
void ARC_Chemical_LoadFromString(ARC_String *path)
TODO: write this.
Definition chemical.c:89
void ARC_Chemical_Create(ARC_Chemical **chemical)
TODO: write this.
Definition chemical.c:36
void ARC_Chemical_RegisterType(ARC_Chemical *chemical, ARC_String *typeName, ARC_ChemicalData_CopyToTypeFn *copyToTypeFn, ARC_ParserCSV_DestroyTypeFn destroyTypeFn)
TODO: write this.
Definition chemical.c:79
void ARC_Chemical_SetGroup(ARC_Chemical *chemical, ARC_String *groupName)
sets current group in config
Definition chemical.c:82
void ARC_Chemical_Destroy(ARC_Chemical *chemical)
TODO: write this.
Definition chemical.c:76
void ARC_Chemical_InitLexerRulesFn(ARC_Lexer *lexer)
Definition chemical.c:16
uint32_t ARC_Chemical_GetStringIdFn(ARC_String *string)
Definition chemical.c:19
void ARC_Chemical_UnloadFromString(ARC_String *data)
TODO: write this.
Definition chemical.c:95
void * ARC_Chemical_Get(ARC_Chemical *chemical, ARC_String *element)
get a value from a given keyname
Definition chemical.c:85
void(* ARC_ParserCSV_DestroyTypeFn)(void *data)
TODO: write this.
Definition chemical.h:43
void(* ARC_ChemicalData_CopyToTypeFn)(void **data, ARC_ParserTagToken *parsedData)
TODO: write this.
Definition chemical.h:38
#define ARC_PARSER_TAG_LAMBDA
basic tag for letting the parser know it is ok to end
Definition parser.h:150
void ARC_String_CreateWithStrlen(ARC_String **string, char *data)
creates ARC_String type with strinlen
Definition string.c:32
ARC_Bool ARC_String_EqualsCStringWithStrlen(ARC_String *string, const char *cstring)
check if ARC_String and cstring match
Definition string.c:171
void ARC_String_Destroy(ARC_String *string)
destroys ARC_String type
Definition string.c:52
ARC_Parser * parser
Definition chemical.c:11
ARC_Hashtable * groups
Definition chemical.c:13
a parser type used inside of the parser data create function
Definition parser.h:35
substring position within a string
Definition string.h:14