41 if(token->type == __DW_METHOD) {
46 if(token->token != NULL) {
47 for(i = 0; token->token[i] != NULL; i++) {
49 if(token->token[i]->type == __DW_METHOD) {
53 for(j = 0; results[j] != NULL; j++) {
62 for(j = 0; results[j] != NULL; j++)
65 for(j = 0; results[j] != NULL; j++) {
66 newresults[j] = results[j];
71 results[j + 1] = NULL;
75 r2->
value = __dw_strdup(token->token[i]->name);
77 for(j = 0; results[j] != NULL; j++)
80 for(j = 0; results[j] != NULL; j++) {
81 newresults[j] = results[j];
86 results[j + 1] = NULL;
90 if(r->
error)
return r;
91 if(__dw_strcaseequ(token->name,
"create_table")) {
95 for(j = 0; results[j] != NULL; j++) {
96 if(results[j]->
value != NULL) {
98 if(first == -1) first = j;
106 char* fieldtypes = malloc(argc);
107 fieldtypes[argc - 1] = 0;
108 char** fields = malloc(
sizeof(*fields) * (argc));
109 fields[argc - 1] = NULL;
111 for(j = first + 1; results[j] != NULL; j++) {
112 if(results[j]->
value != NULL) {
113 char* val = __dw_strdup(results[j]->
value);
115 for(k = 0; val[k] != 0; k++) {
118 if(__dw_strcaseequ(val,
"string")) {
119 fieldtypes[argc] =
'S';
120 }
else if(__dw_strcaseequ(val,
"integer")) {
121 fieldtypes[argc] =
'I';
122 }
else if(__dw_strcaseequ(val,
"double")) {
123 fieldtypes[argc] =
'D';
124 }
else if(__dw_strcaseequ(val,
"logical")) {
125 fieldtypes[argc] =
'L';
126 }
else if(__dw_strcaseequ(val,
"help")) {
127 fieldtypes[argc] =
'?';
129 fields[argc] = __dw_strdup(val + k + 1);
142 for(j = 0; fields[j] != NULL; j++) free(fields[j]);
146 }
else if(__dw_strcaseequ(token->name,
"concat")) {
147 r->
value = malloc(1);
150 for(j = 0; results[j] != NULL; j++) {
151 if(results[j]->
value != NULL) {
152 char* tmp = r->
value;
153 r->
value = __dw_strcat(tmp, results[j]->
value);
157 }
else if(__dw_strcaseequ(token->name,
"print")) {
159 for(j = 0; results[j] != NULL; j++) {
160 if(results[j]->
value != NULL) {
161 printf(
"%s\n", results[j]->
value);
169 for(j = 0; results[j] != NULL; j++) {
184 struct __dw_token* token = __dw_parser_parse(code,
true);
188 r->
errnum = token->errnum;
190 dataworks_database_free_result(r);
191 r = __dataworks_database_execute_code(db, token);
193 __dw_parser_free(token);
202 if(result->
value != NULL) free(result->
value);
struct dataworks_db_result * dataworks_database_execute_code(struct dataworks_db *db, const char *code)
Executes the code.
int dataworks_database_create_table(struct dataworks_db *db, const char *name, char **fields, const char *fieldtypes)
Creates a table.
void dataworks_database_free_result(struct dataworks_db_result *result)
Frees the result.
@ DW_ERR_EXEC_INSUFFICIENT_ARGUMENTS
Insufficient arguments.
@ DW_ERR_EXEC_UNKNOWN_METHOD
Unknown method.
@ DW_ERR_EXEC_NON_METHOD
Cannot call non-method.
@ DW_ERR_PARSER_NULL
Parser returned NULL.
bool error
True if this is an error.