diff options
Diffstat (limited to 'src/routingTreeWalker.hpp')
-rw-r--r-- | src/routingTreeWalker.hpp | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/src/routingTreeWalker.hpp b/src/routingTreeWalker.hpp deleted file mode 100644 index 33e4ae6..0000000 --- a/src/routingTreeWalker.hpp +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef __ROUTING_TREE_WALKER_ -#define __ROUTING_TREE_WALKER_ -template <class BinaryType> -void routingTreeWalker(BinaryType bytes ,RoutingTreeNode * node,u_int8_t length,u_int16_t mux) -{ - for (int i=0; i<(length/8); i++) - { - if (!node->nodes_[bytes[i]]) - node->nodes_[bytes[i]] = new RoutingTreeNode; - node=node->nodes_[bytes[i]]; - } - if (length%8) - { - unsigned char idx=0xff; - idx <<=8-(length%8); - idx &= bytes[length/8]; - unsigned char maxidx=0xff; - maxidx>>=(length%8); - maxidx|=idx; - for (unsigned char i=idx; i<=maxidx; i++) - { - if (!node->nodes_[i]) - node->nodes_[i] = new RoutingTreeNode; - node->nodes_[i]->valid_=true; - node->nodes_[i]->mux_=mux; - } - } else { - node->valid_=true; - node->mux_=mux; - } -} - -template <class BinaryType> -u_int16_t routingTreeFinder(BinaryType bytes ,RoutingTreeNode & root ) -{ - bool valid=0; - u_int16_t mux=0; - RoutingTreeNode * node = &root; - if (root.valid_) - { - mux=root.mux_; - valid=1; - } - for (size_t level=0;level<bytes.size();level++) - { - if (node->nodes_[bytes[level]]) - { - node=node->nodes_[bytes[level]]; - if(node->valid_) - { - mux=node->mux_; - valid=1; - } - } else { - break; - } - } - if(!valid) - throw std::runtime_error("no route"); - return mux; -} -#endif - |