Added log_dump() support for dict<> and pool<> containers
authorClifford Wolf <clifford@clifford.at>
Thu, 31 Mar 2016 07:57:44 +0000 (09:57 +0200)
committerClifford Wolf <clifford@clifford.at>
Thu, 31 Mar 2016 07:57:44 +0000 (09:57 +0200)
kernel/log.h

index 28baf9886ab3569de2ed844dcc269ae999b90665..c0be23b084d91b02627d0e33efcb3735755acb21 100644 (file)
@@ -230,6 +230,32 @@ static inline void log_dump_args_worker(const char *p YS_ATTRIBUTE(unused)) { lo
 void log_dump_val_worker(RTLIL::IdString v);
 void log_dump_val_worker(RTLIL::SigSpec v);
 
+template<typename K, typename T, typename OPS>
+static inline void log_dump_val_worker(dict<K, T, OPS> &v) {
+       log("{");
+       bool first = true;
+       for (auto &it : v) {
+               log(first ? " " : ", ");
+               log_dump_val_worker(it.first);
+               log(": ");
+               log_dump_val_worker(it.second);
+               first = false;
+       }
+       log(" }");
+}
+
+template<typename K, typename OPS>
+static inline void log_dump_val_worker(pool<K, OPS> &v) {
+       log("{");
+       bool first = true;
+       for (auto &it : v) {
+               log(first ? " " : ", ");
+               log_dump_val_worker(it);
+               first = false;
+       }
+       log(" }");
+}
+
 template<typename T>
 static inline void log_dump_val_worker(T *ptr) { log("%p", ptr); }