1 #include "progress.h" 2 3 namespace marisa { 4 Progress(int flags)5Progress::Progress(int flags) : flags_(flags), trie_id_(0), total_size_(0) { 6 if ((flags_ & MARISA_NUM_TRIES_MASK) == 0) { 7 flags_ = (flags_ & ~MARISA_NUM_TRIES_MASK) | MARISA_DEFAULT_NUM_TRIES; 8 } 9 if ((flags & MARISA_TRIE_MASK) == 0) { 10 flags_ = (flags_ & ~MARISA_TRIE_MASK) | MARISA_DEFAULT_TRIE; 11 } 12 if ((flags & MARISA_TAIL_MASK) == 0) { 13 flags_ = (flags_ & ~MARISA_TAIL_MASK) | MARISA_DEFAULT_TAIL; 14 } 15 if ((flags & MARISA_ORDER_MASK) == 0) { 16 flags_ = (flags_ & ~MARISA_ORDER_MASK) | MARISA_DEFAULT_ORDER; 17 } 18 } 19 is_valid() const20bool Progress::is_valid() const { 21 if ((flags_ & ~MARISA_FLAGS_MASK) != 0) { 22 return false; 23 } 24 switch (flags_ & MARISA_TRIE_MASK) { 25 case MARISA_PATRICIA_TRIE: 26 case MARISA_PREFIX_TRIE: { 27 break; 28 } 29 default: { 30 return false; 31 } 32 } 33 switch (flags_ & MARISA_TAIL_MASK) { 34 case MARISA_WITHOUT_TAIL: 35 case MARISA_BINARY_TAIL: 36 case MARISA_TEXT_TAIL: { 37 break; 38 } 39 default: { 40 return false; 41 } 42 } 43 switch (flags_ & MARISA_ORDER_MASK) { 44 case MARISA_LABEL_ORDER: 45 case MARISA_WEIGHT_ORDER: { 46 break; 47 } 48 default: { 49 return false; 50 } 51 } 52 return true; 53 } 54 55 } // namespace marisa 56