// This module implements a binary tree to keep track of messages that // have already been seen so that they don't need to be read again. extern "C" { #include #include } #include "string.h" #include "common.h" typedef class treeNode *treeP; class treeNode { public: treeNode(char *); treeNode(FILE *, int, int); int inTree(char *); void saveNode(FILE *); void printNode(); void printDepth(int d); ~treeNode() { free(value); free(left); free(right); } private: char *value; treeP left, right; }; typedef class binaryTree *bTreeP; class binaryTree { public: binaryTree() { groupName = NULL; root = NULL; addsSinceLastSave = 0; } void setGroupName(char *name) { groupName = strdup(name); } void saveTree(); void loadTree(); void printTree(); int inTree(char *id); void printDepth(); ~binaryTree() { free(groupName); free(root); } private: char *groupName; treeP root; int addsSinceLastSave; void checkSave(); };