Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

PathTree Class Reference

#include <PathTree.hpp>

List of all members.

Public Methods

void CreateRootNode ()
PathTreeNodeGetRootNode ()
PathTreeNodeExtendCurPath (PathTreeNode *curnode, TLabelID labelid)
void ReleaseMemory ()


Member Function Documentation

void PathTree::CreateRootNode  
 

Definition at line 195 of file PathTree.cpp.

00197 {
00198    unsigned char isaccepting;
00199 
00200    rootnode.parent=NULL;
00201    rootnode.labelid=LABEL_UNDEFINED;
00202 #ifdef PROFILE
00203    nodecount=0;
00204    lookupcount=0;
00205    hashitercount=0;
00206    fsmstatecount=0;
00207 #endif
00208 
00209 //   rootnode.fsmstatelist=pathexprman.CreateInitStateList(&isaccepting);
00210    rootnode.ComputeInitStateList(&isaccepting);
00211 
00212    rootnode.isaccepting=isaccepting;
00213 }

PathTreeNode * PathTree::ExtendCurPath PathTreeNode   curnode,
TLabelID    labelid
 

Definition at line 218 of file PathTree.cpp.

00224 {
00225    unsigned char  isaccepting;
00226    PathTreeNode   *node;
00227 
00228 #ifndef USE_NO_DATAGUIDE
00229    unsigned long  hashidx=ComputePathTreeHashIdx(curnode,labelid);
00230 
00231 #ifdef PROFILE
00232    lookupcount++;
00233 #endif
00234 
00235    // First, we check whether we already have an edge with the
00236    // same label.
00237    node=pathtreehashtable[hashidx];
00238 
00239    while(node!=NULL)
00240    {
00241 #ifdef PROFILE
00242       hashitercount++;
00243 #endif
00244 
00245       if((node->parent==curnode)&&
00246          (node->labelid==labelid))
00247          break;
00248       node=node->nextsamehash;
00249    }
00250 
00251    if(node!=NULL)
00252       // if an edge with the label already exists ? ==> We return it
00253       return node;
00254 
00255 #ifdef PROFILE
00256    nodecount++;
00257 #endif
00258 
00259 #endif // USE_NO_DATAGUIDE
00260 
00261    // If we don't have an edge with the label, we create a new dataguide node
00262    node=new PathTreeNode();
00263    node->parent=curnode;
00264    node->labelid=labelid;
00265 
00266    // ... and compute the set of FSM states for that node
00267    node->ComputeNextStateList(labelid,&isaccepting);
00268 
00269    node->isaccepting=isaccepting;
00270 
00271 #ifndef USE_NO_DATAGUIDE
00272    node->nextsamehash=pathtreehashtable[hashidx];
00273    pathtreehashtable[hashidx]=node;
00274 #endif
00275 
00276    return node;
00277 }

PathTreeNode* PathTree::GetRootNode   [inline]
 

Definition at line 117 of file PathTree.hpp.

00117 {  return &rootnode; }

void PathTree::ReleaseMemory  
 

Definition at line 279 of file PathTree.cpp.

00280 {
00281 //   pathtreemem->ReleaseMemory();
00282 //   pathtreemem.Initialize(5);
00283 //   Init();
00284 
00285    for(int i=0;i<PATHTREE_HASHSIZE;i++)
00286       pathtreehashtable[i]=NULL;
00287 }


The documentation for this class was generated from the following files:
Generated on Sat Oct 13 16:08:55 2001 for XMILL by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001