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