LEMUR Packages: ompl_lemur or_lemur pr_bgl prpy_lemur
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Groups Pages
flag_set_map.h
Go to the documentation of this file.
1 
9 namespace pr_bgl
10 {
11 
19 template <class PropMap, class FlagMap>
21 {
22 public:
23  typedef typename boost::property_traits<PropMap>::category category;
24  typedef typename boost::property_traits<PropMap>::key_type key_type;
25  typedef typename boost::property_traits<PropMap>::value_type value_type;
26  typedef typename boost::property_traits<PropMap>::reference reference;
27  PropMap prop_map;
28  FlagMap flag_map;
29  flag_set_map(PropMap prop_map, FlagMap flag_map):
30  prop_map(prop_map), flag_map(flag_map)
31  {}
32 };
33 
34 template <class PropMap, class FlagMap>
36 make_flag_set_map(PropMap prop_map, FlagMap flag_map)
37 {
38  return flag_set_map<PropMap,FlagMap>(prop_map, flag_map);
39 }
40 
41 template <class PropMap, class FlagMap>
42 inline const typename flag_set_map<PropMap,FlagMap>::value_type
43 get(const flag_set_map<PropMap,FlagMap> & fs_map,
44  const typename flag_set_map<PropMap,FlagMap>::key_type & key)
45 {
46  put(fs_map.flag_map, key, true);
47  return get(fs_map.prop_map, key);
48 }
49 
50 template <class PropMap, class FlagMap>
51 inline void
52 put(const flag_set_map<PropMap,FlagMap> & fs_map,
53  const typename flag_set_map<PropMap,FlagMap>::key_type & key,
54  const typename flag_set_map<PropMap,FlagMap>::value_type & value)
55 {
56  put(fs_map.flag_map, key, true);
57  put(fs_map.prop_map, key, value);
58 }
59 
60 } // namespace pr_bgl
Wrapper for a readable property map which sets a flag when accessed.
Definition: flag_set_map.h:20