1#include "progress.h"
2
3namespace marisa {
4
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
20bool 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