| @@ -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_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_pair(Lisp_Object*, Lisp_Object*); | |||||
| Lisp_Object* create_lisp_object_vector(int, 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*); | |||||
| 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 { | ||||
| @@ -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_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 { | namespace Parser { | ||||
| @@ -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; | ||||
| } | } | ||||