From 0bfdb1b962de41da1c1dc1e20f2a04e6e0c2a29b Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Sat, 6 May 2023 23:07:31 -0400 Subject: [PATCH] rename func to builtin_func to differentiate from to be added user defined funcs --- mumble | Bin 184688 -> 184712 bytes src/mumble.c | 49 ++++++++++++++++++++++++++++++------------------- 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/mumble b/mumble index 0848ea2f53f995c46f3e6fb39db958ce74b38177..013364e5b1f7e6028a051230b23fdcb64096820b 100755 GIT binary patch delta 25498 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 G(*Fl_w5DMI delta 25162 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 diff --git a/src/mumble.c b/src/mumble.c index 0c3759a..d879bc3 100644 --- a/src/mumble.c +++ b/src/mumble.c @@ -51,11 +51,22 @@ enum { typedef struct lispval { int type; - double num; + + // Basic types + double num; char* err; char* sym; - lispbuiltin func; - char* funcname; + + // Functions + // Built-in + lispbuiltin builtin_func; + char* builtin_func_name; + // User-defined + lispenv* env; + lispval* variables; + lispval* manipulation; + + // Expression int count; struct lispval** cell; // list of lisval* } lispval; @@ -102,16 +113,16 @@ lispval* lispval_sym(char* symbol) return v; } -lispval* lispval_func(lispbuiltin func, char* funcname) +lispval* lispval_builtin_func(lispbuiltin func, char* builtin_func_name) { if (VERBOSE) - printfln("Allocating func name:%s, pointer: %p", funcname, func); + printfln("Allocating func name:%s, pointer: %p", builtin_func_name, func); lispval* v = malloc(sizeof(lispval)); v->type = LISPVAL_FUNC; v->count = 0; - v->funcname = malloc(strlen(funcname) + 1); - strcpy(v->funcname, funcname); - v->func = func; + v->builtin_func_name = malloc(strlen(builtin_func_name) + 1); + strcpy(v->builtin_func_name, builtin_func_name); + v->builtin_func = func; if (VERBOSE) printfln("Allocated func"); return v; @@ -182,9 +193,9 @@ void delete_lispval(lispval* v) case LISPVAL_FUNC: if (VERBOSE) printfln("Freeing func"); - if (v->funcname != NULL) - free(v->funcname); - v->funcname = NULL; + if (v->builtin_func_name != NULL) + free(v->builtin_func_name); + v->builtin_func_name = NULL; if (v != NULL) free(v); if (VERBOSE) @@ -389,7 +400,7 @@ void print_lispval_tree(lispval* v, int indent_level) printfln("%sSymbol: %s", indent, v->sym); break; case LISPVAL_FUNC: - printfln("%sFunction, name: %s, pointer: %p", indent, v->funcname, v->func); + printfln("%sFunction, name: %s, pointer: %p", indent, v->builtin_func_name, v->builtin_func); break; case LISPVAL_SEXPR: printfln("%sSExpr, with %d children:", indent, v->count); @@ -429,7 +440,7 @@ void print_lispval_parenthesis(lispval* v) printf("%s ", v->sym); break; case LISPVAL_FUNC: - printf(" ", v->funcname, v->func); + printf(" ", v->builtin_func_name, v->builtin_func); break; case LISPVAL_SEXPR: printf("( "); @@ -487,7 +498,7 @@ lispval* clone_lispval(lispval* old) new = lispval_sym(old->sym); break; case LISPVAL_FUNC: - new = lispval_func(old->func, old->funcname); + new = lispval_builtin_func(old->builtin_func, old->builtin_func_name); break; case LISPVAL_SEXPR: new = lispval_sexpr(); @@ -773,14 +784,14 @@ lispval* builtin_functions(char* func, lispval* v, lispenv* env) } // Add builtins to an env -void lispenv_add_builtin(char* funcname, lispbuiltin func, lispenv* env) +void lispenv_add_builtin(char* builtin_func_name, lispbuiltin func, lispenv* env) { if (VERBOSE) - printfln("Adding func: name: %s, pointer: %p", funcname, func); - lispval* f = lispval_func(func, funcname); + printfln("Adding func: name: %s, pointer: %p", builtin_func_name, func); + lispval* f = lispval_builtin_func(func, builtin_func_name); if (VERBOSE) print_lispval_tree(f, 0); - insert_in_lispenv(funcname, f, env); + insert_in_lispenv(builtin_func_name, f, env); delete_lispval(f); } void lispenv_add_builtins(lispenv* env) @@ -884,7 +895,7 @@ lispval* evaluate_lispval(lispval* l, lispenv* env) if (VERBOSE) printfln("Applying function to operands"); // lispval* answer = lispval_num(42); - lispval* answer = f->func(operands, env); + lispval* answer = f->builtin_func(operands, env); if (VERBOSE) printfln("Applied function to operands");