summaryrefslogtreecommitdiff
path: root/src/core/convert.c
diff options
context:
space:
mode:
authoradmin (centauri.fritz.box) <puppet@mx.buetow.org>2014-06-30 23:53:04 +0200
committeradmin (centauri.fritz.box) <puppet@mx.buetow.org>2014-06-30 23:53:04 +0200
commitadc4b59a3e7c9db6f33670164490830d87331228 (patch)
treeadc5d21856852bfb5c3cca794a9c07ad476d877e /src/core/convert.c
parent63cf3028445d8d213ffc774f77aafd7283cb4fbd (diff)
parent5ab5de91eb0ae6ed9db78a2c8c47ec67f105e504 (diff)
Diffstat (limited to 'src/core/convert.c')
-rw-r--r--src/core/convert.c216
1 files changed, 0 insertions, 216 deletions
diff --git a/src/core/convert.c b/src/core/convert.c
deleted file mode 100644
index cf8987e..0000000
--- a/src/core/convert.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*:*
- *: File: ./src/core/convert.c
- *: A simple interpreter
- *:
- *: WWW : http://fype.buetow.org
- *: AUTHOR : http://paul.buetow.org
- *: E-Mail : fype at dev.buetow.org
- *:
- *: Copyright (c) 2005 - 2009, Dipl.-Inform. (FH) Paul C. Buetow
- *: All rights reserved.
- *:
- *: Redistribution and use in source and binary forms, with or without modi-
- *: fication, are permitted provided that the following conditions are met:
- *: * Redistributions of source code must retain the above copyright
- *: notice, this list of conditions and the following disclaimer.
- *: * Redistributions in binary form must reproduce the above copyright
- *: notice, this list of conditions and the following disclaimer in the
- *: documentation and/or other materials provided with the distribution.
- *: * Neither the name of buetow.org nor the names of its contributors may
- *: be used to endorse or promote products derived from this software
- *: without specific prior written permission.
- *:
- *: THIS SOFTWARE IS PROVIDED BY PAUL C. BUETOW AS IS'' AND ANY EXPRESS OR
- *: IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- *: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- *: DISCLAIMED. IN NO EVENT SHALL PAUL C. BUETOW BE LIABLE FOR ANY DIRECT,
- *: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- *: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- *: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- *: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- *: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
- *: IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- *: POSSIBILITY OF SUCH DAMAGE.
- *:*/
-
-#include "convert.h"
-#include "../data/array.h"
-
-void
-convert_to_integer(Token *p_token) {
- switch (token_get_tt(p_token)) {
- case TT_INTEGER:
- break;
- case TT_DOUBLE:
- token_set_tt(p_token, TT_INTEGER);
- token_set_ival(p_token, (int)token_get_dval(p_token));
- break;
- case TT_STRING:
- 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));
- break;
- default:
- ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token)));
- break;
- }
-}
-
-int
-convert_to_integer_get(Token *p_token) {
- switch (token_get_tt(p_token)) {
- case TT_INTEGER:
- return (token_get_ival(p_token));
- case TT_DOUBLE:
- 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));
- break;
- default:
- ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token)));
- }
-
- return (0); /* Never reach this point */
-}
-
-void
-convert_to_double(Token *p_token) {
- switch (token_get_tt(p_token)) {
- case TT_INTEGER:
- token_set_tt(p_token, TT_DOUBLE);
- token_set_dval(p_token, token_get_ival(p_token));
- break;
- case TT_DOUBLE:
- break;
- case TT_STRING:
- 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));
- break;
- default:
- token_print_val(p_token);
- ERROR("Datatype conversion error '%s'", token_get_val(p_token));
- break;
- }
-}
-
-void
-convert_to_string(Token *p_token) {
- switch (token_get_tt(p_token)) {
- case TT_INTEGER:
- {
- token_set_tt(p_token, TT_STRING);
- char c_tmp[1024];
- sprintf(c_tmp, "%d", token_get_ival(p_token));
- 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;
- }
- break;
- case TT_DOUBLE:
- {
- token_set_tt(p_token, TT_STRING);
- char c_tmp[1024];
- sprintf(c_tmp, "%f", token_get_dval(p_token));
- 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;
- }
- 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));
- 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;
- }
- break;
- case TT_STRING:
- break;
- default:
- ERROR("Datatype conversion error");
- break;
- }
-}
-
-void
-convert_to_array(Token *p_token) {
- ERROR("not yet implemented");
-}
-
-void
-convert_to_tt(Token *p_token, TokenType tt) {
- switch (tt) {
- case TT_INTEGER:
- convert_to_integer(p_token);
- break;
- case TT_DOUBLE:
- convert_to_double(p_token);
- break;
- case TT_STRING:
- convert_to_string(p_token);
- break;
- case TT_ARRAY:
- convert_to_array(p_token);
- break;
- default:
- ERROR("Ouups!");
- }
-}
-
-TokenType
-convert_to_highest(Token *p_token1, Token *p_token2) {
- TokenType tt_highest = token_get_tt(p_token1);
-
- if (tt_highest < token_get_tt(p_token2)) {
- tt_highest = token_get_tt(p_token2);
-
- convert_to_tt(p_token1, tt_highest);
-
- } else {
- convert_to_tt(p_token2, tt_highest);
- }
-
- return (tt_highest);
-}
-
-TokenType
-convert_function_arg_types_to_highest(Stack *p_stack_args, int i_args) {
-
- if (i_args <= 0)
- i_args = stack_size(p_stack_args);
-
- StackIterator *p_iter = stackiterator_new(p_stack_args);
- TokenType tt_highest = TT_INTEGER;
-
- for (int i = 0; i < i_args && stackiterator_has_next(p_iter); ++i) {
- Token *p_token = stackiterator_next(p_iter);
- if (token_get_tt(p_token) > tt_highest)
- tt_highest = token_get_tt(p_token);
- }
-
- stackiterator_delete(p_iter);
- p_iter = stackiterator_new(p_stack_args);
-
- for (int i = 0; i < i_args && stackiterator_has_next(p_iter); ++i) {
- Token *p_token = stackiterator_next(p_iter);
- convert_to_tt(p_token, tt_highest);
- }
-
- stackiterator_delete(p_iter);
-
- return (tt_highest);
-}
-