easier way to create vectors
This commit is contained in:
+11
-6
@@ -204,12 +204,17 @@ namespace Slime {
|
|||||||
Lisp_Object* get_or_create_lisp_object_keyword(String* identifier);
|
Lisp_Object* get_or_create_lisp_object_keyword(String* identifier);
|
||||||
Lisp_Object* get_or_create_lisp_object_keyword(const char*);
|
Lisp_Object* get_or_create_lisp_object_keyword(const char*);
|
||||||
Lisp_Object* create_lisp_object_string(const char*);
|
Lisp_Object* create_lisp_object_string(const char*);
|
||||||
Lisp_Object* create_list(Lisp_Object*);
|
Lisp_Object* create_lisp_object_pair(Lisp_Object*, Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(int, Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*, Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,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 {
|
namespace Parser {
|
||||||
|
|||||||
+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(String* identifier);
|
||||||
Lisp_Object* get_or_create_lisp_object_keyword(const char*);
|
Lisp_Object* get_or_create_lisp_object_keyword(const char*);
|
||||||
Lisp_Object* create_lisp_object_string(const char*);
|
Lisp_Object* create_lisp_object_string(const char*);
|
||||||
Lisp_Object* create_list(Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(Lisp_Object*, Lisp_Object*, Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
Lisp_Object* create_lisp_object_vector(int, Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*);
|
inline Lisp_Object* create_list(Lisp_Object*);
|
||||||
Lisp_Object* create_list(Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,Lisp_Object*,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 {
|
namespace Parser {
|
||||||
|
|||||||
+43
-2
@@ -310,6 +310,49 @@ namespace Memory {
|
|||||||
return node;
|
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* {
|
proc create_new_lisp_object_symbol(String* identifier) -> Lisp_Object* {
|
||||||
Lisp_Object* node;
|
Lisp_Object* node;
|
||||||
try node = create_lisp_object();
|
try node = create_lisp_object();
|
||||||
@@ -425,9 +468,7 @@ namespace Memory {
|
|||||||
};
|
};
|
||||||
|
|
||||||
try load_built_ins_into_environment();
|
try load_built_ins_into_environment();
|
||||||
|
|
||||||
try built_in_load(Memory::create_string("pre.slime"));
|
try built_in_load(Memory::create_string("pre.slime"));
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user