| 586 | |
| 587 | |
| 588 | FORCE_INLINE XXH_errorcode XXH32_update_endian (XXH32_state_t* state_in, const void* input, size_t len, XXH_endianess endian) |
| 589 | { |
| 590 | XXH_istate32_t* state = (XXH_istate32_t *) state_in; |
| 591 | const BYTE* p = (const BYTE*)input; |
| 592 | const BYTE* const bEnd = p + len; |
| 593 | |
| 594 | #ifdef XXH_ACCEPT_NULL_INPUT_POINTER |
| 595 | if (input==NULL) return XXH_ERROR; |
| 596 | #endif |
| 597 | |
| 598 | state->total_len += len; |
| 599 | |
| 600 | if (state->memsize + len < 16) // fill in tmp buffer |
| 601 | { |
| 602 | XXH_memcpy(state->memory + state->memsize, input, len); |
| 603 | state->memsize += (U32)len; |
| 604 | return XXH_OK; |
| 605 | } |
| 606 | |
| 607 | if (state->memsize) // some data left from previous update |
| 608 | { |
| 609 | XXH_memcpy(state->memory + state->memsize, input, 16-state->memsize); |
| 610 | { |
| 611 | const U32* p32 = (const U32*)state->memory; |
| 612 | state->v1 += XXH_readLE32(p32, endian) * PRIME32_2; |
| 613 | state->v1 = XXH_rotl32(state->v1, 13); |
| 614 | state->v1 *= PRIME32_1; |
| 615 | p32++; |
| 616 | state->v2 += XXH_readLE32(p32, endian) * PRIME32_2; |
| 617 | state->v2 = XXH_rotl32(state->v2, 13); |
| 618 | state->v2 *= PRIME32_1; |
| 619 | p32++; |
| 620 | state->v3 += XXH_readLE32(p32, endian) * PRIME32_2; |
| 621 | state->v3 = XXH_rotl32(state->v3, 13); |
| 622 | state->v3 *= PRIME32_1; |
| 623 | p32++; |
| 624 | state->v4 += XXH_readLE32(p32, endian) * PRIME32_2; |
| 625 | state->v4 = XXH_rotl32(state->v4, 13); |
| 626 | state->v4 *= PRIME32_1; |
| 627 | p32++; |
| 628 | } |
| 629 | p += 16-state->memsize; |
| 630 | state->memsize = 0; |
| 631 | } |
| 632 | |
| 633 | if (p <= bEnd-16) |
| 634 | { |
| 635 | const BYTE* const limit = bEnd - 16; |
| 636 | U32 v1 = state->v1; |
| 637 | U32 v2 = state->v2; |
| 638 | U32 v3 = state->v3; |
| 639 | U32 v4 = state->v4; |
| 640 | |
| 641 | do |
| 642 | { |
| 643 | v1 += XXH_readLE32((const U32*)p, endian) * PRIME32_2; |
| 644 | v1 = XXH_rotl32(v1, 13); |
| 645 | v1 *= PRIME32_1; |
nothing calls this directly
no test coverage detected