- out<<' ';
- if(i->get_type()==STRING)
- out<<'\"'<<c_escape(i->get_raw(), false)<<'\"';
- else if(i->get_type()==BOOLEAN)
- out<<(i->get<bool>() ? "true" : "false");
- else
- out<<i->get_raw();
+ out.put(' ');
+ if(i->get_signature()==StringType::signature)
+ out.write(format("\"%s\"", c_escape(i->get<StringType::Store>(), false)));
+ else if(i->get_signature()==BoolType::signature)
+ out.write(i->get<BoolType::Store>() ? "true" : "false");
+ else if(i->get_signature()==IntType::signature)
+ out.write(lexical_cast<string>(i->get<IntType::Store>()));
+ else if(i->get_signature()==FloatType::signature)
+ out.write(lexical_cast<string>(i->get<FloatType::Store>(), float_format));
+ else if(i->get_signature()==SymbolType::signature)
+ {
+ string name = i->get<SymbolType::Store>().name;
+ if(isdigit(name[0]))
+ out.write("\\"+name);
+ else
+ out.write(name);
+ }