1 #include "progress.h"
2 
3 namespace marisa {
4 
Progress(int flags)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 
is_valid() const20 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