91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			91 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| // Copyright David Abrahams 2002.
 | |
| // 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)
 | |
| #ifndef OBJECT_PROTOCOL_DWA2002615_HPP
 | |
| # define OBJECT_PROTOCOL_DWA2002615_HPP
 | |
| 
 | |
| # include <boost/python/detail/prefix.hpp>
 | |
| 
 | |
| # include <boost/python/object_protocol_core.hpp>
 | |
| # include <boost/python/object_core.hpp>
 | |
| 
 | |
| # include <boost/detail/workaround.hpp>
 | |
| 
 | |
| namespace boost { namespace python { namespace api {
 | |
| 
 | |
| # if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
 | |
| // attempt to use SFINAE to prevent functions accepting T const& from
 | |
| // coming up as ambiguous with the one taking a char const* when a
 | |
| // string literal is passed
 | |
| #  define BOOST_PYTHON_NO_ARRAY_ARG(T)             , T (*)() = 0
 | |
| # else 
 | |
| #  define BOOST_PYTHON_NO_ARRAY_ARG(T) 
 | |
| # endif
 | |
| 
 | |
| template <class Target, class Key>
 | |
| object getattr(Target const& target, Key const& key BOOST_PYTHON_NO_ARRAY_ARG(Key))
 | |
| {
 | |
|     return getattr(object(target), object(key));
 | |
| }
 | |
| 
 | |
| template <class Target, class Key, class Default>
 | |
| object getattr(Target const& target, Key const& key, Default const& default_ BOOST_PYTHON_NO_ARRAY_ARG(Key))
 | |
| {
 | |
|     return getattr(object(target), object(key), object(default_));
 | |
| }
 | |
| 
 | |
| 
 | |
| template <class Key, class Value>
 | |
| void setattr(object const& target, Key const& key, Value const& value BOOST_PYTHON_NO_ARRAY_ARG(Key))
 | |
| {
 | |
|     setattr(target, object(key), object(value));
 | |
| }
 | |
| 
 | |
| template <class Key>
 | |
| void delattr(object const& target, Key const& key BOOST_PYTHON_NO_ARRAY_ARG(Key))
 | |
| {
 | |
|     delattr(target, object(key));
 | |
| }
 | |
| 
 | |
| template <class Target, class Key>
 | |
| object getitem(Target const& target, Key const& key BOOST_PYTHON_NO_ARRAY_ARG(Key))
 | |
| {
 | |
|     return getitem(object(target), object(key));
 | |
| }
 | |
| 
 | |
| 
 | |
| template <class Key, class Value>
 | |
| void setitem(object const& target, Key const& key, Value const& value BOOST_PYTHON_NO_ARRAY_ARG(Key))
 | |
| {
 | |
|     setitem(target, object(key), object(value));
 | |
| }
 | |
| 
 | |
| template <class Key>
 | |
| void delitem(object const& target, Key const& key BOOST_PYTHON_NO_ARRAY_ARG(Key))
 | |
| {
 | |
|     delitem(target, object(key));
 | |
| }
 | |
| 
 | |
| template <class Target, class Begin, class End>
 | |
| object getslice(Target const& target, Begin const& begin, End const& end)
 | |
| {
 | |
|     return getslice(object(target), object(begin), object(end));
 | |
| }
 | |
| 
 | |
| template <class Begin, class End, class Value>
 | |
| void setslice(object const& target, Begin const& begin, End const& end, Value const& value)
 | |
| {
 | |
|     setslice(target, object(begin), object(end), object(value));
 | |
| }
 | |
| 
 | |
| template <class Begin, class End>
 | |
| void delslice(object const& target, Begin const& begin, End const& end)
 | |
| {
 | |
|     delslice(target, object(begin), object(end));
 | |
| }
 | |
| 
 | |
| }}} // namespace boost::python::api
 | |
| 
 | |
| #endif // OBJECT_PROTOCOL_DWA2002615_HPP
 | 
