Changeset 139


Ignore:
Timestamp:
May 7, 2008, 10:00:53 AM (11 years ago)
Author:
lindanl
Message:

Storing name length in Name Table.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/engine.c

    r138 r139  
    637637       
    638638        int name_start = AbsPos();
    639         ScanTo(NameFollow);
    640         int lgth = AbsPos()-name_start;
     639//      ScanTo(NameFollow);
     640//      int lgth = AbsPos()-name_start;
     641
     642        char * start_elem_name = model_info->symbol_table->Get_UTF8_name(nameID);
     643        int lgth = model_info->symbol_table->Get_UTF8_lgth(nameID);
     644        Advance(lgth);
    641645        char * end_elem_name = (char *)GetCodeUnitPtr(name_start);
    642         char * start_elem_name = model_info->symbol_table->Get_UTF8_name(nameID);
    643646       
    644647        for(int i=0; i<lgth; i++) {
  • trunk/src/symtab.c

    r135 r139  
    202202                UTF8NameMap[s]=++(globalNameCount);
    203203                nameID = globalNameCount;
    204                 UTF8NameTable.push_back(s);
     204                Name_Data name_data;
     205                name_data.name_string = s;
     206                name_data.lgth = lgth;
     207                UTF8NameTable.push_back(name_data);
     208//              UTF8NameTable.push_back(s);
    205209        }
    206210        return nameID;
     
    217221                UTF8NameMap[s]=++(globalNameCount);
    218222                nameID = globalNameCount;
    219                 UTF8NameTable.push_back(s);
     223                Name_Data name_data;
     224                name_data.name_string = s;
     225                name_data.lgth = lgth;
     226                UTF8NameTable.push_back(name_data);
     227//              UTF8NameTable.push_back(s);
    220228        }
    221229        return nameID;
    222230}
    223231
     232//char * Symbol_Table::Get_UTF8_name(int nameID) {
     233//      return  UTF8NameTable[nameID];
     234//}
     235
    224236char * Symbol_Table::Get_UTF8_name(int nameID) {
    225         return  UTF8NameTable[nameID];
     237        return  UTF8NameTable[nameID].name_string;
     238}
     239
     240int Symbol_Table::Get_UTF8_lgth(int nameID) {
     241        return  UTF8NameTable[nameID].lgth;
    226242}
    227243
    228244Symbol_Table::Symbol_Table(){
    229245        globalNameCount = 0;
    230         UTF8NameTable.push_back(NULL);
     246        Name_Data name_data;
     247        name_data.name_string = NULL;
     248        name_data.lgth = 0;
     249        UTF8NameTable.push_back(name_data);
     250//      UTF8NameTable.push_back(NULL);
    231251        for (int i = 0; i < 5; i++) {
    232252                UTF8NameMap[predefined[i]] = ++(globalNameCount);
    233                 UTF8NameTable.push_back(predefined[i]);
    234         }
    235 }
    236 
    237 
     253                Name_Data name_data;
     254                name_data.name_string = predefined[i];
     255                name_data.lgth = strlen(predefined[i]);
     256                UTF8NameTable.push_back(name_data);
     257//              UTF8NameTable.push_back(predefined[i]);
     258        }
     259}
     260
     261
  • trunk/src/symtab.h

    r135 r139  
    1818  }
    1919};
     20
     21struct Name_Data
     22{
     23        char * name_string;
     24        int        lgth;
     25};
    2026       
    2127char * predefined[] = {"lt", "gt", "amp", "quot", "apos"};
     
    2733        int UTF8_Lookup_or_Insert_XML11_Name(char * name, int lgth);
    2834        char * Get_UTF8_name(int nameID);
     35        int Get_UTF8_lgth(int nameID);
    2936private:
    3037        hash_map<const char *, int, hash<const char *>, eqstr > UTF8NameMap;
    3138        int globalNameCount;
    32         vector<char *> UTF8NameTable;
     39//      vector<char *> UTF8NameTable;
     40        vector<Name_Data> UTF8NameTable;
    3341};
    3442
Note: See TracChangeset for help on using the changeset viewer.