summaryrefslogtreecommitdiff
path: root/utils/lvalue_pmap.h
diff options
context:
space:
mode:
authorgraehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-08-27 19:26:31 +0000
committergraehl <graehl@ec762483-ff6d-05da-a07a-a48fb63a330f>2010-08-27 19:26:31 +0000
commit1eab70e16f0e0d5531f3babfea2062c82f6362e1 (patch)
treea1ea1930e585b9356c6e089465baa969bb6919bb /utils/lvalue_pmap.h
parent6ddaff1341e565dd91dca7ea763d0ea4d897f4c7 (diff)
compiles
git-svn-id: https://ws10smt.googlecode.com/svn/trunk@626 ec762483-ff6d-05da-a07a-a48fb63a330f
Diffstat (limited to 'utils/lvalue_pmap.h')
-rwxr-xr-xutils/lvalue_pmap.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/utils/lvalue_pmap.h b/utils/lvalue_pmap.h
index 03ddf5e7..5b9403c0 100755
--- a/utils/lvalue_pmap.h
+++ b/utils/lvalue_pmap.h
@@ -3,7 +3,7 @@
#include <boost/property_map/property_map.hpp>
-// i checked: boost provides get and put given []
+// i checked: boost provides get and put given [] - but it's not being found by ADL so instead i define them myself
// lvalue property map pmapname<P> that is: P p; valtype &v=p->name;
#define PMAP_MEMBER_INDIRECT(pmapname,valtype,name) template <class P> struct pmapname { \
@@ -12,6 +12,9 @@
typedef value_type & reference; \
typedef boost::lvalue_property_map_tag category; \
reference operator[](key_type p) const { return p->name; } \
+ typedef pmapname<P> self_type; \
+ friend inline value_type const& get(self_type const&,key_type p) { return p->name; } \
+ friend inline void put(self_type &,key_type p,value_type const& v) { p->name = v; } \
};
#define PMAP_MEMBER_INDIRECT_2(pmapname,name) template <class P,class R> struct pmapname { \
@@ -20,6 +23,9 @@
typedef value_type & reference; \
typedef boost::lvalue_property_map_tag category; \
reference operator[](key_type p) const { return p->name; } \
+ typedef pmapname<P,R> self_type; \
+ friend inline value_type const& get(self_type const&,key_type p) { return p->name; } \
+ friend inline void put(self_type &,key_type p,value_type const& v) { p->name = v; } \
};
#endif