summaryrefslogtreecommitdiff
path: root/src/core/convert.c
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-11-04 22:55:22 +0000
committerPaul Buetow <paul@buetow.org>2008-11-04 22:55:22 +0000
commit87de8060633801d3793246967f43c6159b0f5351 (patch)
tree94291ac0c25ef225b338532f0e94f81b7e2eda38 /src/core/convert.c
parent43cdc845c8c10bbf0e4c0f70b09a6f5290931832 (diff)
astyle
Diffstat (limited to 'src/core/convert.c')
-rw-r--r--src/core/convert.c85
1 files changed, 70 insertions, 15 deletions
diff --git a/src/core/convert.c b/src/core/convert.c
index aac54d1..d156007 100644
--- a/src/core/convert.c
+++ b/src/core/convert.c
@@ -1,13 +1,13 @@
/*:*
*: File: ./src/core/convert.c
*: A simple interpreter
- *:
+ *:
*: WWW : http://fype.buetow.org
*: E-Mail : fype@dev.buetow.org
- *:
- *: Copyright (c) 2005 2006 2007 2008, Paul C. Buetow
+ *:
+ *: Copyright (c) 2005 2006 2007 2008, 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
@@ -15,20 +15,20 @@
*: * 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 P. B. Labs nor the names of its contributors may
- *: be used to endorse or promote products derived from this software
+ *: * Neither the name of P. B. Labs 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
+ *:
+ *: 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)
+ *: 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
+ *: 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.
*:*/
@@ -67,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));
+ break;
default:
ERROR("Ouups(%s)", tt_get_name(token_get_tt(p_token)));
}
@@ -87,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));
+ break;
default:
token_print_val(p_token);
ERROR("Datatype conversion error '%s'", token_get_val(p_token));
@@ -118,6 +125,16 @@ convert_to_string(Token *p_token) {
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;
@@ -128,6 +145,41 @@ convert_to_string(Token *p_token) {
}
void
+convert_to_array(Token *p_token) {
+ ERROR("not yet implemented");
+ 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_STRING:
+ break;
+ case TT_ARRAY:
+ break;
+ default:
+ ERROR("Datatype conversion error");
+ break;
+ }
+}
+
+void
convert_to_tt(Token *p_token, TokenType tt) {
switch (tt) {
case TT_INTEGER:
@@ -139,6 +191,9 @@ convert_to_tt(Token *p_token, TokenType tt) {
case TT_STRING:
convert_to_string(p_token);
break;
+ case TT_ARRAY:
+ convert_to_array(p_token);
+ break;
default:
ERROR("Ouups!");
}