82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | ///////////////////////////////////////////////////////////////////////////// | ||
|  | // | ||
|  | // (C) Copyright Ion Gaztanaga  2009-2013. | ||
|  | // | ||
|  | // 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_DETAIL_IS_STATEFUL_VALUE_TRAITS_HPP | ||
|  | #define BOOST_INTRUSIVE_DETAIL_IS_STATEFUL_VALUE_TRAITS_HPP | ||
|  | 
 | ||
|  | #ifndef BOOST_CONFIG_HPP | ||
|  | #  include <boost/config.hpp> | ||
|  | #endif | ||
|  | 
 | ||
|  | #if defined(BOOST_HAS_PRAGMA_ONCE) | ||
|  | #  pragma once | ||
|  | #endif | ||
|  | 
 | ||
|  | #if defined(_MSC_VER) && (_MSC_VER <= 1310) | ||
|  | 
 | ||
|  | #include <boost/intrusive/detail/mpl.hpp> | ||
|  | 
 | ||
|  | namespace boost { | ||
|  | namespace intrusive { | ||
|  | namespace detail { | ||
|  | 
 | ||
|  | template<class ValueTraits> | ||
|  | struct is_stateful_value_traits | ||
|  | { | ||
|  |    static const bool value = !detail::is_empty<ValueTraits>::value; | ||
|  | }; | ||
|  | 
 | ||
|  | }}} | ||
|  | 
 | ||
|  | #else | ||
|  | 
 | ||
|  | #include <boost/intrusive/detail/function_detector.hpp> | ||
|  | 
 | ||
|  | BOOST_INTRUSIVE_CREATE_FUNCTION_DETECTOR(to_node_ptr, boost_intrusive) | ||
|  | BOOST_INTRUSIVE_CREATE_FUNCTION_DETECTOR(to_value_ptr, boost_intrusive) | ||
|  | 
 | ||
|  | namespace boost { | ||
|  | namespace intrusive { | ||
|  | namespace detail { | ||
|  | 
 | ||
|  | template<class ValueTraits> | ||
|  | struct is_stateful_value_traits | ||
|  | { | ||
|  |    typedef typename ValueTraits::node_ptr       node_ptr; | ||
|  |    typedef typename ValueTraits::pointer        pointer; | ||
|  |    typedef typename ValueTraits::value_type     value_type; | ||
|  |    typedef typename ValueTraits::const_node_ptr const_node_ptr; | ||
|  |    typedef typename ValueTraits::const_pointer  const_pointer; | ||
|  | 
 | ||
|  |    typedef ValueTraits value_traits; | ||
|  | 
 | ||
|  |    static const bool value = | ||
|  |       (boost::intrusive::function_detector::NonStaticFunction == | ||
|  |          (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, node_ptr, to_node_ptr, (value_type&) ))) | ||
|  |       || | ||
|  |       (boost::intrusive::function_detector::NonStaticFunction == | ||
|  |          (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, pointer, to_value_ptr, (node_ptr) ))) | ||
|  |       || | ||
|  |       (boost::intrusive::function_detector::NonStaticFunction == | ||
|  |          (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, const_node_ptr, to_node_ptr, (const value_type&) ))) | ||
|  |       || | ||
|  |       (boost::intrusive::function_detector::NonStaticFunction == | ||
|  |          (BOOST_INTRUSIVE_DETECT_FUNCTION(ValueTraits, boost_intrusive, const_pointer, to_value_ptr, (const_node_ptr) ))) | ||
|  |       ; | ||
|  | }; | ||
|  | 
 | ||
|  | }}} | ||
|  | 
 | ||
|  | #endif | ||
|  | 
 | ||
|  | #endif   //@ifndef BOOST_INTRUSIVE_DETAIL_IS_STATEFUL_VALUE_TRAITS_HPP |