Use run_dead_script wherever possible and make kill_* operations only do stuff once
[supertux.git] / src / lisp / writer.hpp
index 90baf12..a031ab7 100644 (file)
@@ -1,7 +1,7 @@
 //  $Id$
 //
-//  SuperTux -  A Jump'n Run
-//  Copyright (C) 2004 Matthias Braun <matze@braunis.de
+//  SuperTux
+//  Copyright (C) 2006 Matthias Braun <matze@braunis.de>
 //
 //  This program is free software; you can redistribute it and/or
 //  modify it under the terms of the GNU General Public License
@@ -36,20 +36,25 @@ namespace lisp
 
     void write_comment(const std::string& comment);
 
-    void start_list(const std::string& listname);
+    void start_list(const std::string& listname, bool string = false);
 
-    void write_int(const std::string& name, int value);
-    void write_float(const std::string& name, float value);
-    void write_string(const std::string& name, const std::string& value,
+    void write(const std::string& name, int value);
+    void write(const std::string& name, float value);
+    void write(const std::string& name, const std::string& value,
         bool translatable = false);
-    void write_bool(const std::string& name, bool value);
-    void write_int_vector(const std::string& name, const std::vector<int>& value);
-    void write_int_vector(const std::string& name, const std::vector<unsigned int>& value);
+    void write(const std::string& name, const char* value,
+        bool translatable = false) { write(name, static_cast<const std::string&>(value), translatable); }
+    void write(const std::string& name, bool value);
+    void write(const std::string& name, const std::vector<int>& value);
+    void write(const std::string& name, const std::vector<unsigned int>& value);
+    void write(const std::string& name, const std::vector<float>& value);
+    void write(const std::string& name, const std::vector<std::string>& value);
     // add more write-functions when needed...
 
     void end_list(const std::string& listname);
 
   private:
+    void write_escaped_string(const std::string& str);
     void indent();
 
     std::ostream* out;
@@ -57,8 +62,7 @@ namespace lisp
     int indent_depth;
     std::vector<std::string> lists;
   };
-  
+
 } //namespace lisp
 
 #endif //SUPERTUX_LISPWRITER_H
-