| #include "progress.h" |
| |
| namespace marisa { |
| |
| Progress::Progress(int flags) : flags_(flags), trie_id_(0), total_size_(0) { |
| if ((flags_ & MARISA_NUM_TRIES_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_NUM_TRIES_MASK) | MARISA_DEFAULT_NUM_TRIES; |
| } |
| if ((flags & MARISA_TRIE_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_TRIE_MASK) | MARISA_DEFAULT_TRIE; |
| } |
| if ((flags & MARISA_TAIL_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_TAIL_MASK) | MARISA_DEFAULT_TAIL; |
| } |
| if ((flags & MARISA_ORDER_MASK) == 0) { |
| flags_ = (flags_ & ~MARISA_ORDER_MASK) | MARISA_DEFAULT_ORDER; |
| } |
| } |
| |
| bool Progress::is_valid() const { |
| if ((flags_ & ~MARISA_FLAGS_MASK) != 0) { |
| return false; |
| } |
| switch (flags_ & MARISA_TRIE_MASK) { |
| case MARISA_PATRICIA_TRIE: |
| case MARISA_PREFIX_TRIE: { |
| break; |
| } |
| default: { |
| return false; |
| } |
| } |
| switch (flags_ & MARISA_TAIL_MASK) { |
| case MARISA_WITHOUT_TAIL: |
| case MARISA_BINARY_TAIL: |
| case MARISA_TEXT_TAIL: { |
| break; |
| } |
| default: { |
| return false; |
| } |
| } |
| switch (flags_ & MARISA_ORDER_MASK) { |
| case MARISA_LABEL_ORDER: |
| case MARISA_WEIGHT_ORDER: { |
| break; |
| } |
| default: { |
| return false; |
| } |
| } |
| return true; |
| } |
| |
| } // namespace marisa |