summaryrefslogtreecommitdiff
path: root/backends/verilog/verilog_backend.cc
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2013-12-04 14:14:05 +0100
committerClifford Wolf <clifford@clifford.at>2013-12-04 14:14:05 +0100
commit93a70959f3f67ffcee8159b18a5f68904e32a074 (patch)
tree1bf68c1a36c3d126fdb396b0ea9c06bcdc2040fb /backends/verilog/verilog_backend.cc
parenta2d053694b6269bab8871a810142943fac6a3a18 (diff)
Replaced RTLIL::Const::str with generic decoder method
Diffstat (limited to 'backends/verilog/verilog_backend.cc')
-rw-r--r--backends/verilog/verilog_backend.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/backends/verilog/verilog_backend.cc b/backends/verilog/verilog_backend.cc
index 4edf0392..e62a7014 100644
--- a/backends/verilog/verilog_backend.cc
+++ b/backends/verilog/verilog_backend.cc
@@ -153,7 +153,7 @@ void dump_const(FILE *f, RTLIL::Const &data, int width = -1, int offset = 0, boo
{
if (width < 0)
width = data.bits.size() - offset;
- if (data.str.empty() || width != (int)data.bits.size()) {
+ if ((data.flags & RTLIL::CONST_FLAG_STRING) == 0 || width != (int)data.bits.size()) {
if (width == 32 && !no_decimal) {
int32_t val = 0;
for (int i = offset+width-1; i >= offset; i--) {
@@ -184,17 +184,20 @@ void dump_const(FILE *f, RTLIL::Const &data, int width = -1, int offset = 0, boo
}
} else {
fprintf(f, "\"");
- for (size_t i = 0; i < data.str.size(); i++) {
- if (data.str[i] == '\n')
+ std::string str = data.decode_string();
+ for (size_t i = 0; i < str.size(); i++) {
+ if (str[i] == '\n')
fprintf(f, "\\n");
- else if (data.str[i] == '\t')
+ else if (str[i] == '\t')
fprintf(f, "\\t");
- else if (data.str[i] < 32)
- fprintf(f, "\\%03o", data.str[i]);
- else if (data.str[i] == '"')
+ else if (str[i] < 32)
+ fprintf(f, "\\%03o", str[i]);
+ else if (str[i] == '"')
fprintf(f, "\\\"");
+ else if (str[i] == '\\')
+ fprintf(f, "\\\\");
else
- fputc(data.str[i], f);
+ fputc(str[i], f);
}
fprintf(f, "\"");
}