55 lines
1.2 KiB
C++
55 lines
1.2 KiB
C++
#include "progress.h"
|
|
|
|
namespace marisa {
|
|
|
|
Progress::Progress(int flags) : flags_(flags), trie_id_(0), total_size_(0) {
|
|
if ((flags_ & MARISA_NUM_TRIES_MASK) == 0) {
|
|
flags_ = (flags_ & ~MARISA_NUM_TRIES_MASK) | MARISA_DEFAULT_NUM_TRIES;
|
|
}
|
|
if ((flags & MARISA_TRIE_MASK) == 0) {
|
|
flags_ = (flags_ & ~MARISA_TRIE_MASK) | MARISA_DEFAULT_TRIE;
|
|
}
|
|
if ((flags & MARISA_TAIL_MASK) == 0) {
|
|
flags_ = (flags_ & ~MARISA_TAIL_MASK) | MARISA_DEFAULT_TAIL;
|
|
}
|
|
if ((flags & MARISA_ORDER_MASK) == 0) {
|
|
flags_ = (flags_ & ~MARISA_ORDER_MASK) | MARISA_DEFAULT_ORDER;
|
|
}
|
|
}
|
|
|
|
bool Progress::is_valid() const {
|
|
if ((flags_ & ~MARISA_FLAGS_MASK) != 0) {
|
|
return false;
|
|
}
|
|
switch (flags_ & MARISA_TRIE_MASK) {
|
|
case MARISA_PATRICIA_TRIE:
|
|
case MARISA_PREFIX_TRIE: {
|
|
break;
|
|
}
|
|
default: {
|
|
return false;
|
|
}
|
|
}
|
|
switch (flags_ & MARISA_TAIL_MASK) {
|
|
case MARISA_WITHOUT_TAIL:
|
|
case MARISA_BINARY_TAIL:
|
|
case MARISA_TEXT_TAIL: {
|
|
break;
|
|
}
|
|
default: {
|
|
return false;
|
|
}
|
|
}
|
|
switch (flags_ & MARISA_ORDER_MASK) {
|
|
case MARISA_LABEL_ORDER:
|
|
case MARISA_WEIGHT_ORDER: {
|
|
break;
|
|
}
|
|
default: {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
} // namespace marisa
|