uint64_t t1ha2_atonce(const void *data, size_t length, uint64_t seed) { t1ha_state256_t state; init_ab(&state, seed, length); #if T1HA_SYS_UNALIGNED_ACCESS == T1HA_UNALIGNED_ACCESS__EFFICIENT if (unlikely(length > 32)) { init_cd(&state, seed, length); T1HA2_LOOP(le, unaligned, &state, data, length); squash(&state); length &= 31; } T1HA2_TAIL_AB(le, unaligned, &state, data, length); #else const bool misaligned = (((uintptr_t)data) & (ALIGNMENT_64 - 1)) != 0; if (misaligned) { if (unlikely(length > 32)) { init_cd(&state, seed, length); T1HA2_LOOP(le, unaligned, &state, data, length); squash(&state); length &= 31; } T1HA2_TAIL_AB(le, unaligned, &state, data, length); } else { if (unlikely(length > 32)) { init_cd(&state, seed, length); T1HA2_LOOP(le, aligned, &state, data, length); squash(&state); length &= 31; } T1HA2_TAIL_AB(le, aligned, &state, data, length); } #endif }
UTF32 *hz_utf8_to_utf32(const char *s, size_t *nchar) { init_cd(); return convert(utf8_cd, s, strlen(s), nchar); }