diff options
-rw-r--r-- | uthash.h | 29 |
1 files changed, 19 insertions, 10 deletions
@@ -423,6 +423,15 @@ do { | |||
423 | c -= a; c -= b; c ^= ( b >> 15 ); \ | 423 | c -= a; c -= b; c ^= ( b >> 15 ); \ |
424 | } while (0) | 424 | } while (0) |
425 | 425 | ||
426 | #if defined __has_cpp_attribute | ||
427 | #if __has_cpp_attribute(fallthrough) | ||
428 | #define fallthrough ([[fallthrough]];) | ||
429 | #endif | ||
430 | #endif | ||
431 | #ifndef fallthrough | ||
432 | #define fallthrough /* FALL-THRU */ | ||
433 | #endif | ||
434 | |||
426 | #define HASH_JEN(key,keylen,num_bkts,hashv,bkt) \ | 435 | #define HASH_JEN(key,keylen,num_bkts,hashv,bkt) \ |
427 | do { \ | 436 | do { \ |
428 | unsigned _hj_i,_hj_j,_hj_k; \ | 437 | unsigned _hj_i,_hj_j,_hj_k; \ |
@@ -449,25 +458,25 @@ do { | |||
449 | hashv += keylen; \ | 458 | hashv += keylen; \ |
450 | switch ( _hj_k ) { \ | 459 | switch ( _hj_k ) { \ |
451 | case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); \ | 460 | case 11: hashv += ( (unsigned)_hj_key[10] << 24 ); \ |
452 | [[fallthrough]]; \ | 461 | fallthrough \ |
453 | case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); \ | 462 | case 10: hashv += ( (unsigned)_hj_key[9] << 16 ); \ |
454 | [[fallthrough]]; \ | 463 | fallthrough \ |
455 | case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); \ | 464 | case 9: hashv += ( (unsigned)_hj_key[8] << 8 ); \ |
456 | [[fallthrough]]; \ | 465 | fallthrough \ |
457 | case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); \ | 466 | case 8: _hj_j += ( (unsigned)_hj_key[7] << 24 ); \ |
458 | [[fallthrough]]; \ | 467 | fallthrough \ |
459 | case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); \ | 468 | case 7: _hj_j += ( (unsigned)_hj_key[6] << 16 ); \ |
460 | [[fallthrough]]; \ | 469 | fallthrough \ |
461 | case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); \ | 470 | case 6: _hj_j += ( (unsigned)_hj_key[5] << 8 ); \ |
462 | [[fallthrough]]; \ | 471 | fallthrough \ |
463 | case 5: _hj_j += _hj_key[4]; \ | 472 | case 5: _hj_j += _hj_key[4]; \ |
464 | [[fallthrough]]; \ | 473 | fallthrough \ |
465 | case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); \ | 474 | case 4: _hj_i += ( (unsigned)_hj_key[3] << 24 ); \ |
466 | [[fallthrough]]; \ | 475 | fallthrough \ |
467 | case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); \ | 476 | case 3: _hj_i += ( (unsigned)_hj_key[2] << 16 ); \ |
468 | [[fallthrough]]; \ | 477 | fallthrough \ |
469 | case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); \ | 478 | case 2: _hj_i += ( (unsigned)_hj_key[1] << 8 ); \ |
470 | [[fallthrough]]; \ | 479 | fallthrough \ |
471 | case 1: _hj_i += _hj_key[0]; \ | 480 | case 1: _hj_i += _hj_key[0]; \ |
472 | } \ | 481 | } \ |
473 | HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ | 482 | HASH_JEN_MIX(_hj_i, _hj_j, hashv); \ |