summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-11-04 23:24:42 +0000
committerPaul Buetow <paul@buetow.org>2008-11-04 23:24:42 +0000
commitd2713783c48ca9fbdd6f4ea3aab03fe856fdd52a (patch)
tree3d78a409ab9949319285d26403dd6b9d8bf2067f
parentf0b2170a9c769425082604c9e9252ba422902f3e (diff)
big step forward for arrays in fype.
-rw-r--r--docs/help.txt2
-rw-r--r--docs/stats.txt2
-rw-r--r--docs/version.txt2
-rw-r--r--src/build.h2
-rw-r--r--src/core/convert.c30
-rw-r--r--src/core/function.c94
-rw-r--r--src/core/interpret.c1
-rw-r--r--src/core/token.c3
-rw-r--r--src/data/array.c11
-rw-r--r--src/data/array.h1
-rw-r--r--tags3
11 files changed, 84 insertions, 67 deletions
diff --git a/docs/help.txt b/docs/help.txt
index 21d596e..1327bde 100644
--- a/docs/help.txt
+++ b/docs/help.txt
@@ -1,4 +1,4 @@
-Fype v0.1-devel Build 9338
+Fype v0.1-devel Build 9347
(c) Paul C. Buetow (2005 - 2008) <fype@dev.buetow.org>
-e Executes given code string (see synopses)
-h Prints this help
diff --git a/docs/stats.txt b/docs/stats.txt
index ca8db03..2a52d18 100644
--- a/docs/stats.txt
+++ b/docs/stats.txt
@@ -1,4 +1,4 @@
===> Num of C source files : 44
-===> Num of C source lines : 7950
+===> Num of C source lines : 7965
===> Num of Fype source examples : 14
===> Num of Fype source lines : 362
diff --git a/docs/version.txt b/docs/version.txt
index 520eab4..e3059ba 100644
--- a/docs/version.txt
+++ b/docs/version.txt
@@ -1 +1 @@
-Fype v0.1-devel Build 9338
+Fype v0.1-devel Build 9347
diff --git a/src/build.h b/src/build.h
index 4249787..8b24407 100644
--- a/src/build.h
+++ b/src/build.h
@@ -35,7 +35,7 @@
#ifndef BUILD_H
#define BUILD_H
-#define BUILDNR 9344
+#define BUILDNR 9347
#define OS_FREEBSD
#endif
diff --git a/src/core/convert.c b/src/core/convert.c
index d156007..ee9ab9b 100644
--- a/src/core/convert.c
+++ b/src/core/convert.c
@@ -147,36 +147,6 @@ 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
diff --git a/src/core/function.c b/src/core/function.c
index fbdf53d..8d5dbf6 100644
--- a/src/core/function.c
+++ b/src/core/function.c
@@ -186,14 +186,10 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atoi(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_INTEGER);
break;
- /*
- case TT_ARRAY:
- token_set_ival(p_token_store,
- atoi(token_get_val(p_token_next)) +
- atoi(token_get_val(p_token_store)));
- token_set_tt(p_token_store, TT_INTEGER);
- break;
- */
+ case TT_ARRAY:
+ array_append(p_token_store->p_array,
+ p_token_next->p_array);
+ break;
NO_DEFAULT;
}
break;
@@ -215,6 +211,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atoi(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("TT_ARRAY - TT_ARRAY not yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -236,6 +235,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atoi(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("TT_ARRAY * TT_ARRAY not yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -257,6 +259,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atof(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_DOUBLE);
break;
+ case TT_ARRAY:
+ ERROR("TT_ARRAY / TT_ARRAY not yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -278,6 +283,8 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
strcmp(token_get_val(p_token_next),
token_get_val(p_token_store)) == 0);
token_set_tt(p_token_store, TT_INTEGER);
+ case TT_ARRAY:
+ ERROR("TT_ARRAY eq TT_ARRAY not yet implemented");
break;
NO_DEFAULT;
}
@@ -301,6 +308,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
token_get_val(p_token_store)) != 0);
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -323,6 +333,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
token_get_val(p_token_store)) <= 0);
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -345,6 +358,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
token_get_val(p_token_store)) >= 0);
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -367,6 +383,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
token_get_val(p_token_store)) < 0);
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -389,27 +408,8 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
token_get_val(p_token_store)) > 0);
token_set_tt(p_token_store, TT_INTEGER);
break;
- NO_DEFAULT;
- }
- break;
- case TT_AND:
- switch (tt_highest) {
- case TT_INTEGER:
- token_set_ival(p_token_store,
- (int) token_get_ival(p_token_next) &
- token_get_ival(p_token_store));
- break;
- case TT_DOUBLE:
- token_set_ival(p_token_store,
- (int) token_get_dval(p_token_next) &
- (int) token_get_dval(p_token_store));
- token_set_tt(p_token_store, TT_INTEGER);
- break;
- case TT_STRING:
- token_set_ival(p_token_store,
- atoi(token_get_val(p_token_next)) &
- atoi(token_get_val(p_token_store)));
- token_set_tt(p_token_store, TT_INTEGER);
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
break;
NO_DEFAULT;
}
@@ -433,6 +433,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atoi(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -455,6 +458,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atoi(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -477,6 +483,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atoi(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -499,6 +508,9 @@ _process(Interpret *p_interpret, Token *p_token_store, Token *p_token_op,
atoi(token_get_val(p_token_store)));
token_set_tt(p_token_store, TT_INTEGER);
break;
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
NO_DEFAULT;
}
break;
@@ -617,6 +629,9 @@ 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;
}
@@ -636,6 +651,9 @@ 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;
}
@@ -684,6 +702,9 @@ 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;
}
@@ -716,6 +737,9 @@ 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;
}
@@ -739,6 +763,9 @@ 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;
}
}
@@ -759,6 +786,9 @@ 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;
}
}
@@ -780,6 +810,9 @@ function_process_buildin(Interpret *p_interpret, Token *p_token_ident,
break;
case TT_STRING:
printf("%s", token_get_val(p_token));
+ case TT_ARRAY:
+ ERROR("ARRAY bla yet implemented");
+ break;
break;
}
}
@@ -827,6 +860,9 @@ 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;
}
diff --git a/src/core/interpret.c b/src/core/interpret.c
index 098111b..c6b66de 100644
--- a/src/core/interpret.c
+++ b/src/core/interpret.c
@@ -801,6 +801,7 @@ _term(Interpret *p_interpret) {
case TT_INTEGER:
case TT_DOUBLE:
case TT_STRING:
+ case TT_ARRAY:
stack_push(p_interpret->p_stack, p_interpret->p_token);
_NEXT
return (1);
diff --git a/src/core/token.c b/src/core/token.c
index 6a9d966..3a2e413 100644
--- a/src/core/token.c
+++ b/src/core/token.c
@@ -398,7 +398,8 @@ token_print_val(Token *p_token) {
printf("(%s, %s)", tt_get_name(tt), token_get_val(p_token));
break;
case TT_ARRAY:
- printf("(%s, size:%d)", tt_get_name(tt), array_get_size(p_token->p_array));
+ printf("(%s, size:%d)", tt_get_name(tt),
+ array_get_size(p_token->p_array));
break;
default:
ERROR("Ouups(%s)!", tt_get_name(tt));
diff --git a/src/data/array.c b/src/data/array.c
index 8e3419a..9bd0101 100644
--- a/src/data/array.c
+++ b/src/data/array.c
@@ -56,14 +56,14 @@ array_new_size(int i_size) {
}
void
-_array_new_copy_cb(void *p_array, void *p_void) {
+_unshift_cb(void *p_array, void *p_void) {
array_unshift(p_array, p_void);
}
Array*
array_new_copy(Array *p_array) {
Array *p_array_cpy = array_new_size(array_get_size(p_array));
- array_iterate2(p_array, _array_new_copy_cb, p_array_cpy);
+ array_iterate2(p_array, _unshift_cb, p_array_cpy);
return (p_array_cpy);
}
@@ -239,6 +239,13 @@ array_push(Array *p_array, void *p_void) {
}
void
+array_append(Array *p_array, Array *p_array_append) {
+ int i_size = array_get_size(p_array) + array_get_size(p_array_append);
+ array_resize(p_array, i_size);
+ array_iterate2(p_array_append, _unshift_cb, p_array);
+}
+
+void
array_iterate(Array *p_array, void (*func)(void *)) {
if (!p_array)
return;
diff --git a/src/data/array.h b/src/data/array.h
index 63d8cc9..a6648bf 100644
--- a/src/data/array.h
+++ b/src/data/array.h
@@ -74,6 +74,7 @@ _Bool array_defined(Array *p_array, int i_index);
void array_print_int(Array *p_array);
void array_splice(Array *p_array, int i_index, Array *p_array2);
void array_push(Array *p_array, void *p_void);
+void array_append(Array *p_array, Array *p_array_append);
void array_unshift(Array *p_array, void *p_void);
void array_iterate(Array *p_array, void (*func)(void *));
void array_iterate2(Array *p_array, void (*func)(void *, void *),
diff --git a/tags b/tags
index 1896056..ec8ff65 100644
--- a/tags
+++ b/tags
@@ -6,7 +6,6 @@ _GARBAGE_ERROR ./src/core/garbage.c /^#define _GARBAGE_ERROR(m) \\$/
_Garbage ./src/core/garbage.c /^} _Garbage;$/
_INTERPRET_ERROR ./src/core/interpret.c /^#define _INTERPRET_ERROR(m,t) \\$/
_add_semicolon_to_list ./src/core/scanner.c /^_add_semicolon_to_list(Scanner *p_scanner) {$/
-_array_new_copy_cb ./src/data/array.c /^_array_new_copy_cb(void *p_array, void *p_void) {$/
_block ./src/core/interpret.c /^_block(Interpret *p_interpret) {$/
_block_get ./src/core/interpret.c /^_block_get(Interpret *p_interpret, List *p_list_bl/
_block_skip ./src/core/interpret.c /^_block_skip(Interpret *p_interpret) {$/
@@ -36,6 +35,7 @@ _term ./src/core/interpret.c /^_term(Interpret *p_interpret) {$/
_tree_print ./src/data/tree.c /^_tree_print(TreeNode *p_treenode, int i_indent) {$/
_tree_print_cb ./src/data/tree.c /^_tree_print_cb(void *p_void, void *p_indent) {$/
_tree_print_cb2 ./src/data/tree.c /^_tree_print_cb2(void *p_void, void *p_indent) {$/
+_unshift_cb ./src/data/array.c /^_unshift_cb(void *p_array, void *p_void) {$/
_var_assign ./src/core/interpret.c /^_var_assign(Interpret *p_interpret) {$/
_var_decl ./src/core/interpret.c /^_var_decl(Interpret *p_interpret) {$/
_var_list ./src/core/interpret.c /^_var_list(Interpret *p_interpret) {$/
@@ -48,6 +48,7 @@ argv_run ./src/argv.c /^argv_run(Fype *p_fype, int i_argc, char **pc_argv)/
argv_switch ./src/argv.c /^argv_switch(char c_arg, Tupel *p_tupel_argv, unsig/
argv_synopsis ./src/argv.c /^argv_synopsis(Tupel *p_tupel_argv) {$/
argv_tupel_delete ./src/argv.c /^argv_tupel_delete(Tupel *p_tupel_argv) {$/
+array_append ./src/data/array.c /^array_append(Array *p_array, Array *p_array_append/
array_defined ./src/data/array.c /^array_defined(Array *p_array, int i_index) {$/
array_delete ./src/data/array.c /^array_delete(Array *p_array) {$/
array_delete_iterate ./src/data/array.c /^array_delete_iterate(Array *p_array, void (*func)(/