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