| @@ -204,12 +204,17 @@ namespace Slime { | |||
| 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_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 { | |||
| @@ -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 { | |||
| @@ -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; | |||
| } | |||