#include <PathTree.hpp>
Public Methods | |
void | CreateRootNode () |
PathTreeNode * | GetRootNode () |
PathTreeNode * | ExtendCurPath (PathTreeNode *curnode, TLabelID labelid) |
void | ReleaseMemory () |
|
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 } |
|
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 } |
|
Definition at line 117 of file PathTree.hpp. 00117 { return &rootnode; } |
|
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 } |