1 #include "progress.h" 2 3 namespace marisa_alpha { 4 Progress(int flags)5Progress::Progress(int flags) : flags_(flags), trie_id_(0), total_size_(0) { 6 if ((flags_ & MARISA_ALPHA_NUM_TRIES_MASK) == 0) { 7 flags_ = (flags_ & ~MARISA_ALPHA_NUM_TRIES_MASK) 8 | MARISA_ALPHA_DEFAULT_NUM_TRIES; 9 } 10 if ((flags & MARISA_ALPHA_TRIE_MASK) == 0) { 11 flags_ = (flags_ & ~MARISA_ALPHA_TRIE_MASK) | MARISA_ALPHA_DEFAULT_TRIE; 12 } 13 if ((flags & MARISA_ALPHA_TAIL_MASK) == 0) { 14 flags_ = (flags_ & ~MARISA_ALPHA_TAIL_MASK) | MARISA_ALPHA_DEFAULT_TAIL; 15 } 16 if ((flags & MARISA_ALPHA_ORDER_MASK) == 0) { 17 flags_ = (flags_ & ~MARISA_ALPHA_ORDER_MASK) | MARISA_ALPHA_DEFAULT_ORDER; 18 } 19 } 20 is_valid() const21bool Progress::is_valid() const { 22 if ((flags_ & ~MARISA_ALPHA_FLAGS_MASK) != 0) { 23 return false; 24 } 25 switch (flags_ & MARISA_ALPHA_TRIE_MASK) { 26 case MARISA_ALPHA_PATRICIA_TRIE: 27 case MARISA_ALPHA_PREFIX_TRIE: { 28 break; 29 } 30 default: { 31 return false; 32 } 33 } 34 switch (flags_ & MARISA_ALPHA_TAIL_MASK) { 35 case MARISA_ALPHA_WITHOUT_TAIL: 36 case MARISA_ALPHA_BINARY_TAIL: 37 case MARISA_ALPHA_TEXT_TAIL: { 38 break; 39 } 40 default: { 41 return false; 42 } 43 } 44 switch (flags_ & MARISA_ALPHA_ORDER_MASK) { 45 case MARISA_ALPHA_LABEL_ORDER: 46 case MARISA_ALPHA_WEIGHT_ORDER: { 47 break; 48 } 49 default: { 50 return false; 51 } 52 } 53 return true; 54 } 55 56 } // namespace marisa_alpha 57