Ignore:
Timestamp:
May 29, 2013, 2:58:31 PM (6 years ago)
Author:
shiyangy
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/xmlschema/validation_template_onevec.cpp

    r3225 r3229  
    236236        }
    237237        return 0;
     238}
     239
     240static inline int compute_hash_value2(char *str,int lgth){
     241        int hash = 5381;
     242    int c;
     243//      while (c = *str++){
     244        for (int i = 0;i<lgth;i++){
     245                c=*str++;
     246        hash = ((hash << 5) + hash) + c; /* hash * 33 + c */
     247    }
     248
     249    return hash;
    238250}
    239251
     
    306318//    cout << end << "  " << start << endl;
    307319    int lgth = end - start;
    308     int hashvalue = compute_hash_value(lgth, start - block_base);
     320//    int hashvalue = compute_hash_value(lgth,start-block_base);
     321        int hashvalue = compute_hash_value2(name,lgth);
    309322    char gid = 0;
    310323
     
    911924        ///////////////////////////////////////////////////
    912925        FILE *element_ID_in = fopen("../test/element_ID","r");
    913         char symble[50];
     926        char symbol[50];
    914927        int index;
    915928        if(element_ID_in == NULL){
     
    918931        }
    919932        hashvalues[1] = hash_data.Hash_value;
    920         while(fscanf(element_ID_in,"%s %d\n",&symble[0],&index)==2){
    921                 int lgth = strlen(symble);
    922                 int hashvalue = compute_hash_value(lgth,1);
    923                 cout << symble <<" "<< lgth<<" "<<hashvalue << endl;
     933        while(fscanf(element_ID_in,"%s %d\n",&symbol[0],&index)==2){
     934                int lgth = strlen(symbol);
     935                int hashvalue = compute_hash_value2(symbol,lgth);
     936                cout << symbol <<" "<< lgth<<" "<<hashvalue << endl;
    924937                int gid = 0;
    925938                switch (lgth)
    926939        {
    927940                        case 1:
    928                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<1>(symble, hashvalue);
     941                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<1>(symbol, hashvalue);
    929942                        break;
    930943                        case 2:
    931                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<2>(symble, hashvalue);
     944                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<2>(symbol, hashvalue);
    932945                        break;
    933946                        case 3:
    934                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<3>(symble, hashvalue);
     947                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<3>(symbol, hashvalue);
    935948                        break;
    936949                        case 4:
    937                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<4>(symble, hashvalue);
     950                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<4>(symbol, hashvalue);
    938951                        break;
    939952                        case 5:
    940                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<5>(symble, hashvalue);
     953                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<5>(symbol, hashvalue);
    941954                        break;
    942955                        case 6:
    943                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<6>(symble, hashvalue);
     956                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<6>(symbol, hashvalue);
    944957                        break;
    945958                        case 7:
    946                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<7>(symble, hashvalue);
     959                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<7>(symbol, hashvalue);
    947960                        break;
    948961                        case 8:
    949                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<8>(symble, hashvalue);
     962                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<8>(symbol, hashvalue);
    950963                        break;
    951964                        case 9:
    952                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<9>(symble, hashvalue);
     965                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<9>(symbol, hashvalue);
    953966                        break;
    954967                        case 10:
    955                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<10>(symble, hashvalue);
     968                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<10>(symbol, hashvalue);
    956969                        break;
    957970                        case 11:
    958                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<11>(symble, hashvalue);
     971                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<11>(symbol, hashvalue);
    959972                        break;
    960973                        case 12:
    961                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<12>(symble, hashvalue);
     974                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<12>(symbol, hashvalue);
    962975                        break;
    963976                        case 13:
    964                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<13>(symble, hashvalue);
     977                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<13>(symbol, hashvalue);
    965978                        break;
    966979                        case 14:
    967                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<14>(symble, hashvalue);
     980                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<14>(symbol, hashvalue);
    968981                        break;
    969982                        case 15:
    970                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<15>(symble, hashvalue);
     983                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<15>(symbol, hashvalue);
    971984                        break;
    972985                        case 16:
    973                         gid = pbgs_symbol_table.Lookup_or_Insert_Name<16>(symble, hashvalue);
     986                        gid = pbgs_symbol_table.Lookup_or_Insert_Name<16>(symbol, hashvalue);
    974987                        break;
    975988                        default:
    976                         gid = pbgs_symbol_table.Lookup_or_Insert_Name(symble, hashvalue, lgth);
     989                        gid = pbgs_symbol_table.Lookup_or_Insert_Name(symbol, hashvalue, lgth);
    977990                        break;         
    978991                }
    979                 cout << "gid=" << gid << endl;
     992                fprintf (gid_writein,"%s |  lgth: %i | hashvalue: %i | gid: %i | symbol: %s\n", __FUNCTION__,  lgth, hashvalue, gid, symbol);
    980993        }       
    981994        fclose(element_ID_in);
    982         return;
     995//      return;
    983996
    984997        int buffer_base = 0;
Note: See TracChangeset for help on using the changeset viewer.