1 | /* -*- c-basic-offset: 2 -*- */ |
---|---|
2 | /* |
3 | Copyright(C) 2011-2016 Brazil |
4 | |
5 | This library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Lesser General Public |
7 | License version 2.1 as published by the Free Software Foundation. |
8 | |
9 | This library is distributed in the hope that it will be useful, |
10 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
12 | Lesser General Public License for more details. |
13 | |
14 | You should have received a copy of the GNU Lesser General Public |
15 | License along with this library; if not, write to the Free Software |
16 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
17 | */ |
18 | |
19 | #pragma once |
20 | |
21 | // See base.hpp and check.hpp for details. |
22 | #include "base.hpp" |
23 | #include "check.hpp" |
24 | |
25 | namespace grn { |
26 | namespace dat { |
27 | |
28 | class GRN_DAT_API Node { |
29 | public: |
30 | Node() : base_(), check_() {} |
31 | |
32 | Base base() const { |
33 | return base_; |
34 | } |
35 | bool is_linker() const { |
36 | GRN_DAT_DEBUG_THROW_IF(is_phantom()); |
37 | return base_.is_linker(); |
38 | } |
39 | UInt32 offset() const { |
40 | GRN_DAT_DEBUG_THROW_IF(is_phantom()); |
41 | return base_.offset(); |
42 | } |
43 | UInt32 key_pos() const { |
44 | GRN_DAT_DEBUG_THROW_IF(is_phantom()); |
45 | return base_.key_pos(); |
46 | } |
47 | |
48 | Check check() const { |
49 | return check_; |
50 | } |
51 | bool is_offset() const { |
52 | return check_.is_offset(); |
53 | } |
54 | UInt32 except_is_offset() const { |
55 | return check_.except_is_offset(); |
56 | } |
57 | bool is_phantom() const { |
58 | return check_.is_phantom(); |
59 | } |
60 | UInt32 next() const { |
61 | return check_.next(); |
62 | } |
63 | UInt32 prev() const { |
64 | return check_.prev(); |
65 | } |
66 | UInt32 label() const { |
67 | return check_.label(); |
68 | } |
69 | UInt32 child() const { |
70 | return check_.child(); |
71 | } |
72 | UInt32 sibling() const { |
73 | return check_.sibling(); |
74 | } |
75 | |
76 | void set_base(Base x) { |
77 | GRN_DAT_DEBUG_THROW_IF(is_phantom()); |
78 | base_ = x; |
79 | } |
80 | void set_offset(UInt32 x) { |
81 | GRN_DAT_DEBUG_THROW_IF(is_phantom()); |
82 | base_.set_offset(x); |
83 | } |
84 | void set_key_pos(UInt32 x) { |
85 | GRN_DAT_DEBUG_THROW_IF(is_phantom()); |
86 | base_.set_key_pos(x); |
87 | } |
88 | |
89 | void set_check(Check x) { |
90 | check_ = x; |
91 | } |
92 | void set_is_offset(bool x) { |
93 | check_.set_is_offset(x); |
94 | } |
95 | void set_except_is_offset(UInt32 x) { |
96 | check_.set_except_is_offset(x); |
97 | } |
98 | void set_is_phantom(bool x) { |
99 | GRN_DAT_DEBUG_THROW_IF(base_.offset() != INVALID_OFFSET); |
100 | check_.set_is_phantom(x); |
101 | } |
102 | void set_next(UInt32 x) { |
103 | GRN_DAT_DEBUG_THROW_IF(base_.offset() != INVALID_OFFSET); |
104 | check_.set_next(x); |
105 | } |
106 | void set_prev(UInt32 x) { |
107 | GRN_DAT_DEBUG_THROW_IF(base_.offset() != INVALID_OFFSET); |
108 | check_.set_prev(x); |
109 | } |
110 | void set_label(UInt32 x) { |
111 | GRN_DAT_DEBUG_THROW_IF(offset() != INVALID_OFFSET); |
112 | check_.set_label(x); |
113 | } |
114 | void set_child(UInt32 x) { |
115 | check_.set_child(x); |
116 | } |
117 | void set_sibling(UInt32 x) { |
118 | check_.set_sibling(x); |
119 | } |
120 | |
121 | private: |
122 | Base base_; |
123 | Check check_; |
124 | }; |
125 | |
126 | } // namespace dat |
127 | } // namespace grn |
128 |