1 #include "lispwriter.h"
4 LispWriter::LispWriter(std::ostream& newout)
5 : out(newout), indent_depth(0)
9 LispWriter::~LispWriter()
11 if(lists.size() > 0) {
12 std::cerr << "Warning: Not all sections closed in lispwriter!\n";
17 LispWriter::write_comment(const std::string& comment)
19 out << "; " << comment << "\n";
23 LispWriter::start_list(const std::string& listname)
26 out << '(' << listname << '\n';
29 lists.push_back(listname);
33 LispWriter::end_list(const std::string& listname)
35 if(lists.size() == 0) {
36 std::cerr << "Trying to close list '" << listname
37 << "', which is not open.\n";
40 if(lists.back() != listname) {
41 std::cerr << "Warning: trying to close list '" << listname
42 << "' while list '" << lists.back() << "' is open.\n";
53 LispWriter::write_int(const std::string& name, int value)
56 out << '(' << name << ' ' << value << ")\n";
60 LispWriter::write_float(const std::string& name, float value)
63 out << '(' << name << ' ' << value << ")\n";
67 LispWriter::write_string(const std::string& name, const std::string& value)
70 out << '(' << name << " \"" << value << "\")\n";
74 LispWriter::write_bool(const std::string& name, bool value)
77 out << '(' << name << ' ' << (value ? "#t" : "#f") << ")\n";
81 LispWriter::write_int_vector(const std::string& name,
82 const std::vector<int>& value)
86 for(std::vector<int>::const_iterator i = value.begin(); i != value.end(); ++i)
92 LispWriter::write_int_vector(const std::string& name,
93 const std::vector<unsigned int>& value)
97 for(std::vector<unsigned int>::const_iterator i = value.begin(); i != value.end(); ++i)
105 for(int i = 0; i<indent_depth; ++i)