| 550 | } |
| 551 | |
| 552 | inline T get_value(const InternalIndex internal_index) const |
| 553 | { |
| 554 | const auto lower_word = vec[internal_index.lower_word]; |
| 555 | // note this can actually already be a word of the next block however in |
| 556 | // that case the upper mask will be 0. |
| 557 | // we make sure to have a sentinel element to avoid out-of-bounds errors. |
| 558 | const auto upper_word = vec[internal_index.lower_word + 1]; |
| 559 | const auto value = get_lower_half_value<WordT, T>(lower_word, |
| 560 | lower_mask[internal_index.element], |
| 561 | lower_offset[internal_index.element]) | |
| 562 | get_upper_half_value<WordT, T>(upper_word, |
| 563 | upper_mask[internal_index.element], |
| 564 | upper_offset[internal_index.element]); |
| 565 | return value; |
| 566 | } |
| 567 | |
| 568 | inline void set_value(const InternalIndex internal_index, const T value) |
| 569 | { |
no outgoing calls
no test coverage detected