#include <LabelDict.hpp>
Public Methods | |
void | Init () |
void | Reset () |
void | PrintLabel (TLabelID labelid) |
void | Print () |
|
Definition at line 153 of file LabelDict.hpp. 00154 { 00155 #ifdef PROFILE 00156 lookupcount= 00157 hashitercount=0; 00158 #endif 00159 00160 labelnum=0; 00161 00162 #ifdef XMILL 00163 // No labels 00164 labels=NULL; 00165 labelref=&labels; 00166 00167 // no saved labels until now 00168 savedlabelnum=0; 00169 savedlabelref=&labels; 00170 00171 // let's get some memory for the hash table 00172 // mainmem.WordAlign(); 00173 // hashtable=(CompressLabelDictItem **)mainmem.GetByteBlock(sizeof(CompressLabelDictItem *)*HASHTABLE_SIZE); 00174 hashtable=(CompressLabelDictItem **)new char[sizeof(CompressLabelDictItem *)*HASHTABLE_SIZE]; 00175 if(hashtable==NULL) 00176 ExitNoMem(); 00177 00178 for(int i=0;i<HASHTABLE_SIZE;i++) 00179 hashtable[i]=NULL; 00180 #endif 00181 #ifdef XDEMILL 00182 // No labels until now 00183 labeldictlist=NULL; 00184 lastlabeldict=NULL; 00185 #endif 00186 } |
|
Definition at line 527 of file LabelDict.hpp. 00529 { 00530 for(unsigned long i=0;i<labelnum;i++) 00531 { 00532 printf("%lu : ",i); 00533 PrintLabel((TLabelID)i); 00534 printf("\n"); 00535 } 00536 } |
|
Definition at line 502 of file LabelDict.hpp. 00504 { 00505 char *ptr; 00506 unsigned long len; 00507 unsigned char isattrib=ISATTRIB(labelid); 00508 00509 labelid=(labelid&(ATTRIBLABEL_STARTIDX-1)); 00510 00511 #ifdef XMILL 00512 len=LookupCompressLabel(labelid,&ptr); 00513 #endif 00514 #ifdef XDEMILL 00515 len=LookupLabel(labelid,&ptr,&isattrib); 00516 #endif 00517 00518 if(isattrib) // Attribute names start with '@' 00519 { 00520 printf("@"); 00521 fwrite(ptr,len,1,stdout); 00522 } 00523 else 00524 fwrite(ptr,len,1,stdout); 00525 } |
|
Definition at line 188 of file LabelDict.hpp. 00189 { 00190 #ifdef XMILL 00191 int i; 00192 TLabelID labelid; 00193 CompressLabelDictItem **hashtableref; 00194 00195 // First, let's scan over the hash table to remove all 00196 // entris of not predefined labels 00197 for(i=0;i<HASHTABLE_SIZE;i++) 00198 { 00199 hashtableref=hashtable+i; 00200 while(*hashtableref!=NULL) 00201 { 00202 if((*hashtableref)->labelid>=predefinedlabelnum) 00203 // Not a predefined label ID? 00204 // ==> Delete 00205 *hashtableref=(*hashtableref)->nextsamehash; 00206 else 00207 // Otherwise, we go to the next label 00208 hashtableref=&((*hashtableref)->nextsamehash); 00209 } 00210 } 00211 00212 // Now we need to cut the global list of labels. 00213 // We keep the first 'predefinedlabelnum' predefined labels. 00214 CompressLabelDictItem **curlabelref=&labels; 00215 00216 for(labelid=0;labelid<predefinedlabelnum;labelid++) 00217 curlabelref=&((*curlabelref)->next); 00218 00219 *curlabelref=NULL; 00220 00221 labelref=curlabelref; 00222 labelnum=predefinedlabelnum; 00223 00224 // no saved labels until now 00225 savedlabelnum=0; 00226 savedlabelref=&labels; 00227 #endif 00228 #ifdef XDEMILL 00229 // No labels until now 00230 labelnum=0; 00231 labeldictlist=NULL; 00232 lastlabeldict=NULL; 00233 #endif 00234 } |