The Gaudi Framework  v30r3 (a5ef0a68)
KeyedObjectManager.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_KEYEDOBJECTMANAGER_H
2 #define GAUDIKERNEL_KEYEDOBJECTMANAGER_H
3 
4 // Framework include files
5 #include "GaudiKernel/ClassID.h"
6 #include "GaudiKernel/Kernel.h"
8 
9 // STL includes
10 #include <vector>
11 
12 // Forward declarations
14 class ContainedObject;
15 
18 namespace Containers
19 {
20 
22  typedef long ( *MANIPULATOR )( void* );
26  struct GAUDI_API map;
28  struct GAUDI_API array;
30  struct GAUDI_API vector;
31 
45  template <class SETUP>
47  {
48  private:
51  seq_type* m_seq;
53  mutable long m_direct;
54  mutable long m_keyCtxt;
55  union {
57  char buffer[128];
58  SETUP* s;
59  } m_setup;
60 
62  void onDirty() const;
63 
64  public:
69  virtual ~KeyedObjectManager();
71  void clearDirect();
73  long insertDirect( ObjectContainerBase* b, ContainedObject* c, void* o, long k );
75  long isDirect() const { return m_direct; }
77  void* object( long key ) const;
79  long insert( ObjectContainerBase* b, ContainedObject* c, void* o, long* k );
81  long insert( ObjectContainerBase* b, ContainedObject* c, void* o, long k );
83  void* erase( long key, const void* obj );
85  long erase( seq_type::iterator beg, seq_type::iterator end );
87  void reserve( long size );
89  void clear();
91  void setup( void* seq, void** rndm );
93  static CLID classID();
94  };
95 
104 }
105 #endif // GAUDIKERNEL_KEYEDOBJECTMANAGER_H
constexpr struct Gaudi::Functional::details::insert_t insert
Containers namespace.
constexpr auto size(const C &c) noexcept(noexcept(c.size())) -> decltype(c.size())
KeyedObjectManager< vector > Vector
Forward declaration of specialized std::vector-like object manager.
unsigned int CLID
Class ID definition.
Definition: ClassID.h:8
std::vector< void * > seq_type
long(* MANIPULATOR)(void *)
Object manipulator type definition.
All classes that their objects may be contained in an LHCb ObjectContainer (e.g.
KeyedObjectManager< hashmap > HashMap
Forward declaration of specialized std::hashmap-like object manager.
KeyedObjectManager Class to manage keyed objects.
long isDirect() const
Check if the container is dirty.
ObjectContainerBase is the base class for Gaudi container classes.
KeyedObjectManager< array > Array
Forward declaration of specialized redirection array object manager.
#define GAUDI_API
Definition: Kernel.h:104
KeyedObjectManager< map > Map
Forward declaration of specialized std::map-like object manager.
seq_type * m_seq
Container holding array like container.