void lm_trie_quant_lwrite(lm_trie_quant_t * quant, bitarr_address_t address, float prob) { bitarr_write_int25(address, quant->prob_bits, (uint32) bins_encode(quant->longest, prob)); }
static void middle_finish_loading(middle_t *middle, uint32 next_end) { bitarr_address_t address; address.base = middle->base.base; address.offset = (middle->base.insert_index + 1) * middle->base.total_bits - middle->next_mask.bits; bitarr_write_int25(address, middle->next_mask.bits, next_end); }
static bitarr_address_t longest_insert(longest_t *longest, uint32 index) { bitarr_address_t address; assert(index <= longest->base.word_mask); address.base = longest->base.base; address.offset = longest->base.insert_index * longest->base.total_bits; bitarr_write_int25(address, longest->base.word_bits, index); address.offset += longest->base.word_bits; longest->base.insert_index++; return address; }
static bitarr_address_t middle_insert(middle_t *middle, uint32 word, int order, int max_order) { uint32 at_pointer; uint32 next; bitarr_address_t address; assert(word <= middle->base.word_mask); address.base = middle->base.base; address.offset = middle->base.insert_index * middle->base.total_bits; bitarr_write_int25(address, middle->base.word_bits, word); address.offset += middle->base.word_bits; at_pointer = address.offset; address.offset += middle->quant_bits; if (order == max_order - 1) { next = ((longest_t *)middle->next_source)->base.insert_index; } else { next = ((middle_t *)middle->next_source)->base.insert_index; } bitarr_write_int25(address, middle->next_mask.bits, next); middle->base.insert_index++; address.offset = at_pointer; return address; }