working through some issues
[feisty_meow.git] / nucleus / library / nodes / symbol_tree.cpp
index a4e455a50629fa892c37e81dbee03aba381b33f5..947d4530463ea09978255639f9d77bf124db8b4f 100644 (file)
 #include <textual/parser_bits.h>
 #include <textual/string_manipulation.h>
 
-//#define DEBUG_SYMBOL_TREE
+#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;
@@ -36,6 +38,11 @@ class symbol_tree_associations : public symbol_table<symbol_tree *>
 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));
+//    }
+  }
 };
 
 //////////////
@@ -49,8 +56,11 @@ symbol_tree::symbol_tree(const astring &node_name, int estimated_elements)
 
 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(); }
@@ -131,7 +141,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
 #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
@@ -141,7 +151,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
   // 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);
   }
 
@@ -154,7 +164,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
   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.
@@ -168,7 +178,7 @@ symbol_tree *symbol_tree::find(const astring &to_find, find_methods how,
           return answer;
       }
     }
-    return NIL;
+    return NULL_POINTER;
   }
   return *found;
 }