x
Yes
No
Do you want to visit DriveHQ English website?
首页
产品服务
价格
免费试用
下载客户端
关于我们
云文件服务
|
云备份服务
|
FTP服务
|
企业邮箱服务
|
网站托管
|
客户端软件
云文件服务
云备份服务
FTP服务
企业级邮箱服务
网站托管
客户端软件
avltree_node.hpp - Hosted on DriveHQ Cloud IT Platform
返回上层目录
上传
下载
共享
发布
新建文件夹
新建文件
复制
剪切
删除
粘贴
评论
升级服务
路径: \\game3dprogramming\materials\GameFactory\GameFactoryDemo\references\boost_1_35_0\boost\intrusive\detail\avltree_node.hpp
旋转
特效
属性
历史版本
///////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2007. // // Distributed under the Boost Software License, Version 1.0. // (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) // // See http://www.boost.org/libs/intrusive for documentation. // ///////////////////////////////////////////////////////////////////////////// #ifndef BOOST_INTRUSIVE_AVLTREE_NODE_HPP #define BOOST_INTRUSIVE_AVLTREE_NODE_HPP #include
#include
#include
#include
#include
#include
namespace boost { namespace intrusive { ///////////////////////////////////////////////////////////////////////////// // // // Generic node_traits for any pointer type // // // ///////////////////////////////////////////////////////////////////////////// //This is the compact representation: 3 pointers template
struct compact_avltree_node { typedef typename pointer_to_other
>::type node_ptr; enum balance { negative_t, zero_t, positive_t }; node_ptr parent_, left_, right_; }; //This is the normal representation: 3 pointers + enum template
struct avltree_node { typedef typename pointer_to_other
>::type node_ptr; enum balance { negative_t, zero_t, positive_t }; node_ptr parent_, left_, right_; balance balance_; }; //This is the default node traits implementation //using a node with 3 generic pointers plus an enum template
struct default_avltree_node_traits_impl { typedef avltree_node
node; typedef typename boost::pointer_to_other
::type node_ptr; typedef typename boost::pointer_to_other
::type const_node_ptr; typedef typename node::balance balance; static node_ptr get_parent(const_node_ptr n) { return n->parent_; } static void set_parent(node_ptr n, node_ptr p) { n->parent_ = p; } static node_ptr get_left(const_node_ptr n) { return n->left_; } static void set_left(node_ptr n, node_ptr l) { n->left_ = l; } static node_ptr get_right(const_node_ptr n) { return n->right_; } static void set_right(node_ptr n, node_ptr r) { n->right_ = r; } static balance get_balance(const_node_ptr n) { return n->balance_; } static void set_balance(node_ptr n, balance b) { n->balance_ = b; } static balance negative() { return node::negative_t; } static balance zero() { return node::zero_t; } static balance positive() { return node::positive_t; } }; //This is the compact node traits implementation //using a node with 3 generic pointers template
struct compact_avltree_node_traits_impl { typedef compact_avltree_node
node; typedef typename boost::pointer_to_other
::type node_ptr; typedef typename boost::pointer_to_other
::type const_node_ptr; typedef typename node::balance balance; typedef pointer_plus_2_bits
ptr_bit; static node_ptr get_parent(const_node_ptr n) { return ptr_bit::get_pointer(n->parent_); } static void set_parent(node_ptr n, node_ptr p) { ptr_bit::set_pointer(n->parent_, p); } static node_ptr get_left(const_node_ptr n) { return n->left_; } static void set_left(node_ptr n, node_ptr l) { n->left_ = l; } static node_ptr get_right(const_node_ptr n) { return n->right_; } static void set_right(node_ptr n, node_ptr r) { n->right_ = r; } static balance get_balance(const_node_ptr n) { return (balance)ptr_bit::get_bits(n->parent_); } static void set_balance(node_ptr n, balance b) { ptr_bit::set_bits(n->parent_, (std::size_t)b); } static balance negative() { return node::negative_t; } static balance zero() { return node::zero_t; } static balance positive() { return node::positive_t; } }; //Dispatches the implementation based on the boolean template
struct avltree_node_traits_dispatch : public default_avltree_node_traits_impl
{}; template
struct avltree_node_traits_dispatch
: public compact_avltree_node_traits_impl
{}; //Inherit from the detail::link_dispatch depending on the embedding capabilities template
struct avltree_node_traits : public avltree_node_traits_dispatch < VoidPointer , OptimizeSize && has_pointer_plus_2_bits < VoidPointer , detail::alignment_of
>::value >::value > {}; } //namespace intrusive } //namespace boost #include
#endif //BOOST_INTRUSIVE_AVLTREE_NODE_HPP
avltree_node.hpp
网页地址
文件地址
上一页
2/18
下一页
下载
( 5 KB )
Comments
Total ratings:
0
Average rating:
无评论
of 10
Would you like to comment?
Join now
, or
Logon
if you are already a member.