/** ****************************************************************************** @file /common/xml/myhash.cpp @brief Hasovaci fce @author Vta @version 1.0 ******************************************************************************/ #include "myhash.h" // zrychleni #define KMemAlloc malloc #define KMemFree free int myhashstr(char * data,int fixed_order) // Hashovaci fce, ktera koduje jmeno tagu, v pripade, ze fixed_order, nehashuje se do tabulky, // ale vznika primo jeden seznam (aby bylo mozne ulozit presne v tomto poradi) { if (fixed_order==1) return 0; else { int i; if ((data[0]>=L'0') && (data[0]<=L'9')) { i=(data[0]-L'0')/2; } else { if (data[0]<95) i=data[0]-65; else i=data[0]-97; } if ((i<0) || (i>25)) i=25; i=i/(HASH_TABLE_SIZE-1); // pozor! tedka to funguje, bude jen 25hodnot // i=(i+id)%6; return i; } } int myhashwcs(wchar_t * data,int fixed_order) // Hashovaci fce, ktera koduje jmeno tagu, v pripade, ze fixed_order, nehashuje se do tabulky, // ale vznika primo jeden seznam (aby bylo mozne ulozit presne v tomto poradi) { if (fixed_order==1) return 0; else { int i; if ((data[0]>=L'0') && (data[0]<=L'9')) { i=(data[0]-L'0')/2; } else { if (data[0]<95) i=data[0]-65; else i=data[0]-97; } if ((i<0) || (i>25)) i=25; i=i/(HASH_TABLE_SIZE-1); // pozor! tedka to funguje, bude jen 25hodnot // i=(i+id)%6; return i; } } int myhash(char * data,int fixed_order) // Hashovaci fce, ktera koduje jmeno tagu, v pripade, ze fixed_order, nehashuje se do tabulky, // ale vznika primo jeden seznam (aby bylo mozne ulozit presne v tomto poradi) { if (fixed_order==1) return 0; else { int i=0; if ((data[0]>='0') && (data[0]<='9')) { i=(data[0]-'0')/2; } else { if (data[0]<95) i=data[0]-65; else i=data[0]-97; } if ((i<0) || (i>25)) i=25; i=i/5; // pozor! tedka to funguje, bude jen 25hodnot // i=(i+id)%6; return i; } } int myhashMaxValue(int fixed_order) { if (fixed_order==1) return 1; else return HASH_TABLE_SIZE; }