From: Clifford Wolf Date: Fri, 1 Mar 2013 07:57:58 +0000 (+0100) Subject: Added id2cstr API X-Git-Tag: yosys-0.2.0~769 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1bc0f04789a8aeede49db5cdda298bc828a19f7f;p=yosys.git Added id2cstr API --- diff --git a/kernel/rtlil.h b/kernel/rtlil.h index 15fec2690..b5338a33c 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -110,6 +110,13 @@ namespace RTLIL return str; } + static const char *id2cstr(std::string str) __attribute__((unused)); + static const char *id2cstr(std::string str) { + if (str.size() > 1 && str[0] == '\\' && str[1] != '$') + return str.c_str() + 1; + return str.c_str(); + } + static IdString new_id(std::string file, int line, std::string func) __attribute__((unused)); static IdString new_id(std::string file, int line, std::string func) { std::string str = "$auto$"; diff --git a/kernel/select.cc b/kernel/select.cc index b55ee969c..f43cc8495 100644 --- a/kernel/select.cc +++ b/kernel/select.cc @@ -542,7 +542,7 @@ struct SelectPass : public Pass { if (arg == "-module" && argidx+1 < args.size()) { RTLIL::IdString mod_name = RTLIL::escape_id(args[++argidx]); if (design->modules.count(mod_name) == 0) - log_cmd_error("No such module: %s\n", mod_name.c_str()); + log_cmd_error("No such module: %s\n", id2cstr(mod_name)); design->selected_active_module = mod_name; got_module = true; continue; @@ -597,20 +597,20 @@ struct SelectPass : public Pass { for (auto mod_it : design->modules) { if (sel->selected_whole_module(mod_it.first)) - log("%s\n", mod_it.first.c_str()); + log("%s\n", id2cstr(mod_it.first)); if (sel->selected_module(mod_it.first)) { for (auto &it : mod_it.second->wires) if (sel->selected_member(mod_it.first, it.first)) - log("%s/%s\n", mod_it.first.c_str(), it.first.c_str()); + log("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); for (auto &it : mod_it.second->memories) if (sel->selected_member(mod_it.first, it.first)) - log("%s/%s\n", mod_it.first.c_str(), it.first.c_str()); + log("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); for (auto &it : mod_it.second->cells) if (sel->selected_member(mod_it.first, it.first)) - log("%s/%s\n", mod_it.first.c_str(), it.first.c_str()); + log("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); for (auto &it : mod_it.second->processes) if (sel->selected_member(mod_it.first, it.first)) - log("%s/%s\n", mod_it.first.c_str(), it.first.c_str()); + log("%s/%s\n", id2cstr(mod_it.first), id2cstr(it.first)); } } return; @@ -648,10 +648,10 @@ struct SelectPass : public Pass { if (sel.full_selection) log("*\n"); for (auto &it : sel.selected_modules) - log("%s\n", it.c_str()); + log("%s\n", id2cstr(it)); for (auto &it : sel.selected_members) for (auto &it2 : it.second) - log("%s/%s\n", it.first.c_str(), it2.c_str()); + log("%s/%s\n", id2cstr(it.first), id2cstr(it2)); return; } diff --git a/kernel/show.cc b/kernel/show.cc index eef4c44f8..b587a8568 100644 --- a/kernel/show.cc +++ b/kernel/show.cc @@ -289,9 +289,9 @@ struct ShowWorker if (!design->selected_module(module->name)) continue; if (design->selected_whole_module(module->name)) - log("Dumping module %s to page %d.\n", module->name.c_str(), ++page_counter); + log("Dumping module %s to page %d.\n", id2cstr(module->name), ++page_counter); else - log("Dumping selected parts of module %s to page %d.\n", module->name.c_str(), ++page_counter); + log("Dumping selected parts of module %s to page %d.\n", id2cstr(module->name), ++page_counter); handle_module(); } }