annotate DEPENDENCIES/generic/include/boost/python/object_items.hpp @ 133:4acb5d8d80b6 tip

Don't fail environmental check if README.md exists (but .txt and no-suffix don't)
author Chris Cannam
date Tue, 30 Jul 2019 12:25:44 +0100
parents 2665513ce2d3
children
rev   line source
Chris@16 1 // Copyright David Abrahams 2002.
Chris@16 2 // Distributed under the Boost Software License, Version 1.0. (See
Chris@16 3 // accompanying file LICENSE_1_0.txt or copy at
Chris@16 4 // http://www.boost.org/LICENSE_1_0.txt)
Chris@16 5 #ifndef OBJECT_ITEMS_DWA2002615_HPP
Chris@16 6 # define OBJECT_ITEMS_DWA2002615_HPP
Chris@16 7
Chris@16 8 # include <boost/python/detail/prefix.hpp>
Chris@16 9
Chris@16 10 # include <boost/python/proxy.hpp>
Chris@16 11 # include <boost/python/object_core.hpp>
Chris@16 12 # include <boost/python/object_protocol.hpp>
Chris@16 13
Chris@16 14 namespace boost { namespace python { namespace api {
Chris@16 15
Chris@16 16 struct const_item_policies
Chris@16 17 {
Chris@16 18 typedef object key_type;
Chris@16 19 static object get(object const& target, object const& key);
Chris@16 20 };
Chris@16 21
Chris@16 22 struct item_policies : const_item_policies
Chris@16 23 {
Chris@16 24 static object const& set(object const& target, object const& key, object const& value);
Chris@16 25 static void del(object const& target, object const& key);
Chris@16 26 };
Chris@16 27
Chris@16 28 //
Chris@16 29 // implementation
Chris@16 30 //
Chris@16 31 template <class U>
Chris@16 32 inline object_item
Chris@16 33 object_operators<U>::operator[](object_cref key)
Chris@16 34 {
Chris@16 35 object_cref2 x = *static_cast<U*>(this);
Chris@16 36 return object_item(x, key);
Chris@16 37 }
Chris@16 38
Chris@16 39 template <class U>
Chris@16 40 inline const_object_item
Chris@16 41 object_operators<U>::operator[](object_cref key) const
Chris@16 42 {
Chris@16 43 object_cref2 x = *static_cast<U const*>(this);
Chris@16 44 return const_object_item(x, key);
Chris@16 45 }
Chris@16 46
Chris@16 47 # if !defined(BOOST_MSVC) || BOOST_MSVC > 1300
Chris@16 48 template <class U>
Chris@16 49 template <class T>
Chris@16 50 inline const_object_item
Chris@16 51 object_operators<U>::operator[](T const& key) const
Chris@16 52 {
Chris@16 53 return (*this)[object(key)];
Chris@16 54 }
Chris@16 55
Chris@16 56 template <class U>
Chris@16 57 template <class T>
Chris@16 58 inline object_item
Chris@16 59 object_operators<U>::operator[](T const& key)
Chris@16 60 {
Chris@16 61 return (*this)[object(key)];
Chris@16 62 }
Chris@16 63 # endif
Chris@16 64
Chris@16 65
Chris@16 66 inline object const_item_policies::get(object const& target, object const& key)
Chris@16 67 {
Chris@16 68 return getitem(target, key);
Chris@16 69 }
Chris@16 70
Chris@16 71 inline object const& item_policies::set(
Chris@16 72 object const& target
Chris@16 73 , object const& key
Chris@16 74 , object const& value)
Chris@16 75 {
Chris@16 76 setitem(target, key, value);
Chris@16 77 return value;
Chris@16 78 }
Chris@16 79
Chris@16 80 inline void item_policies::del(
Chris@16 81 object const& target
Chris@16 82 , object const& key)
Chris@16 83 {
Chris@16 84 delitem(target, key);
Chris@16 85 }
Chris@16 86
Chris@16 87 }}} // namespace boost::python::api
Chris@16 88
Chris@16 89 #endif // OBJECT_ITEMS_DWA2002615_HPP