1. C++ / Говнокод #25117

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    #define rot(x,k) (((x)<<(k)) | ((x)>>(32-(k))))
    
    #define mix(a,b,c) \
    	    { \
    		a -= c;  a ^= rot(c, 4);  c += b; \
    		b -= a;  b ^= rot(a, 6);  a += c; \
    		c -= b;  c ^= rot(b, 8);  b += a; \
    		a -= c;  a ^= rot(c,16);  c += b; \
    		b -= a;  b ^= rot(a,19);  a += c; \
        	c -= b;  c ^= rot(b, 4);  b += a; \
    		}
    
    #define final(a,b,c) \
    		{ \
        	c ^= b; c -= rot(b,14); \
    		a ^= c; a -= rot(c,11); \
        	b ^= a; b -= rot(a,25); \
        	c ^= b; c -= rot(b,16); \
    		a ^= c; a -= rot(c,4);  \
    		b ^= a; b -= rot(a,14); \
    		c ^= b; c -= rot(b,24); \
    		}
    
    	unsigned int lookup3(const void *key, size_t length, unsigned int initval)
    	{
    		unsigned int  a, b, c;
    		const unsigned char  *k;
    		const unsigned int *data32Bit;
    
    		data32Bit = (unsigned int *)key;
    		a = b = c = 0xdeadbeef + (((unsigned int)length) << 2) + initval;
    
    		while (length > 12) {
    			a += *(data32Bit++);
    			b += *(data32Bit++);
    			c += *(data32Bit++);
    			mix(a, b, c);
    			length -= 12;
    		}
    
    		k = (const unsigned char *)data32Bit;
    		switch (length) {
    		case 12: c += ((unsigned int)k[11]) << 24;
    		case 11: c += ((unsigned int)k[10]) << 16;
    		case 10: c += ((unsigned int)k[9]) << 8;
    		case 9: c += k[8];
    		case 8: b += ((unsigned int)k[7]) << 24;
    		case 7: b += ((unsigned int)k[6]) << 16;
    		case 6: b += ((unsigned int)k[5]) << 8;
    		case 5: b += k[4];
    		case 4: a += ((unsigned int)k[3]) << 24;
    		case 3: a += ((unsigned int)k[2]) << 16;
    		case 2: a += ((unsigned int)k[1]) << 8;
    		case 1: a += k[0];
    			break;
    		case 0: return c;
    		}
    		final(a, b, c);
    		return c;
    	}

    Що это за хуйня и как ей пользоваться? Декларируется 3 раза в проекте

    Запостил: gov_coder, 26 Ноября 2018

    Комментарии (21) RSS

    • 1) это rot
      2) https://docstore.mik.ua/orelly/unix3/upt/ch21_21.htm
      3) это не C++
      Ответить
      • Всё, разобрался, тупо напиздили nix функций в каталог project_lib, там же gzip и base64, но смысловой нагрузки это все не несет, висит тупо накопированным мертвым кодом там сям. Похоже программистам платили за количество написанных строк.
        Да, именно это не С++, но проект - C++
        Ответить
        • Занятно.

          Google: lookup3 -> http://burtleburtle.net/bob/hash/doobs.html
          А ведь этот кусок был нужен для хэширования и поиска по хэшу.
          Ответить
          • Очень похоже на хеш. А для чего это? Хеш от строки для хешмепов?
            Ответить
            • Хэш-функция Дженкинса для хешмапов если верить гуглу.
              Ответить
              • bormand, а ты сколько десятилетий пишешь на плюсах?
                Ответить
                • Земля была безвидна и пуста, и лишь духх бормнада носился над её исходным кодом...
                  Ответить
                  • мне твои стихосложения не интересны. Вопрос был таков: "сколько лет пишет борманд на С++" ?
                    Ответить
                    • Вилимо, ко-ко, ты не способен сам сделать вывод из этого сообщения (тупой как курица, кок!). Сообщаю, что броманд писал на C++ ещё с начала времён, кукарек, а возможно и до возникновения времени —– был лишь борнамд, крестоблядский стандарт и ноутбук, а вокрук, ко-ко, лишь нескончаемая тьма. Кукареку!
                      Ответить
                      • > ноутбук
                        Но борманд не любит ноутбуки. Так что эту сцену можно назвать "борманд в аду".
                        Ответить
                        • Пришлось создать время и пространство, подходящие для эволюции голых обезъян, чтобы те, наконец, придумали нормальную клавиатуру и прочее.
                          Ответить
                      • ты совсем тупой? В твоем стихосложении нет четкого ответа на поставленный вопрос.
                        Ответить
                        • Это не стихи, ко-ко. И, вилимо, ты мало читаешь. Кукареку! Кок-кок!
                          Ответить
                • 15, а что?
                  Ответить
      • ROT ЭТО ЖЕ
        ( а b c -- b c a )
        Ответить
        • rot это циклический сдвиг битов в инте. Именно в хеш-функциях всякого рода и используется.
          Ответить

    Добавить комментарий