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 <Brandon.Potter@amd.com> Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
#define __BASE_TRIE_HH__
|
||||
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
|
||||
#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);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user