Gaudi Framework, version v24r2

Home   Generated: Wed Dec 4 2013
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
KeyedTraits.h
Go to the documentation of this file.
1 // $Id: KeyedTraits.h,v 1.3 2006/12/10 20:29:17 leggett Exp $
2 #ifndef GAUDIKERNEL_KEYEDTRAITS_H
3 #define GAUDIKERNEL_KEYEDTRAITS_H
4 
5 #define CHECK_KEYED_CONTAINER
6 
7 // Include files
8 #include <vector>
9 
10 // Forward declarations
11 template <class K> class KeyedObject;
12 template <class T, class M> class KeyedContainer;
13 
14 /*
15  Namespace for Key classes used by the Keyed Container
16 */
17 namespace Containers {
18 
19  // Status enumeration
20  enum {
26  };
27 
28  // Forward declarations
29 
31  template <class CONTAINER, class DATATYPE> struct traits;
33  template <class KEY> struct key_traits;
35  template <class SETUP> class KeyedObjectManager;
36 
40 
44 
49 
52 
64  template < class KEY > struct key_traits {
66  typedef KEY key_type;
73  static key_type makeKey(long k) {return key_type(k); }
74  static key_type makeKey(int k) {return key_type(k); }
76  static long identifier(const key_type& k) {return k; }
78  static long hash(const key_type& key_value) {return key_value; }
80  static void setKey(obj_type* v, const key_type& k) {if(v)v->setKey(k); }
85  static bool checkKey(obj_type* v,const key_type& k) {
86 #ifdef CHECK_KEYED_CONTAINER
87  return (v) ? (hash(v->key())==hash(k)) : false;
88 #else
89  return true;
90 #endif
91  }
93  static long addRef(obj_type* v) { return (v) ? v->addRef() : 0; }
95  static long release(obj_type* v) { return (v) ? v->release() : 0; }
96  };
97 
106  template < class CONTAINER, class DATATYPE >
107  struct traits : public key_traits < typename DATATYPE::key_type >
108  {
110  static bool checkBounds(const std::vector<DATATYPE*>* cnt,
111  const typename DATATYPE::key_type& k) {
112 #ifdef CHECK_KEYED_CONTAINER
113  return size_t(cnt->size()) > size_t(traits::hash(k));
114 #else
115  return true;
116 #endif
117  }
118  };
119 }
120 #endif // GAUDIKERNEL_KEYEDTRAITS_H
121 

Generated at Wed Dec 4 2013 14:33:09 for Gaudi Framework, version v24r2 by Doxygen version 1.8.2 written by Dimitri van Heesch, © 1997-2004