00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef HEADER_CONSTRUO_LISP_WRITER_HXX
00021 #define HEADER_CONSTRUO_LISP_WRITER_HXX
00022
00023 #include <vector>
00024
00025 #include "lispreader.hxx"
00026 #include "vector2d.hxx"
00027
00029 class LispWriter
00030 {
00031 private:
00032 std::vector<lisp_object_t*> lisp_objs;
00033
00034 void append (lisp_object_t* obj);
00035 lisp_object_t* make_list3 (lisp_object_t*, lisp_object_t*, lisp_object_t*);
00036 lisp_object_t* make_list2 (lisp_object_t*, lisp_object_t*);
00037 public:
00038 LispWriter (const char* name);
00039 void write_vector (const char* name, const Vector2d& pos);
00040 void write_float (const char* name, float f);
00041 void write_int (const char* name, int i);
00042 void write_boolean (const char* name, bool b);
00043 void write_string (const char* name, const char* str);
00044 void write_symbol (const char* name, const char* symname);
00045 void write_lisp_obj(const char* name, lisp_object_t* lst);
00046
00048 lisp_object_t* create_lisp ();
00049 };
00050
00051 #endif
00052
00053