| #include "progress.h" |
| |
| namespace marisa_alpha { |
| |
| Progress::Progress(int flags) : flags_(flags), trie_id_(0), total_size_(0) { |
| if ((flags_ & MARISA_ALPHA_NUM_TRIES_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_ALPHA_NUM_TRIES_MASK) |
| | MARISA_ALPHA_DEFAULT_NUM_TRIES; |
| } |
| if ((flags & MARISA_ALPHA_TRIE_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_ALPHA_TRIE_MASK) | MARISA_ALPHA_DEFAULT_TRIE; |
| } |
| if ((flags & MARISA_ALPHA_TAIL_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_ALPHA_TAIL_MASK) | MARISA_ALPHA_DEFAULT_TAIL; |
| } |
| if ((flags & MARISA_ALPHA_ORDER_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_ALPHA_ORDER_MASK) | MARISA_ALPHA_DEFAULT_ORDER; |
| } |
| } |
| |
| bool Progress::is_valid() const { |
| if ((flags_ & ~MARISA_ALPHA_FLAGS_MASK) != 0) { |
| return false; |
| } |
| switch (flags_ & MARISA_ALPHA_TRIE_MASK) { |
| case MARISA_ALPHA_PATRICIA_TRIE: |
| case MARISA_ALPHA_PREFIX_TRIE: { |
| break; |
| } |
| default: { |
| return false; |
| } |
| } |
| switch (flags_ & MARISA_ALPHA_TAIL_MASK) { |
| case MARISA_ALPHA_WITHOUT_TAIL: |
| case MARISA_ALPHA_BINARY_TAIL: |
| case MARISA_ALPHA_TEXT_TAIL: { |
| break; |
| } |
| default: { |
| return false; |
| } |
| } |
| switch (flags_ & MARISA_ALPHA_ORDER_MASK) { |
| case MARISA_ALPHA_LABEL_ORDER: |
| case MARISA_ALPHA_WEIGHT_ORDER: { |
| break; |
| } |
| default: { |
| return false; |
| } |
| } |
| return true; |
| } |
| |
| } // namespace marisa_alpha |