1 // Copyright David Abrahams 2002. 2 // Distributed under the Boost Software License, Version 1.0. (See 3 // accompanying file LICENSE_1_0.txt or copy at 4 // http://www.boost.org/LICENSE_1_0.txt) 5 #ifndef OBJECT_PROTOCOL_CORE_DWA2002615_HPP 6 # define OBJECT_PROTOCOL_CORE_DWA2002615_HPP 7 8 # include <boost/python/detail/prefix.hpp> 9 10 # include <boost/python/handle_fwd.hpp> 11 12 namespace boost { namespace python { 13 14 namespace api 15 { 16 class object; 17 18 BOOST_PYTHON_DECL object getattr(object const& target, object const& key); 19 BOOST_PYTHON_DECL object getattr(object const& target, object const& key, object const& default_); 20 BOOST_PYTHON_DECL void setattr(object const& target, object const& key, object const& value); 21 BOOST_PYTHON_DECL void delattr(object const& target, object const& key); 22 23 // These are defined for efficiency, since attributes are commonly 24 // accessed through literal strings. 25 BOOST_PYTHON_DECL object getattr(object const& target, char const* key); 26 BOOST_PYTHON_DECL object getattr(object const& target, char const* key, object const& default_); 27 BOOST_PYTHON_DECL void setattr(object const& target, char const* key, object const& value); 28 BOOST_PYTHON_DECL void delattr(object const& target, char const* key); 29 30 BOOST_PYTHON_DECL object getitem(object const& target, object const& key); 31 BOOST_PYTHON_DECL void setitem(object const& target, object const& key, object const& value); 32 BOOST_PYTHON_DECL void delitem(object const& target, object const& key); 33 34 BOOST_PYTHON_DECL object getslice(object const& target, handle<> const& begin, handle<> const& end); 35 BOOST_PYTHON_DECL void setslice(object const& target, handle<> const& begin, handle<> const& end, object const& value); 36 BOOST_PYTHON_DECL void delslice(object const& target, handle<> const& begin, handle<> const& end); 37 } 38 39 using api::getattr; 40 using api::setattr; 41 using api::delattr; 42 43 using api::getitem; 44 using api::setitem; 45 using api::delitem; 46 47 using api::getslice; 48 using api::setslice; 49 using api::delslice; 50 51 }} // namespace boost::python 52 53 #endif // OBJECT_PROTOCOL_CORE_DWA2002615_HPP 54