123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- #ifndef BOOST_INTRUSIVE_OPTIONS_HPP
- #define BOOST_INTRUSIVE_OPTIONS_HPP
- #include <boost/intrusive/detail/config_begin.hpp>
- #include <boost/intrusive/intrusive_fwd.hpp>
- #include <boost/intrusive/link_mode.hpp>
- #include <boost/intrusive/pack_options.hpp>
- #include <boost/intrusive/detail/mpl.hpp>
- #if defined(BOOST_HAS_PRAGMA_ONCE)
- # pragma once
- #endif
- namespace boost {
- namespace intrusive {
- #ifndef BOOST_INTRUSIVE_DOXYGEN_INVOKED
- struct empty
- {};
- template<class Functor>
- struct fhtraits;
- template<class T, class Hook, Hook T::* P>
- struct mhtraits;
- struct dft_tag;
- struct member_tag;
- template<class SupposedValueTraits>
- struct is_default_hook_tag;
- #endif
- BOOST_INTRUSIVE_OPTION_CONSTANT(constant_time_size, bool, Enabled, constant_time_size)
- BOOST_INTRUSIVE_OPTION_TYPE(header_holder_type, HeaderHolder, HeaderHolder, header_holder_type)
- BOOST_INTRUSIVE_OPTION_TYPE(size_type, SizeType, SizeType, size_type)
- BOOST_INTRUSIVE_OPTION_TYPE(compare, Compare, Compare, compare)
- BOOST_INTRUSIVE_OPTION_TYPE(key_of_value, KeyOfValue, KeyOfValue, key_of_value)
- BOOST_INTRUSIVE_OPTION_CONSTANT(floating_point, bool, Enabled, floating_point)
- BOOST_INTRUSIVE_OPTION_TYPE(equal, Equal, Equal, equal)
- BOOST_INTRUSIVE_OPTION_TYPE(priority, Priority, Priority, priority)
- BOOST_INTRUSIVE_OPTION_TYPE(hash, Hash, Hash, hash)
- BOOST_INTRUSIVE_OPTION_TYPE(value_traits, ValueTraits, ValueTraits, proto_value_traits)
- template< typename Parent
- , typename MemberHook
- , MemberHook Parent::* PtrToMember>
- struct member_hook
- {
- typedef mhtraits <Parent, MemberHook, PtrToMember> member_value_traits;
- template<class Base>
- struct pack : Base
- {
- typedef member_value_traits proto_value_traits;
- };
- };
- BOOST_INTRUSIVE_OPTION_TYPE(function_hook, Functor, fhtraits<Functor>, proto_value_traits)
- BOOST_INTRUSIVE_OPTION_TYPE(base_hook, BaseHook, BaseHook, proto_value_traits)
- BOOST_INTRUSIVE_OPTION_TYPE(void_pointer, VoidPointer, VoidPointer, void_pointer)
- BOOST_INTRUSIVE_OPTION_TYPE(tag, Tag, Tag, tag)
- BOOST_INTRUSIVE_OPTION_CONSTANT(link_mode, link_mode_type, LinkType, link_mode)
- BOOST_INTRUSIVE_OPTION_CONSTANT(optimize_size, bool, Enabled, optimize_size)
- BOOST_INTRUSIVE_OPTION_CONSTANT(linear, bool, Enabled, linear)
- BOOST_INTRUSIVE_OPTION_CONSTANT(cache_last, bool, Enabled, cache_last)
- BOOST_INTRUSIVE_OPTION_TYPE(bucket_traits, BucketTraits, BucketTraits, bucket_traits)
- BOOST_INTRUSIVE_OPTION_CONSTANT(store_hash, bool, Enabled, store_hash)
- BOOST_INTRUSIVE_OPTION_CONSTANT(optimize_multikey, bool, Enabled, optimize_multikey)
- BOOST_INTRUSIVE_OPTION_CONSTANT(power_2_buckets, bool, Enabled, power_2_buckets)
- BOOST_INTRUSIVE_OPTION_CONSTANT(cache_begin, bool, Enabled, cache_begin)
- BOOST_INTRUSIVE_OPTION_CONSTANT(compare_hash, bool, Enabled, compare_hash)
- BOOST_INTRUSIVE_OPTION_CONSTANT(incremental, bool, Enabled, incremental)
- struct hook_defaults
- {
- typedef void* void_pointer;
- static const link_mode_type link_mode = safe_link;
- typedef dft_tag tag;
- static const bool optimize_size = false;
- static const bool store_hash = false;
- static const bool linear = false;
- static const bool optimize_multikey = false;
- };
- }
- }
- #include <boost/intrusive/detail/config_end.hpp>
- #endif
|