better arguments struct, arraylists as values, fixed docgen

This commit is contained in:
Felix Brendel
2019-09-10 09:46:29 +02:00
parent aceb801ada
commit 5a117d94ee
21 changed files with 1242 additions and 424 deletions
+10 -16
View File
@@ -26,26 +26,20 @@ proc Lisp_Object_Type_to_string(Lisp_Object_Type type) -> const char* {
return "unknown";
}
proc create_positional_argument_list(int initial_capacity) -> Positional_Arguments* {
Positional_Arguments* ret = new(Positional_Arguments);
ret->symbols = (Lisp_Object**)malloc(initial_capacity * sizeof(Lisp_Object*));
ret->next_index = 0;
ret->length = initial_capacity;
proc create_positional_argument_list(int initial_capacity) -> Positional_Arguments {
Positional_Arguments ret;
ret.symbols = create_Lisp_Object_array_list(initial_capacity);
return ret;
}
proc append_to_positional_argument_list(Positional_Arguments* args, Lisp_Object* sym) -> void {
if (args->next_index == args->length) {
args->length *= 2;
args->symbols = (Lisp_Object**)realloc(args->symbols, args->length * sizeof(Lisp_Object*));
}
args->symbols[args->next_index++] = sym;
append_to_array_list(&args->symbols, sym);
}
proc create_keyword_argument_list(int initial_capacity) -> Keyword_Arguments* {
Keyword_Arguments* ret = new(Keyword_Arguments);
ret->keywords = create_Lisp_Object_array_list(initial_capacity);
ret->values = create_Lisp_Object_array_list(initial_capacity);
proc create_keyword_argument_list(int initial_capacity) -> Keyword_Arguments {
Keyword_Arguments ret;
ret.keywords = create_Lisp_Object_array_list(initial_capacity);
ret.values = create_Lisp_Object_array_list(initial_capacity);
return ret;
}
@@ -53,6 +47,6 @@ proc append_to_keyword_argument_list(Keyword_Arguments* args,
Lisp_Object* keyword,
Lisp_Object* default_value) -> void
{
append_to_array_list(args->keywords, keyword);
append_to_array_list(args->values, default_value);
append_to_array_list(&args->keywords, keyword);
append_to_array_list(&args->values, default_value);
}