diff options
Diffstat (limited to 'src/core/function.c')
| -rw-r--r-- | src/core/function.c | 46 |
1 files changed, 17 insertions, 29 deletions
diff --git a/src/core/function.c b/src/core/function.c index a102d7b..0df0b65 100644 --- a/src/core/function.c +++ b/src/core/function.c @@ -636,12 +636,27 @@ void function_process_buildin(Interpret *p_interpret, Token *p_token_ident, Stack *p_stack_args) { + Token *p_token = stack_top(p_stack_args); + + if (token_get_tt(p_token) == TT_ARRAY) { + ArrayIterator *p_iter = arrayiterator_new(p_token->p_array); + + while (arrayiterator_has_next(p_iter)) { + stack_push(p_stack_args, arrayiterator_next(p_iter)); + function_process_buildin(p_interpret, p_token_ident, + p_stack_args); + stack_pop(p_stack_args); + } + + arrayiterator_delete(p_iter); + + return; + } + if (strcmp("assert", token_get_val(p_token_ident)) == 0) { if (0 == stack_size(p_stack_args)) _FUNCTION_ERROR("No argument given", p_token_ident); - Token *p_token = stack_top(p_stack_args); - switch (token_get_tt(p_token)) { case TT_INTEGER: if (token_get_ival(p_token) == 0) @@ -655,9 +670,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, if (atoi(token_get_val(p_token)) == 0) _FUNCTION_ERROR("Assert failed", p_token); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; NO_DEFAULT; } @@ -665,7 +677,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, if (0 == stack_size(p_stack_args)) _FUNCTION_ERROR("No argument given", p_token_ident); - Token *p_token = stack_top(p_stack_args); switch (token_get_tt(p_token)) { case TT_INTEGER: token_set_ival(p_token, token_get_ival(p_token) - 1); @@ -677,9 +688,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, convert_to_integer(p_token); token_set_ival(p_token, token_get_ival(p_token) - 1); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; NO_DEFAULT; } @@ -707,7 +715,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, if (0 == stack_size(p_stack_args)) _FUNCTION_ERROR("No argument given", p_token_ident); - Token *p_token = stack_top(p_stack_args); p_token = token_new_copy(p_token); convert_to_integer(p_token); exit(token_get_ival(p_token)); @@ -716,7 +723,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, if (0 == stack_size(p_stack_args)) _FUNCTION_ERROR("No argument given", p_token_ident); - Token *p_token = stack_top(p_stack_args); switch (token_get_tt(p_token)) { case TT_INTEGER: token_set_ival(p_token, token_get_ival(p_token) + 1); @@ -728,9 +734,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, convert_to_integer(p_token); token_set_ival(p_token, token_get_ival(p_token) + 1); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; NO_DEFAULT; } @@ -763,9 +766,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, token_set_ival(p_token, -atoi(token_get_val(p_token))); token_set_tt(p_token, TT_INTEGER); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; NO_DEFAULT; } @@ -789,9 +789,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, token_set_ival(p_token, !atoi(token_get_val(p_token))); token_set_tt(p_token, TT_INTEGER); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; NO_DEFAULT; } } @@ -812,9 +809,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, case TT_STRING: printf("%s", token_get_val(p_token)); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; NO_DEFAULT; } } @@ -837,9 +831,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, case TT_STRING: printf("%s", token_get_val(p_token)); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; } } stackiterator_delete(p_iter); @@ -886,9 +877,6 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident, token_set_ival(p_token, !atoi(token_get_val(p_token))); token_set_tt(p_token, TT_INTEGER); break; - case TT_ARRAY: - ERROR("ARRAY bla yet implemented"); - break; NO_DEFAULT; } |
