DriveHQ Start Menu
Cloud Drive Mapping
Folder Sync
Cloud Backup
True Drop Box
FTP/SFTP Hosting
Group Account
DriveHQ Start Menu
Online File Server
My Storage
|
Manage Shares
|
Publishes
|
Drop Boxes
|
Group Account
WebDAV Drive Mapping
Cloud Drive Home
|
WebDAV Guide
|
Drive Mapping Tool
|
Drive Mapping URL
Complete Data Backup
Backup Guide
|
Online Backup Tool
|
Cloud-to-Cloud Backup
FTP, Email & Web Service
FTP Home
|
FTP Hosting FAQ
|
Email Hosting
|
EmailManager
|
Web Hosting
Help & Resources
About
|
Enterprise Service
|
Partnership
|
Comparisons
|
Support
Quick Links
Security and Privacy
Download Software
Service Manual
Use Cases
Group Account
Online Help
Blog
Contact
Cloud Surveillance
Sign Up
Login
Features
Business Features
Online File Server
FTP Hosting
Cloud Drive Mapping
Cloud File Backup
Email Backup & Hosting
Cloud File Sharing
Folder Synchronization
Group Management
True Drop Box
Full-text Search
AD Integration/SSO
Mobile Access
IP Camera & DVR Solution
More...
Personal Features
Personal Cloud Drive
Backup All Devices
Mobile APPs
Personal Web Hosting
Sub-Account (for Kids)
Home/PC/Kids Monitoring
More...
Software
DriveHQ Drive Mapping Tool
DriveHQ FileManager
DriveHQ Online Backup
DriveHQ Mobile Apps
Pricing
Business Plans & Pricing
Personal Plans & Pricing
Price Comparison with Others
Feature Comparison with Others
Install Mobile App
Sign up
Creating account...
Invalid character in username! Only 0-9, a-z, A-Z, _, -, . allowed.
Username is required!
Invalid email address!
E-mail is required!
Password is required!
Password is invalid!
Password and confirmation do not match.
Confirm password is required!
I accept
Membership Agreement
Please read the Membership Agreement and check "I accept"!
Free Quick Sign-up
Sign-up Page
Log in
Signing in...
Username or e-mail address is required!
Password is required!
Keep me logged in
Quick Login
Forgot Password
Up
Upload
Download
Share
Publish
New Folder
New File
Copy
Cut
Delete
Paste
Rate
Upgrade
Rotate
Effect
Edit
Slide
History
///////////////////////////////////////////////////////////////////////////// // // (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_OPTIONS_HPP #define BOOST_INTRUSIVE_OPTIONS_HPP #include
#include
#include
#include
#include
#include
namespace boost { namespace intrusive { /// @cond struct default_tag; struct member_tag; namespace detail{ template
struct eval_value_traits { typedef typename ValueTraits::value_traits type; }; template
struct external_bucket_traits_is_true { static const bool value = external_bucket_traits_bool
::value == 3; }; template
struct eval_bucket_traits { typedef typename BucketTraits::bucket_traits type; }; template
struct get_base_value_traits { typedef detail::base_hook_traits < T , typename BaseHook::boost_intrusive_tags::node_traits , BaseHook::boost_intrusive_tags::link_mode , typename BaseHook::boost_intrusive_tags::tag , BaseHook::boost_intrusive_tags::hook_type> type; }; template
struct get_member_value_traits { typedef typename MemberHook::member_value_traits type; }; template
struct get_value_traits { typedef SupposedValueTraits supposed_value_traits; //...if it's a base hook typedef typename detail::eval_if_c < internal_base_hook_bool_is_true
::value //...get it's internal value traits using //the provided T value type. , get_base_value_traits
//...else use it's internal value traits tag //(member hooks and custom value traits are in this group) , detail::eval_if_c < internal_member_value_traits
::value , get_member_value_traits
, detail::identity
> >::type type; }; template
struct get_base_node_traits { typedef typename BaseHook::boost_intrusive_tags::node_traits type; }; template
struct get_member_node_traits { typedef typename MemberHook::member_value_traits::node_traits type; }; template
struct get_explicit_node_traits { typedef typename ValueTraits::node_traits type; }; template
struct get_node_traits { typedef SupposedValueTraits supposed_value_traits; //...if it's a base hook typedef typename detail::eval_if_c < internal_base_hook_bool_is_true
::value //...get it's internal value traits using //the provided T value type. , get_base_node_traits
//...else use it's internal value traits tag //(member hooks and custom value traits are in this group) , detail::eval_if_c < internal_member_value_traits
::value , get_member_node_traits
, get_explicit_node_traits
> >::type type; }; } //namespace detail{ //!This type indicates that no option is being used //!and that the default options should be used struct none { template
struct pack : Base { }; }; /// @endcond //!This option setter specifies if the intrusive //!container stores its size as a member to //!obtain constant-time size() member. template
struct constant_time_size { /// @cond template
struct pack : Base { static const bool constant_time_size = Enabled; }; /// @endcond }; //!This option setter specifies the type that //!the container will use to store its size. template
struct size_type { /// @cond template
struct pack : Base { typedef SizeType size_type; }; /// @endcond }; //!This option setter specifies the strict weak ordering //!comparison functor for the value type template
struct compare { /// @cond template
struct pack : Base { typedef Compare compare; }; /// @endcond }; //!This option setter for scapegoat containers specifies if //!the intrusive scapegoat container should use a non-variable //!alpha value that does not need floating-point operations. //! //!If activated, the fixed alpha value is 1/sqrt(2). This //!option also saves some space in the container since //!the alpha value and some additional data does not need //!to be stored in the container. //! //!If the user only needs an alpha value near 1/sqrt(2), this //!option also improves performance since avoids logarithm //!and division operations when rebalancing the tree. template
struct floating_point { /// @cond template
struct pack : Base { static const bool floating_point = Enabled; }; /// @endcond }; //!This option setter specifies the equality //!functor for the value type template
struct equal { /// @cond template
struct pack : Base { typedef Equal equal; }; /// @endcond }; //!This option setter specifies the hash //!functor for the value type template
struct hash { /// @cond template
struct pack : Base { typedef Hash hash; }; /// @endcond }; //!This option setter specifies the relationship between the type //!to be managed by the container (the value type) and the node to be //!used in the node algorithms. It also specifies the linking policy. template
struct value_traits { /// @cond template
struct pack : Base { typedef ValueTraits value_traits; }; /// @endcond }; //!This option setter specifies the member hook the //!container must use. template< typename Parent , typename MemberHook , MemberHook Parent::* PtrToMember> struct member_hook { /// @cond typedef char Parent::* GenericPtrToMember; typedef detail::member_hook_traits < Parent , MemberHook , PtrToMember > member_value_traits; template
struct pack : Base { typedef member_value_traits value_traits; }; /// @endcond }; //!This option setter specifies that the container //!must use the specified base hook template
struct base_hook { /// @cond template
struct pack : Base { typedef BaseHook value_traits; }; /// @endcond }; //!This option setter specifies the type of //!a void pointer. This will instruct the hook //!to use this type of pointer instead of the //!default one template
struct void_pointer { /// @cond template
struct pack : Base { typedef VoidPointer void_pointer; }; /// @endcond }; //!This option setter specifies the type of //!the tag of a base hook. A type can not have two //!base hooks of the same type, so a tag can be used //!to differentiate two base hooks with otherwise same type template
struct tag { /// @cond template
struct pack : Base { typedef Tag tag; }; /// @endcond }; //!This option setter specifies the link mode //!(normal_link, safe_link or auto_unlink) template
struct link_mode { /// @cond template
struct pack : Base { static const link_mode_type link_mode = LinkType; }; /// @endcond }; //!This option setter specifies if the hook //!should be optimized for size instead of for speed. template
struct optimize_size { /// @cond template
struct pack : Base { static const bool optimize_size = Enabled; }; /// @endcond }; //!This option setter specifies if the list container should //!use a linear implementation instead of a circular one. template
struct linear { /// @cond template
struct pack : Base { static const bool linear = Enabled; }; /// @endcond }; //!This option setter specifies if the list container should //!use a linear implementation instead of a circular one. template
struct cache_last { /// @cond template
struct pack : Base { static const bool cache_last = Enabled; }; /// @endcond }; //!This option setter specifies the bucket traits //!class for unordered associative containers. When this option is specified, //!instead of using the default bucket traits, a user defined holder will be defined template
struct bucket_traits { /// @cond template
struct pack : Base { typedef BucketTraits bucket_traits; }; /// @endcond }; //!This option setter specifies if the unordered hook //!should offer room to store the hash value. //!Storing the hash in the hook will speed up rehashing //!processes in applications where rehashing is frequent, //!rehashing might throw or the value is heavy to hash. template
struct store_hash { /// @cond template
struct pack : Base { static const bool store_hash = Enabled; }; /// @endcond }; //!This option setter specifies if the bucket array will be always power of two. //!This allows using masks instead of the default modulo operation to determine //!the bucket number from the hash value, leading to better performance. //!In debug mode, if power of two buckets mode is activated, the bucket length //!will be checked to through assertions to assure the bucket length is power of two. template
struct power_2_buckets { /// @cond template
struct pack : Base { static const bool power_2_buckets = Enabled; }; /// @endcond }; /// @cond template
struct do_pack { //Use "pack" member template to pack options typedef typename Next::template pack
type; }; template
struct do_pack
{ //Avoid packing "none" to shorten template names typedef Prev type; }; template < class DefaultOptions , class O1 = none , class O2 = none , class O3 = none , class O4 = none , class O5 = none , class O6 = none , class O7 = none , class O8 = none , class O9 = none , class Option10 = none > struct pack_options { // join options typedef typename do_pack < typename do_pack < typename do_pack < typename do_pack < typename do_pack < typename do_pack < typename do_pack < typename do_pack < typename do_pack < typename do_pack < DefaultOptions , O1 >::type , O2 >::type , O3 >::type , O4 >::type , O5 >::type , O6 >::type , O7 >::type , O8 >::type , O9 >::type , Option10 >::type type; }; struct hook_defaults : public pack_options < none , void_pointer
, link_mode
, tag
, optimize_size
, store_hash
, linear
>::type {}; /// @endcond } //namespace intrusive { } //namespace boost { #include
#endif //#ifndef BOOST_INTRUSIVE_OPTIONS_HPP
options.hpp
Page URL
File URL
Prev
16/34
Next
Download
( 12 KB )
Note: The DriveHQ service banners will NOT be displayed if the file owner is a paid member.
Comments
Total ratings:
0
Average rating:
Not Rated
Would you like to comment?
Join DriveHQ
for a free account, or
Logon
if you are already a member.