Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r77465 - sandbox-branches/birbacher/propertymap-functormap/boost/property_map
From: frank.birbacher_at_[hidden]
Date: 2012-03-21 18:38:53


Author: birbacher
Date: 2012-03-21 18:38:53 EDT (Wed, 21 Mar 2012)
New Revision: 77465
URL: http://svn.boost.org/trac/boost/changeset/77465

Log:
Implemented property map for boost::function.

Text files modified:
   sandbox-branches/birbacher/propertymap-functormap/boost/property_map/functor_property_map.hpp | 19 +++++++++++++++++++
   1 files changed, 19 insertions(+), 0 deletions(-)

Modified: sandbox-branches/birbacher/propertymap-functormap/boost/property_map/functor_property_map.hpp
==============================================================================
--- sandbox-branches/birbacher/propertymap-functormap/boost/property_map/functor_property_map.hpp (original)
+++ sandbox-branches/birbacher/propertymap-functormap/boost/property_map/functor_property_map.hpp 2012-03-21 18:38:53 EDT (Wed, 21 Mar 2012)
@@ -11,6 +11,8 @@
 #define BOOST_FUNCTOR_PROPERTY_MAP_HPP
 
 #include <boost/property_map/property_map.hpp>
+#include <boost/function/function_fwd.hpp>
+#include <boost/type_traits/add_lvalue_reference.hpp>
 
 namespace boost {
 
@@ -34,6 +36,23 @@
     return PA(f);
   }
 
+#if !defined(BOOST_FUNCTION_NO_FUNCTION_TYPE_SYNTAX)
+ // Preferred syntax
+ template <typename Key, typename Value>
+ struct property_traits<function<Value(Key)> > {
+ typedef Key key_type;
+ typedef Value value_type;
+ typedef typename add_lvalue_reference<Value>::type reference;
+ typedef readable_property_map_tag category;
+ };
+
+ template<typename Key, typename Value>
+ inline Value get(function<Value(Key)> const& f, Key const key)
+ {
+ return f(key);
+ }
+#endif // have partial specialization
+
 } // namespace boost
 
 #endif /* BOOST_FUNCTOR_PROPERTY_MAP_HPP */


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk