Json backend improvements

This commit is contained in:
Clifford Wolf 2015-03-03 09:28:44 +01:00
parent 795a6e1d04
commit 4fc63f27a1
1 changed files with 12 additions and 4 deletions

View File

@ -43,8 +43,13 @@ struct JsonWriter
string get_string(string str)
{
// FIXME: proper string escaping
return stringf("\"%s\"", str.c_str());
string newstr = "\"";
for (char c : str) {
if (c == '\\')
newstr += c;
newstr += c;
}
return newstr + "\"";
}
string get_name(IdString name)
@ -157,7 +162,9 @@ struct JsonWriter
void write_design(Design *design_)
{
design = design_;
f << stringf("{\n \"modules\": {\n");
f << stringf("{\n");
f << stringf(" \"creator\": %s,\n", get_string(yosys_version_str).c_str());
f << stringf(" \"modules\": {\n");
vector<Module*> modules = use_selection ? design->selected_modules() : design->modules();
bool first_module = true;
for (auto mod : modules) {
@ -166,7 +173,8 @@ struct JsonWriter
write_module(mod);
first_module = false;
}
f << stringf("\n }\n}\n");
f << stringf("\n }\n");
f << stringf("}\n");
}
};