Listing 4: The cross-reference table class and inline member function definitions, using strings
// table.h #ifndef TABLE_H_INCLUDED #define TABLE_H_INCLUDED #include <stddef.h> #include <string> #include "deep.h" class cross_reference_table { public: cross_reference_table(); void add(std::string const &w, unsigned n); void put() const; private: struct tree_node; static tree_node *add_tree (tree_node *t, std::string const &w, unsigned n); static void put_tree(tree_node const *t); deep_pointer<tree_node> root; }; inline cross_reference_table::cross_reference_table() { root = NULL; } inline void cross_reference_table::add (std::string const &w, unsigned n) { root = add_tree(root, w, n); } inline void cross_reference_table::put() const { put_tree(root); } #endif