Changeset 1980 for trunk/src/kmk/hash.h
- Timestamp:
- Oct 28, 2008, 12:25:49 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/kmk/hash.h
r1902 r1980 100 100 /* hash and comparison macros for case-sensitive string keys. */ 101 101 102 #ifndef CONFIG_WITH_OPTIMIZATION_HACKS103 102 #define STRING_HASH_1(KEY, RESULT) do { \ 104 103 unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ … … 106 105 (RESULT) += (*_key_ << (_key_[1] & 0xf)); \ 107 106 } while (0) 108 #else /* CONFIG_WITH_OPTIMIZATION_HACKS */109 # define STRING_HASH_1(KEY, RESULT) do { \110 unsigned char const *_key_ = (unsigned char const *) (KEY); \111 unsigned int _ch_ = *_key_; \112 while (_ch_) \113 { \114 unsigned char _ch2_ = *++_key_; \115 (RESULT) += (_ch_ << (_ch2_ & 0xf)); \116 _ch_ = _ch2_; \117 } \118 } while (0)119 #endif /* CONFIG_WITH_OPTIMIZATION_HACKS */120 107 #define return_STRING_HASH_1(KEY) do { \ 121 108 unsigned long _result_ = 0; \ … … 124 111 } while (0) 125 112 126 #ifndef CONFIG_WITH_OPTIMIZATION_HACKS127 113 #define STRING_HASH_2(KEY, RESULT) do { \ 128 114 unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ … … 130 116 (RESULT) += (*_key_ << (_key_[1] & 0x7)); \ 131 117 } while (0) 132 #else /* CONFIG_WITH_OPTIMIZATION_HACKS */133 # define STRING_HASH_2(KEY, RESULT) do { \134 unsigned char const *_key_ = (unsigned char const *) (KEY); \135 unsigned int _ch_ = *_key_; \136 while (_ch_) \137 { \138 unsigned char _ch2_ = *++_key_; \139 (RESULT) += (_ch_ << (_ch2_ & 0x7)); \140 _ch_ = _ch2_; \141 } \142 } while (0)143 #endif /* CONFIG_WITH_OPTIMIZATION_HACKS */144 118 #define return_STRING_HASH_2(KEY) do { \ 145 119 unsigned long _result_ = 0; \ … … 155 129 } while (0) 156 130 157 #ifndef CONFIG_WITH_OPTIMIZATION_HACKS 131 158 132 #define STRING_N_HASH_1(KEY, N, RESULT) do { \ 159 133 unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ … … 164 138 (RESULT) += *++_key_; \ 165 139 } while (0) 166 #else /* CONFIG_WITH_OPTIMIZATION_HACKS */167 # define STRING_N_HASH_1(KEY, N, RESULT) do { \168 unsigned char const *_key_ = (unsigned char const *) (KEY); \169 unsigned int _ch_ = *_key_; \170 int _n_ = (N); \171 if (_n_) \172 { \173 for (;;) \174 { \175 unsigned char _ch2_; \176 if (!--_n_) \177 { \178 (RESULT) += _ch_; \179 break; \180 } \181 _ch2_ = *++_key_; \182 (RESULT) += (_ch_ << (_ch2_ & 0xf)); \183 _ch_ = _ch2_; \184 if (!_ch_) break; \185 } \186 } \187 else \188 (RESULT) += _ch_; \189 } while (0)190 #endif /* CONFIG_WITH_OPTIMIZATION_HACKS */191 140 #define return_STRING_N_HASH_1(KEY, N) do { \ 192 141 unsigned long _result_ = 0; \ … … 195 144 } while (0) 196 145 197 #ifndef CONFIG_WITH_OPTIMIZATION_HACKS198 146 #define STRING_N_HASH_2(KEY, N, RESULT) do { \ 199 147 unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ … … 204 152 (RESULT) += *++_key_; \ 205 153 } while (0) 206 #else /* CONFIG_WITH_OPTIMIZATION_HACKS */207 # define STRING_N_HASH_2(KEY, N, RESULT) do { \208 unsigned char const *_key_ = (unsigned char const *) (KEY); \209 unsigned int _ch_ = *_key_; \210 int _n_ = (N); \211 if (_n_) \212 { \213 for (;;) \214 { \215 unsigned char _ch2_; \216 if (!--_n_) \217 { \218 (RESULT) += _ch_; \219 break; \220 } \221 _ch2_ = *++_key_; \222 (RESULT) += (_ch_ << (_ch2_ & 0x7)); \223 _ch_ = _ch2_; \224 if (!_ch_) break; \225 } \226 } \227 else \228 (RESULT) += _ch_; \229 } while (0)230 #endif /* CONFIG_WITH_OPTIMIZATION_HACKS */231 154 #define return_STRING_N_HASH_2(KEY, N) do { \ 232 155 unsigned long _result_ = 0; \ … … 246 169 /* hash and comparison macros for case-insensitive string _key_s. */ 247 170 248 #if 1 /*ndef CONFIG_WITH_OPTIMIZATION_HACKS - testme */249 171 #define ISTRING_HASH_1(KEY, RESULT) do { \ 250 172 unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ … … 252 174 (RESULT) += ((isupper (*_key_) ? tolower (*_key_) : *_key_) << (_key_[1] & 0xf)); \ 253 175 } while (0) 254 #else /* CONFIG_WITH_OPTIMIZATION_HACKS */255 #define ISTRING_HASH_1(KEY, RESULT) do { \256 unsigned char const *_key_ = (unsigned char const *) (KEY); \257 unsigned int _ch_ = *_key_;258 while (_ch_) \259 { \260 unsigned _ch2_ = *++_key_; \261 (RESULT) += ((isupper (_ch_) ? tolower (_ch_) : _ch_) << (_ch2_ & 0xf)); \262 _ch_ = _ch2_; \263 } \264 } while (0)265 #endif /* CONFIG_WITH_OPTIMIZATION_HACKS */266 176 #define return_ISTRING_HASH_1(KEY) do { \ 267 177 unsigned long _result_ = 0; \ … … 270 180 } while (0) 271 181 272 #if 1 /* ndef CONFIG_WITH_OPTIMIZATION_HACKS - testme */273 182 #define ISTRING_HASH_2(KEY, RESULT) do { \ 274 183 unsigned char const *_key_ = (unsigned char const *) (KEY) - 1; \ … … 276 185 (RESULT) += ((isupper (*_key_) ? tolower (*_key_) : *_key_) << (_key_[1] & 0x7)); \ 277 186 } while (0) 278 #else /* CONFIG_WITH_OPTIMIZATION_HACKS */279 #define ISTRING_HASH_2(KEY, RESULT) do { \280 unsigned char const *_key_ = (unsigned char const *) (KEY); \281 unsigned int _ch_ = *_key_;282 while (_ch_) \283 { \284 unsigned _ch2_ = *++_key_; \285 (RESULT) += ((isupper (_ch_) ? tolower (_ch_) : _ch_) << (_ch2_ & 0x7)); \286 _ch_ = _ch2_; \287 } \288 } while (0)289 #endif /* CONFIG_WITH_OPTIMIZATION_HACKS */290 187 #define return_ISTRING_HASH_2(KEY) do { \ 291 188 unsigned long _result_ = 0; \
Note:
See TracChangeset
for help on using the changeset viewer.