diff options
| author | Paul Buetow <paul@buetow.org> | 2008-09-16 17:05:51 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-09-16 17:05:51 +0000 |
| commit | 71185ab0ab0b08b4d5bb2e750ff85e11f105a453 (patch) | |
| tree | a6ad933176f92b60d2f1560d2f1bac46ec6b9566 /src/core/convert.c | |
| parent | 8b31b18a43dea55489e70d5b2ea6fc183cc67533 (diff) | |
array progress
Diffstat (limited to 'src/core/convert.c')
| -rw-r--r-- | src/core/convert.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/core/convert.c b/src/core/convert.c index 73fb8a2..081e92e 100644 --- a/src/core/convert.c +++ b/src/core/convert.c @@ -33,6 +33,7 @@ *:*/ #include "convert.h" +#include "../data/array.h" void convert_to_integer(Token *p_token) { @@ -47,6 +48,10 @@ convert_to_integer(Token *p_token) { token_set_tt(p_token, TT_INTEGER); token_set_ival(p_token, atoi(token_get_val(p_token))); break; + case TT_ARRAY: + token_set_tt(p_token, TT_INTEGER); + token_set_ival(p_token, array_get_size(p_token->p_array)-1); + break; default: ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); break; @@ -62,6 +67,9 @@ convert_to_integer_get(Token *p_token) { return ((int) token_get_dval(p_token)); case TT_STRING: return (atoi(token_get_val(p_token))); + case TT_ARRAY: + return (array_get_size(p_token->p_array)-1); + break; default: ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token))); } @@ -82,6 +90,10 @@ convert_to_double(Token *p_token) { token_set_tt(p_token, TT_DOUBLE); token_set_dval(p_token, atof(token_get_val(p_token))); break; + case TT_ARRAY: + token_set_tt(p_token, TT_DOUBLE); + token_set_dval(p_token, array_get_size(p_token->p_array)-1); + break; default: token_print_val(p_token); ERROR("Datatype conversion error '%s'", token_get_val(p_token)); @@ -116,6 +128,17 @@ convert_to_string(Token *p_token) { break; case TT_STRING: break; + case TT_ARRAY: + token_set_tt(p_token, TT_STRING); + char c_tmp[1024]; + sprintf(c_tmp, "%d", array_get_size(p_token->p_array)-1); + int i_len = strlen(c_tmp); + p_token->c_val = realloc(p_token->c_val, sizeof(char) * (i_len + 1)); + strcpy(p_token->c_val, c_tmp); + p_token->c_val[i_len] = 0; + array_iterate(p_token->p_array, token_delete_cb); + + break; default: ERROR("Datatype conversion error"); break; |
