easier way to create vectors
This commit is contained in:
+10
-6
@@ -46,12 +46,16 @@ namespace Memory {
|
||||
Lisp_Object* get_or_create_lisp_object_keyword(String* identifier);
|
||||
Lisp_Object* get_or_create_lisp_object_keyword(const char*);
|
||||
Lisp_Object* create_lisp_object_string(const char*);
|
||||
Lisp_Object* create_list(Lisp_Object*);
|
||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*);
|
||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
Lisp_Object* create_lisp_object_vector(Lisp_Object*);
|
||||
Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*);
|
||||
Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*, Lisp_Object*);
|
||||
Lisp_Object* create_lisp_object_vector(int, Lisp_Object*);
|
||||
inline Lisp_Object* create_list(Lisp_Object*);
|
||||
inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*);
|
||||
inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
inline Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
||||
}
|
||||
|
||||
namespace Parser {
|
||||
|
||||
+43
-2
@@ -310,6 +310,49 @@ namespace Memory {
|
||||
return node;
|
||||
}
|
||||
|
||||
proc create_lisp_object_vector(Lisp_Object* e1) -> Lisp_Object* {
|
||||
Lisp_Object* node;
|
||||
try node = create_lisp_object();
|
||||
set_type(node, Lisp_Object_Type::Vector);
|
||||
|
||||
node->value.vector.length = 1;
|
||||
try node->value.vector.data = allocate_vector(1);
|
||||
|
||||
node->value.vector.data[0] = *e1;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
proc create_lisp_object_vector(Lisp_Object* e1, Lisp_Object* e2) -> Lisp_Object* {
|
||||
Lisp_Object* node;
|
||||
try node = create_lisp_object();
|
||||
set_type(node, Lisp_Object_Type::Vector);
|
||||
|
||||
node->value.vector.length = 2;
|
||||
try node->value.vector.data = allocate_vector(2);
|
||||
|
||||
node->value.vector.data[0] = *e1;
|
||||
node->value.vector.data[1] = *e2;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
proc create_lisp_object_vector(Lisp_Object* e1, Lisp_Object* e2, Lisp_Object* e3) -> Lisp_Object* {
|
||||
Lisp_Object* node;
|
||||
try node = create_lisp_object();
|
||||
set_type(node, Lisp_Object_Type::Vector);
|
||||
|
||||
node->value.vector.length = 3;
|
||||
try node->value.vector.data = allocate_vector(3);
|
||||
|
||||
node->value.vector.data[0] = *e1;
|
||||
node->value.vector.data[1] = *e2;
|
||||
node->value.vector.data[2] = *e3;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
|
||||
proc create_new_lisp_object_symbol(String* identifier) -> Lisp_Object* {
|
||||
Lisp_Object* node;
|
||||
try node = create_lisp_object();
|
||||
@@ -425,9 +468,7 @@ namespace Memory {
|
||||
};
|
||||
|
||||
try load_built_ins_into_environment();
|
||||
|
||||
try built_in_load(Memory::create_string("pre.slime"));
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user