Example #1
0
 // To reject a transition to an incomplete node, set_is_phantom() invalidates
 // its label and links when it becomes non-phantom.
 void set_is_phantom(bool x) {
   if (x) {
     GRN_DAT_DEBUG_THROW_IF(is_phantom());
     value_ |= IS_PHANTOM_FLAG;
   } else {
     GRN_DAT_DEBUG_THROW_IF(!is_phantom());
     value_ = (value_ & IS_OFFSET_FLAG) | (INVALID_LABEL << CHILD_SHIFT) |
         (INVALID_LABEL << SIBLING_SHIFT) | INVALID_LABEL;
   }
 }
Example #2
0
 void set_except_is_offset(UInt32 x) {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   GRN_DAT_DEBUG_THROW_IF((x & IS_OFFSET_FLAG) == IS_OFFSET_FLAG);
   value_ = (value_ & IS_OFFSET_FLAG) | x;
 }
Example #3
0
 void set_sibling(UInt32 x) {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   GRN_DAT_DEBUG_THROW_IF(label() > MAX_LABEL);
   GRN_DAT_DEBUG_THROW_IF((sibling() != INVALID_LABEL) && (x == INVALID_LABEL));
   value_ = (value_ & ~(LABEL_MASK << SIBLING_SHIFT)) | (x << SIBLING_SHIFT);
 }
Example #4
0
 UInt32 prev() const {
   GRN_DAT_DEBUG_THROW_IF(!is_phantom());
   return (value_ >> PREV_SHIFT) & BLOCK_MASK;
 }
Example #5
0
 void set_label(UInt32 x) {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   GRN_DAT_DEBUG_THROW_IF(x > MAX_LABEL);
   value_ = (value_ & ~LABEL_MASK) | x;
 }
Example #6
0
 void set_child(UInt32 x) {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   GRN_DAT_DEBUG_THROW_IF(x > MAX_LABEL);
   value_ = (value_ & ~(LABEL_MASK << CHILD_SHIFT)) | (x << CHILD_SHIFT);
 }
Example #7
0
 void set_key_id(UInt32 x) {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   base_.set_key_id(x);
 }
Example #8
0
 void set_prev(UInt32 x) {
   GRN_DAT_DEBUG_THROW_IF(!is_phantom());
   GRN_DAT_DEBUG_THROW_IF(x > BLOCK_MASK);
   value_ = (value_ & ~(BLOCK_MASK << PREV_SHIFT)) | (x << PREV_SHIFT);
 }
Example #9
0
 void set_offset(UInt32 x) {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   base_.set_offset(x);
 }
Example #10
0
 void set_base(Base x) {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   base_ = x;
 }
Example #11
0
 UInt32 key_id() const {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   return base_.key_id();
 }
Example #12
0
 UInt32 offset() const {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   return base_.offset();
 }
Example #13
0
 bool is_terminal() const {
   GRN_DAT_DEBUG_THROW_IF(is_phantom());
   return base_.is_terminal();
 }