Added log_const() API
authorClifford Wolf <clifford@clifford.at>
Tue, 9 Aug 2016 17:56:10 +0000 (19:56 +0200)
committerClifford Wolf <clifford@clifford.at>
Tue, 9 Aug 2016 17:56:10 +0000 (19:56 +0200)
kernel/log.cc
kernel/log.h

index 12dc453dc82f3b6a9d3a43b44bb9b8b2588510b5..229b82746c856401c60c4a2f4a93ed73d3b1a69a 100644 (file)
@@ -414,6 +414,24 @@ const char *log_signal(const RTLIL::SigSpec &sig, bool autoint)
        }
 }
 
+const char *log_const(const RTLIL::Const &value, bool autoint)
+{
+       if ((value.flags & RTLIL::CONST_FLAG_STRING) == 0)
+               return log_signal(value, autoint);
+
+       std::string str = "\"" + value.decode_string() + "\"";
+
+       if (string_buf.size() < 100) {
+               string_buf.push_back(str);
+               return string_buf.back().c_str();
+       } else {
+               if (++string_buf_index == 100)
+                       string_buf_index = 0;
+               string_buf[string_buf_index] = str;
+               return string_buf[string_buf_index].c_str();
+       }
+}
+
 const char *log_id(RTLIL::IdString str)
 {
        log_id_cache.insert(str);
index f830655c10dcc5e57ae234ed478c8e32863d703d..53480db31e6d5e2abd16913ec75125abf513c04e 100644 (file)
@@ -79,6 +79,7 @@ void log_reset_stack();
 void log_flush();
 
 const char *log_signal(const RTLIL::SigSpec &sig, bool autoint = true);
+const char *log_const(const RTLIL::Const &value, bool autoint = true);
 const char *log_id(RTLIL::IdString id);
 
 template<typename T> static inline const char *log_id(T *obj) {