53 template <
typename DataType>
class LLCATNode;
58 template <
typename DataType>
62 LLCATSegment<DataType>(uint8_t K)
63 : _K(K), _bits(0), _route(0), _forwardPointer(0)
67 inline bool StopBit()
const 69 return(_bits & 0x00000001);
78 _bits &= ~(0x00000001);
85 return(_bits & 0x00000002);
89 bool ValidBit(
bool on)
94 _bits &= ~(0x00000002);
99 bool FullPrefixRoute()
const 101 return(_bits & 0x00000004);
105 bool FullPrefixRoute(
bool on)
110 _bits &= ~(0x00000004);
115 uint8_t LifeChildrenCounter()
const 118 for (uint8_t i = 0; i < (_K - 1); ++i) {
121 uint8_t rc = (_bits >> 3) & mask;
125 uint8_t LifeChildrenCounter(uint8_t lcc)
128 for (uint8_t i = 0; i < (_K - 1); ++i) {
136 _bits |= ((uint32_t)lcc << 3);
138 uint8_t rc = (_bits & mask) >> 3;
142 const DataType *Route()
const 152 DataType *Route(DataType *route)
159 uint8_t ValidSubPrefixPattern()
const 162 for (uint8_t i = 0; i < (_K - 1); ++i) {
165 uint8_t rc = ((_bits >> (3 + (_K - 1))) & mask);
170 uint8_t ValidSubPrefixPattern(uint8_t vsp)
173 for (uint8_t i = 0; i < (_K - 1); ++i) {
178 mask <<= 3 + (_K - 1);
181 _bits |= ((uint32_t)vsp << (3 + (_K - 1)));
183 uint8_t rc = (_bits & mask) >> (3 + (_K - 1));
187 const LLCATNode<DataType> *ForwardPointer()
const 189 return(_forwardPointer);
192 const LLCATNode<DataType> *ForwardPointer(LLCATNode<DataType> *fp)
194 _forwardPointer = fp;
195 return(_forwardPointer);
202 LLCATNode<DataType> *_forwardPointer;
212 template <
typename DataType>
216 LLCATNode<DataType>(uint8_t K)
217 : _segments(((uint32_t)1 << K), LLCATSegment<DataType>(K))
223 std::vector<LLCATSegment<DataType> > _segments;
233 template <
typename DataType>
245 template <
typename DataType>
253 #endif // _DWMLLCAT_HH_ Definition: DwmBZ2IO.hh:67