CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AssociationMapHelpers.h
Go to the documentation of this file.
1 #ifndef DataFormats_Common_AssociationMapKeyVal_h
2 #define DataFormats_Common_AssociationMapKeyVal_h
3 /*
4  *
5  * helper classes for AssociationMap
6  *
7  * \author Luca Lista, INFN
8  *
9  *
10  */
12 
13 #include <utility>
14 
15 namespace edm {
16 
17  class EDProductGetter;
18 
19  namespace helpers {
20  template<typename K, typename V>
21  struct KeyVal {
22  typedef K key_type;
23  typedef V value_type;
24  KeyVal() : key(), val() { }
25  KeyVal(const K & k, const V & v) : key(k), val(v) { }
26 #if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
27  template<typename K_, typename V_>
28  KeyVal(K_&& k, V_&& v) : key(std::forward<K_>(k)),val(std::forward<V_>(v)){}
29 
30  KeyVal(EDProductGetter const* getter) : key(ProductID(), getter), val(ProductID(), getter) { }
31 #endif
32 
33  K key;
34  V val;
35  };
36 
37  template<typename K>
38  struct Key {
39  typedef K key_type;
40  Key() { }
41  Key(const K & k) : key(k) { }
42 #if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__)
43  template<typename K_>
44  Key(K_&& k) : key(std::forward<K_>(k)) { }
45 
46  Key(EDProductGetter const* getter) : key(ProductID(), getter) { }
47 #endif
48 
49  K key;
50  };
51 
53  template<typename RP, typename R>
54  void checkRef(const RP & rp, const R & r) {
55  if (rp.id() != r.id()) {
57  }
58  }
59  }
60 }
61 
62 #endif
static void throwThis(Code category, char const *message0="", char const *message1="", char const *message2="", char const *message3="", char const *message4="")
KeyVal(const K &k, const V &v)
Key(EDProductGetter const *getter)
void checkRef(const RP &rp, const R &r)
throw if r hasn&#39;t the same id as rp
KeyVal(EDProductGetter const *getter)