Esempio n. 1
0
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));
}
Esempio n. 2
0
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);
}
Esempio n. 3
0
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;
}
Esempio n. 4
0
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;
}