Home | History | Annotate | Download | only in marisa_alpha
      1 #include "progress.h"
      2 
      3 namespace marisa_alpha {
      4 
      5 Progress::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 
     21 bool 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