From: Gabe Black Date: Sun, 3 Dec 2017 09:51:53 +0000 (-0800) Subject: base: Rework the trie dump function to accept a different ostream. X-Git-Tag: v19.0.0.0~2484 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=0778fbbd4b716d4f9ca71355bf686e76b4165c23;p=gem5.git base: Rework the trie dump function to accept a different ostream. It might often be useful to write output to cout when dumping a trie, but sometimes it might be useful to dump ot to something else like a string stream instead. Change-Id: Iaa4ae772c902b7dbc753f320d1a7eb5fcd4a3db3 Reviewed-on: https://gem5-review.googlesource.com/6266 Reviewed-by: Brandon Potter Maintainer: Gabe Black --- diff --git a/src/base/trie.hh b/src/base/trie.hh index e256377c1..ac6045601 100644 --- a/src/base/trie.hh +++ b/src/base/trie.hh @@ -32,6 +32,7 @@ #define __BASE_TRIE_HH__ #include +#include #include "base/cprintf.hh" #include "base/logging.hh" @@ -82,20 +83,21 @@ class Trie } void - dump(int level) + dump(std::ostream &os, int level) { for (int i = 1; i < level; i++) { - cprintf("|"); + ccprintf(os, "|"); } if (level == 0) - cprintf("Root "); + ccprintf(os, "Root "); else - cprintf("+ "); - cprintf("(%p, %p, %#X, %#X, %p)\n", parent, this, key, mask, value); + ccprintf(os, "+ "); + ccprintf(os, "(%p, %p, %#X, %#X, %p)\n", + parent, this, key, mask, value); if (kids[0]) - kids[0]->dump(level + 1); + kids[0]->dump(os, level + 1); if (kids[1]) - kids[1]->dump(level + 1); + kids[1]->dump(os, level + 1); } }; @@ -351,13 +353,13 @@ class Trie * @param title An identifying title to put in the dump header. */ void - dump(const char *title) + dump(const char *title, std::ostream &os=std::cout) { - cprintf("**************************************************\n"); - cprintf("*** Start of Trie: %s\n", title); - cprintf("*** (parent, me, key, mask, value pointer)\n"); - cprintf("**************************************************\n"); - head.dump(0); + ccprintf(os, "**************************************************\n"); + ccprintf(os, "*** Start of Trie: %s\n", title); + ccprintf(os, "*** (parent, me, key, mask, value pointer)\n"); + ccprintf(os, "**************************************************\n"); + head.dump(os, 0); } };