//#define DEBUG_SYMBOL_TREE
// uncomment for totally noisy version.
+#include <loggers/program_wide_logger.h>
#undef LOG
#define LOG(s) CLASS_EMERGENCY_LOG(program_wide_logger::get(), s)
+using namespace loggers;
using namespace basis;
using namespace structures;
public:
symbol_tree_associations(int estimated_elements)
: symbol_table<symbol_tree *>(estimated_elements) {}
+ virtual ~symbol_tree_associations() {
+// for (int i = 0; i < symbols(); i++) {
+// WHACK(use(i));
+// }
+ }
};
//////////////
symbol_tree::~symbol_tree()
{
- WHACK(_name);
+ FUNCDEF("destructor");
+LOG("prior to whacks");
WHACK(_associations);
+ WHACK(_name);
+LOG("after whacks");
}
int symbol_tree::children() const { return _associations->symbols(); }
#ifdef DEBUG_SYMBOL_TREE
FUNCDEF("find");
#endif
- if (comp == NIL) comp = astring_comparator;
+ if (comp == NULL_POINTER) comp = astring_comparator;
#ifdef DEBUG_SYMBOL_TREE
LOG(astring("finding node called ") + to_find);
#endif
// perform the upward recursion first, since it's pretty simple.
if (how == recurse_upward) {
symbol_tree *our_parent = dynamic_cast<symbol_tree *>(parent());
- if (!our_parent) return NIL; // done recursing.
+ if (!our_parent) return NULL_POINTER; // done recursing.
return our_parent->find(to_find, how, comp);
}
if (!found) {
if (how == recurse_downward) {
// see if we can't find that name in a sub-node.
- symbol_tree *answer = NIL;
+ symbol_tree *answer = NULL_POINTER;
for (int i = 0; i < branches(); i++) {
// we will try each branch in turn and see if it has a child named
// appropriately.
return answer;
}
}
- return NIL;
+ return NULL_POINTER;
}
return *found;
}