ATLAS Offline Software
Loading...
Searching...
No Matches
SGImplSvc.h
Go to the documentation of this file.
1/* -*- C++ -*- */
2
3/*
4 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5*/
6
7#ifndef STOREGATE_SGIMPLSVC_H
8#define STOREGATE_SGIMPLSVC_H
9
10//FIXME the CLASS_DEF header is not needed here but was added to work around
11//bad include statements in client code: when using CLASS_DEF put the
12//include below in your header file!
14
15//base classes
16#include "GaudiKernel/IIncidentListener.h"
17#include "GaudiKernel/Service.h"
18#include "GaudiKernel/ServiceHandle.h"
19#include "GaudiKernel/IConverter.h"
21
22#include <GaudiKernel/ClassID.h> // for CLID
23#include <GaudiKernel/IInterface.h> // for InterfaceID
24#include <GaudiKernel/IMessageSvc.h> // for Level
25#include "GaudiKernel/MsgStream.h"
26#include "Gaudi/Property.h"
27#include "GaudiKernel/StatusCode.h"
28
29#include "GaudiKernel/DataObjID.h"
30
31#include <cstddef> // for size_t
32#include <list>
33#include <memory>
34#include <string>
35#include <sys/types.h> // for off_t
36#include <vector>
37#include <thread>
38
45
46#include <SGTools/StringPool.h>
47#include "SGTools/ProxyMap.h" /* for SG::ConstProxyIterator */
48
49
50// includes used in SGImplSvc.icc
51#include "GaudiKernel/IClassIDSvc.h"
55#include "StoreGate/SGWPtr.h"
58#include "AthAllocators/Arena.h"
59
60#include "GaudiKernel/IIncidentSvc.h"
61
62//forward declarations
63namespace SG {
64 class DataProxy;
65 class TransientAddress;
66 struct RemapImpl;
67 class AuxVectorBase;
68 class AuxElement;
69 class DataStore;
70}
71
72class DataObject;
73class IConversionSvc;
74class Incident;
75class IHistorySvc;
76
77// python forward
78struct _object; typedef _object PyObject;
79class StoreGateSvc;
80namespace AthenaInternal {
81 PyObject* recordObjectToStore(StoreGateSvc*,PyObject*,PyObject*,bool,bool,bool);
82 void py_sg_clearProxyPayload(StoreGateSvc* self, SG::DataProxy*);
83}
84
85namespace SG {
86 class NoAuxStore;
87}
88
89//friends...
91class IOVDbSvc;
92class IOVSvcTool;
93class ActiveStoreSvc;
94namespace SG {
95 class VarHandleBase;
96}
97
106class SGImplSvc final : public extends<Service,
107 IProxyDict,
108 IHiveStoreMgr,
109 IIncidentListener>
110{
111
112public:
113 SGImplSvc (const SGImplSvc&) = delete;
114 SGImplSvc& operator= (const SGImplSvc&) = delete;
115
116
119
120
122 StatusCode retrieve (CLID clid,
123 SG::detail::IteratorBase& cibegin,
124 SG::detail::IteratorBase& ciend) const;
125
126
128
131
132
134 StatusCode recordAddress(const std::string& skey,
136 bool clearAddressFlag=true);
139 bool clearAddressFlag=true);
140
142 StatusCode symLink (const void* p2BRegistered, CLID linkID );
143
145 StatusCode symLink (const CLID id, const std::string& key, const CLID linkid);
146
148 StatusCode setAlias(CLID clid, const std::string& key, const std::string& aliasKey);
149
151 StatusCode setAlias(const void* p2BAliased, const std::string& aliasKey);
152
154 StatusCode setAlias(SG::DataProxy* proxy, const std::string& aliasKey);
155
157 StatusCode setConst(const void* pointer);
158
160 StatusCode remove(const void* pObject);
161
163 StatusCode removeDataAndProxy(const void* pObject);
164
170 bool transientSwap( const CLID& id,
171 const std::string& keyA, const std::string& keyB );
172
174
177
178
179 DataObject*
180 typeless_retrievePrivateCopy (const CLID clid, const std::string& key);
181
182
186 CLID clid( const std::string& key ) const;
187
191 std::vector<CLID> clids( const std::string& key ) const;
192
194 int typeCount(const CLID& id) const;
195
199 bool contains(const CLID id, const std::string& key) const;
200
201
204 bool transientContains(const CLID id, const std::string& key) const;
205
208 std::string dump() const;
209
211 void setStoreID(StoreID::type id);
213 StoreID::type storeID() const;
214
215
223 void
224 keys(const CLID& id, std::vector<std::string>& vkeys,
225 bool includeAlias = false, bool onlyValid = true);
226
228 virtual ::IProxyDict* hiveProxyDict() override final {
229 return this;
230 }
231
233
236
237
239 StatusCode regFcn (const CallBackID& c1,
240 const CallBackID& c2,
241 const IOVSvcCallBackFcn& fcn,
242 bool trigger = false);
243
245 StatusCode regFcn (const std::string& toolName,
246 const CallBackID& c2,
247 const IOVSvcCallBackFcn& fcn,
248 bool trigger = false);
249
251
252
254 virtual SG::DataProxy* proxy(const void* const pTransient) const override final;
255
258 virtual SG::DataProxy* proxy(const CLID& id) const final;
259
261 virtual SG::DataProxy* proxy(const CLID& id, const std::string& key) const override final;
264 virtual SG::DataProxy* proxy(const CLID& id, const char* key) const final
265 { return this->proxy(id, std::string(key)); }
266
268 virtual StatusCode addToStore (CLID id, SG::DataProxy* proxy) override final;
269
290 virtual
292 const std::string& key,
293 bool allowMods,
294 bool returnExisting) override final;
295
296
300 virtual SG::DataProxy* proxy_exact (SG::sgkey_t sgkey) const override final;
301
302
304
306
307
309 virtual SG::DataProxy* proxy(const CLID& id, bool checkValid) const;
312 virtual SG::DataProxy* proxy(const CLID& id, const std::string& key, bool checkValid) const;
316 virtual SG::DataProxy* proxy(const CLID& id, const char* key, bool checkValid) const
317 { return this->proxy(id, std::string(key), checkValid); }
318
320 virtual std::vector<const SG::DataProxy*> proxies() const override final;
321
324
327 SG::DataProxy* transientProxy(const CLID& id, const std::string& key) const;
328
330 DataObject* accessData(const CLID& id) const;
332 DataObject* accessData(const CLID& id, const std::string& key) const;
333
339
340
348 virtual SG::SourceID sourceID (const std::string& key = "EventSelector") const override;
349
352
353
355
364 virtual
365 sgkey_t stringToKey (const std::string& str, CLID clid) override final;
366
374 virtual
375 const std::string* keyToString (sgkey_t key) const override final;
376
385 virtual
386 const std::string* keyToString (sgkey_t key, CLID& clid) const override final;
387
400 virtual
401 void registerKey (sgkey_t key,
402 const std::string& str,
403 CLID clidid) override final;
404
405
413 bool mergeStringPool (const SGImplSvc& other);
414
415
417
420
421
422
430 void remap_impl (sgkey_t source,
431 sgkey_t target,
432 off_t index_offset);
433
434
443 virtual bool tryELRemap (sgkey_t sgkey_in, size_t index_in,
444 sgkey_t& sgkey_out, size_t& index_out) override final;
445
447
450
451 SGImplSvc(const std::string& name, ISvcLocator* svc);
452 virtual ~SGImplSvc() override final;
454
457
458 virtual StatusCode initialize() override final;
459 virtual StatusCode reinitialize() override final;
460 virtual StatusCode start() override final;
461 virtual StatusCode stop() override final;
462 virtual StatusCode finalize() override final;
464
465
468
469
470 virtual void handle(const Incident&) override final;
472 StatusCode loadEventProxies();
474
475
478
479
481 virtual StatusCode clearStore(bool forceRemove=false) override final;
482
485 virtual void commitNewDataObjects() override final;
487
488
495 void setSlotNumber (int slot, int numSlots);
496
497
503 virtual void boundHandle (IResetable* handle) override final;
504
505
511 virtual void unboundHandle (IResetable* handle) override final;
512
513
515 // Const methods:
517
528 virtual
529 StatusCode createObj (IConverter* cvt,
530 IOpaqueAddress* addr,
531 DataObject*& refpObject) override;
532
533
535private:
536
537 StatusCode record_HistObj(const CLID& id, const std::string& key,
538 const std::string& store, bool allowMods,
539 bool resetOnly=true);
540
541
542 friend
543 PyObject*
547 StatusCode typeless_record( DataObject* obj, const std::string& key,
548 const void* const raw_ptr,
549 bool allowMods, bool resetOnly=true,
550 bool noHist=false );
552 StatusCode typeless_overwrite( const CLID& id,
553 DataObject* obj, const std::string& key,
554 const void* const raw_ptr,
555 bool allowMods,
556 bool noHist=false,
557 const std::type_info* tinfo=0);
558
559 StatusCode typeless_record( DataObject* obj, const std::string& key,
560 const void* const raw_ptr,
561 bool allowMods, bool resetOnly,
562 bool noHist,
563 const std::type_info* tinfo);
564 StatusCode typeless_record( DataObject* obj, const std::string& key,
565 const void* const raw_ptr,
566 bool allowMods, bool resetOnly,
567 bool noHist,
568 const std::type_info* tinfo,
569 SG::DataProxy** proxy_ret,
570 bool noOverwrite);
571
574 SG::DataProxy* record_impl( DataObject* obj, const std::string& key,
575 const void* const raw_ptr,
576 bool allowMods, bool resetOnly, bool allowOverwrite,
577 const std::type_info* tinfo);
578
579
582 void releaseObject(const CLID& id, const std::string& key);
583
585 friend class IOVDbSvc;
586 friend class IOVSvcTool;
587 friend
588 void
593
596 bool checkValid = false) const;
597
599 friend class AthenaOutputStream;
601 StatusCode proxyRange(const CLID& id,
604
605 friend class StoreGateSvc;
607 friend class SG::VarHandleBase;
608
609 SG::DataStore* store();
611
612 bool isSymLinked(const CLID& linkID, SG::DataProxy* dp);
613
614 StatusCode addSymLink(const CLID& linkid, SG::DataProxy* dp);
615
616 StatusCode addAlias(const std::string& aliasKey, SG::DataProxy* dp);
617
619 std::string createKey(const CLID& dataID);
620
622 SG::DataProxy* setupProxy(const CLID& dataID,
623 const std::string& gK,
624 DataObject* pDObj,
625 bool allowMods,
626 bool resetOnly);
627
629 void recycle(DataObject* pBadDObj);
631 void emptyTrash();
632
634 bool bindHandleToProxy(const CLID& id, const std::string& key,
635 IResetable* ir, SG::DataProxy*& dp);
636
638 bool bindHandleToProxyAndRegister (const CLID& id, const std::string& key,
639 IResetable* ir, SG::DataProxy *&dp);
640 bool bindHandleToProxyAndRegister (const CLID& id, const std::string& key,
641 IResetable* ir, SG::DataProxy *&dp,
642 const CallBackID& c,
644 bool trigger);
645
649 StatusCode removeProxy(SG::DataProxy* proxy, const void* pTrans,
650 bool forceRemove=false);
652 StatusCode t2pRegister(const void* const pTrans, SG::DataProxy* const pPers);
654 void t2pRemove(const void* const pTrans);
655
657 void msg_update_handler(Gaudi::Details::PropertyBase& outputLevel);
658
659 bool associateAux_impl (SG::AuxVectorBase* ptr,
660 const std::string& key,
661 CLID auxclid) const;
662
663 bool associateAux_impl (SG::AuxElement* ptr,
664 const std::string& key,
665 CLID auxclid) const;
666
668 void addAutoSymLinks (const std::string& key, CLID clid, SG::DataProxy* dp,
669 const std::type_info* tinfo,
670 bool warn_nobib = true);
671
672 friend class ActiveStoreSvc;
676 void makeCurrent();
677
680
682 // Has to be separate from handle due to setProxyProviderSvc() interface.
683 // Can we get rid of that?
685
687
689 std::list<DataObject*> m_trash;
690
691 ServiceHandle<IIncidentSvc> m_pIncSvc;
695
696 // typedef std::list<std::string> StrList;
697 StringArrayProperty m_folderNameList;
698
701
703
704 SG::StringPool m_stringpool;
705
706 SG::RemapImpl* m_remap_impl;
707
709 SG::Arena m_arena;
710
713
716
722
723 typedef std::recursive_mutex mutex_t;
728};
729
730
732void SG_dump (SGImplSvc* sg);
733void SG_dump (SGImplSvc* sg, const char* fname);
734
735
736#include "StoreGate/tools/SGImplSvc.icc"
737
738#endif // STOREGATE_SGIMPLSVC_H
Collection of memory allocators with a common lifetime, plus subsystem summary.
macros to associate a CLID to a type
ProxyMap::const_iterator ConstProxyIterator
Definition ProxyMap.h:24
uint32_t CLID
The Class ID type.
defines and typedefs for IOVSvc
boost::function< StatusCode(IOVSVC_CALLBACK_ARGS) > IOVSvcCallBackFcn
the type of an IOVSvc call back: it wraps both the method and the object the method is called on
Definition IOVSvcDefs.h:58
_object PyObject
Simple smart pointer for Gaudi-style refcounted objects.
void SG_dump(SGImplSvc *sg)
These are intended to be easy to call from the debugger.
A standard conforming forward iterator over items in StoreGate.
associate a data object with its VersionedKey
defines a StoreGateSvc key with a version number
return type of StoreGateSvc::create.
Maintain a mapping of strings to 64-bit ints.
A service that caches a pointer to the currently active store.
algorithm that marks for write data objects in SG
Simple smart pointer for Gaudi-style refcounted objects.
DataProxy provides the registry services for StoreGate.
Hold DataProxy instances associated with a store.
Abstract interface for IOVSvc.
Definition IIOVSvc.h:41
Athena service for Interval Of Validity database.
Definition IOVDbSvc.h:82
a resetable object (e.g.
Definition IResetable.h:15
Abstract interface for looking up strings/CLIDs in a pool.
Definition IStringPool.h:28
virtual SG::DataProxy * proxy(const void *const pTransient) const override final
get proxy for a given data object address in memory
virtual bool tryELRemap(sgkey_t sgkey_in, size_t index_in, sgkey_t &sgkey_out, size_t &index_out) override final
Test to see if the target of an ElementLink has moved.
std::recursive_mutex mutex_t
Definition SGImplSvc.h:723
void addAutoSymLinks(const std::string &key, CLID clid, SG::DataProxy *dp, const std::type_info *tinfo, bool warn_nobib=true)
Add automatically-made symlinks for DP.
void setStoreID(StoreID::type id)
set store ID. request forwarded to DataStore:
StatusCode t2pRegister(const void *const pTrans, SG::DataProxy *const pPers)
forwarded to DataStore
friend class ActiveStoreSvc
Definition SGImplSvc.h:672
StatusCode symLink(const void *p2BRegistered, CLID linkID)
make a soft link to the object T* already registered
StatusCode typeless_record(DataObject *obj, const std::string &key, const void *const raw_ptr, bool allowMods, bool resetOnly=true, bool noHist=false)
type-less recording of an object with a key, allow possibility of specifying const-access and history...
virtual void boundHandle(IResetable *handle) override final
Tell the store that a proxy has been bound to a handle.
friend class SG::VarHandleBase
access typeless_record
Definition SGImplSvc.h:607
IProxyProviderSvc * proxyProviderSvc()
Return current ProxyProviderSvc.
DataObject * typeless_retrievePrivateCopy(const CLID clid, const std::string &key)
virtual sgkey_t stringToKey(const std::string &str, CLID clid) override final
Find the key for a string/CLID pair.
StatusCode remove(const void *pObject)
Remove pObject, will remove its proxy if not reset only.
virtual void handle(const Incident &) override final
triggered by Incident service
SG::DataProxy * locatePersistent(const SG::TransientAddress *tAddr, bool checkValid=false) const
virtual std::vector< const SG::DataProxy * > proxies() const override final
return the list of all current proxies in store
StatusCode setAlias(CLID clid, const std::string &key, const std::string &aliasKey)
make an alias to a DataObject (provide data type and old key)
friend class AthenaOutputStream
access proxyRange()
Definition SGImplSvc.h:599
virtual SG::DataProxy * recordObject(SG::DataObjectSharedPtr< DataObject > obj, const std::string &key, bool allowMods, bool returnExisting) override final
Record an object in the store.
StatusCode loadEventProxies()
load proxies at begin event
void keys(const CLID &id, std::vector< std::string > &vkeys, bool includeAlias=false, bool onlyValid=true)
provide list of all StoreGate keys associated with an object.
SG::DataStore * store()
SG::RemapImpl * m_remap_impl
Definition SGImplSvc.h:706
int m_slotNumber
The Hive slot number for this store, or -1 if this isn't a Hive store.
Definition SGImplSvc.h:712
friend class IOVSvcTool
Definition SGImplSvc.h:586
ServiceHandle< IProxyProviderSvc > m_pPPSHandle
Definition SGImplSvc.h:681
virtual StatusCode finalize() override final
Service finalization.
friend class StoreGateSvc
Definition SGImplSvc.h:605
std::map< std::thread::id, std::vector< IResetable * > > m_newBoundHandles
Keep track of proxies bound since the last call to commitNewDataObjects or clearStore.
Definition SGImplSvc.h:721
virtual SG::SourceID sourceID(const std::string &key="EventSelector") const override
Return the metadata source ID for the current event slot.
StatusCode setConst(const void *pointer)
prevent downstream clients from modifying the pointed-at dobj
virtual StatusCode createObj(IConverter *cvt, IOpaqueAddress *addr, DataObject *&refpObject) override
Call converter to create an object, with locking.
bool m_DumpStore
Dump Property flag: triggers dump() at EndEvent.
Definition SGImplSvc.h:692
StatusCode regFcn(const CallBackID &c1, const CallBackID &c2, const IOVSvcCallBackFcn &fcn, bool trigger=false)
register a callback function(2) with an already registered function(1)
bool m_ActivateHistory
Activate the history service.
Definition SGImplSvc.h:693
CLID clid(const std::string &key) const
Retrieve the main CLID of the object recorded in StoreGate with the given "key" WARNING: slow!
void msg_update_handler(Gaudi::Details::PropertyBase &outputLevel)
callback for output level property
SG::StringPool m_stringpool
Definition SGImplSvc.h:704
virtual StatusCode start() override final
Service start.
mutex_t m_mutex
Definition SGImplSvc.h:725
std::string createKey(const CLID &dataID)
creates a key internally if none specified by client
bool m_DumpArena
DumpArena Property flag : trigger m_arena->report() at clearStore.
Definition SGImplSvc.h:694
StatusCode removeProxy(SG::DataProxy *proxy, const void *pTrans, bool forceRemove=false)
remove proxy from store, unless it is reset only.
StoreID::type storeID() const
get store ID. request forwarded to DataStore:
StatusCode proxyRange(const CLID &id, SG::ConstProxyIterator &beg, SG::ConstProxyIterator &end) const
return a range to all proxies of a given CLID
bool bindHandleToProxyAndRegister(const CLID &id, const std::string &key, IResetable *ir, SG::DataProxy *&dp)
Also do registration with IOVSvc.
void remap_impl(sgkey_t source, sgkey_t target, off_t index_offset)
Declare a remapping.
virtual void registerKey(sgkey_t key, const std::string &str, CLID clidid) override final
Remember an additional mapping from key to string/CLID.
StatusCode addSymLink(const CLID &linkid, SG::DataProxy *dp)
SG::Arena m_arena
Allocation arena to associate with this store.
Definition SGImplSvc.h:709
virtual StatusCode clearStore(bool forceRemove=false) override final
clear DataStore contents: called by the event loop mgrs
bool isSymLinked(const CLID &linkID, SG::DataProxy *dp)
bool bindHandleToProxy(const CLID &id, const std::string &key, IResetable *ir, SG::DataProxy *&dp)
name says it all
std::lock_guard< mutex_t > lock_t
Definition SGImplSvc.h:724
IProxyProviderSvc * m_pPPS
Definition SGImplSvc.h:684
virtual void commitNewDataObjects() override final
Reset handles added since the last call to commit.
int typeCount(const CLID &id) const
Return the number of instances of type T (input CLID)
virtual StatusCode stop() override final
Service stop.
void t2pRemove(const void *const pTrans)
forwarded to DataStore
virtual StatusCode addToStore(CLID id, SG::DataProxy *proxy) override final
Raw addition of a proxy to the store.
SG::DataStore * m_pStore
Definition SGImplSvc.h:688
StatusCode recordAddress(const std::string &skey, CxxUtils::RefCountedPtr< IOpaqueAddress > pAddress, bool clearAddressFlag=true)
Create a proxy object using an IOpaqueAddress and a transient key.
StatusCode record_HistObj(const CLID &id, const std::string &key, const std::string &store, bool allowMods, bool resetOnly=true)
virtual const std::string * keyToString(sgkey_t key) const override final
Find the string corresponding to a given key.
friend PyObject * AthenaInternal::recordObjectToStore(StoreGateSvc *, PyObject *, PyObject *, bool, bool, bool)
void clearProxyPayload(SG::DataProxy *)
use to reset a proxy (clearing the data object it contains) Unlike DataProxy::reset this method corre...
StatusCode removeDataAndProxy(const void *pObject)
Remove pObject and its proxy no matter what.
mutex_t m_stringPoolMutex
Definition SGImplSvc.h:727
virtual::IProxyDict * hiveProxyDict() override final
implements IHiveStore interface for compat with Hive
Definition SGImplSvc.h:228
StringArrayProperty m_folderNameList
FolderNameList Property.
Definition SGImplSvc.h:697
SG::DataProxy * setupProxy(const CLID &dataID, const std::string &gK, DataObject *pDObj, bool allowMods, bool resetOnly)
try to locate a proxy or create it if needed
std::vector< CLID > clids() const
Return all CLIDs in the store.
std::list< DataObject * > m_trash
The Recycle Bin.
Definition SGImplSvc.h:689
ServiceHandle< IHistorySvc > m_pHistorySvc
Definition SGImplSvc.h:686
void releaseObject(const CLID &id, const std::string &key)
release object held by proxy, if any.
IStringPool::sgkey_t sgkey_t
Definition SGImplSvc.h:354
ServiceHandle< IIOVSvc > m_pIOVSvc
get the IOVSvc "just in time" (breaks recursion at initialize)
Definition SGImplSvc.h:700
void makeCurrent()
The current store is becoming the active store.
SGImplSvc(const SGImplSvc &)=delete
virtual SG::DataProxy * proxy(const CLID &id, const char *key, bool checkValid) const
get proxy with given id and key, optionally checking validity.
Definition SGImplSvc.h:316
int m_numSlots
The total number of slots. 1 if this isn't a Hive store.
Definition SGImplSvc.h:715
bool mergeStringPool(const SGImplSvc &other)
Merge the string pool from another store into this one.
DataObject * accessData(const CLID &id) const
find proxy and access its data. Returns 0 to flag failure
void recycle(DataObject *pBadDObj)
put a bad (unrecordable) dobj away
SGImplSvc & operator=(const SGImplSvc &)=delete
virtual StatusCode reinitialize() override final
Service reinitialization.
void setProxyProviderSvc(IProxyProviderSvc *pPPSvc)
associate ProxyProviderSvc to this store
bool m_storeLoaded
FIXME hack needed by loadEventProxies.
Definition SGImplSvc.h:702
virtual SG::DataProxy * proxy_exact(SG::sgkey_t sgkey) const override final
Get proxy given a hashed key+clid.
ServiceHandle< IClassIDSvc > m_pCLIDSvc
Definition SGImplSvc.h:678
friend void AthenaInternal::py_sg_clearProxyPayload(StoreGateSvc *, SG::DataProxy *)
bool transientContains(const CLID id, const std::string &key) const
Look up a transient data object in TDS only by CLID.
ServiceHandle< IIncidentSvc > m_pIncSvc
property
Definition SGImplSvc.h:691
std::string dump() const
dump objects in store.
StatusCode addAlias(const std::string &aliasKey, SG::DataProxy *dp)
bool contains(const CLID id, const std::string &key) const
Look up a keyed object in TDS by CLID.
virtual SG::DataProxy * proxy(const CLID &id, const char *key) const final
get proxy with given id and key.
Definition SGImplSvc.h:264
friend class IOVDbSvc
access clearProxyPayload
Definition SGImplSvc.h:585
bool transientSwap(const CLID &id, const std::string &keyA, const std::string &keyB)
swap the content of 2 keys payload A indexed by keyA will now be accessed via keyB and vice versa Not...
mutex_t m_remapMutex
Definition SGImplSvc.h:726
void setSlotNumber(int slot, int numSlots)
Set the Hive slot number for this store.
StatusCode retrieve(CLID clid, SG::detail::IteratorBase &cibegin, SG::detail::IteratorBase &ciend) const
Retrieve all objects of type T: returns an SG::ConstIterator range.
virtual void unboundHandle(IResetable *handle) override final
Tell the store that a handle has been unbound from a proxy.
SG::DataProxy * transientProxy(const CLID &id, const std::string &key) const
get proxy with given id and key.
bool associateAux_impl(SG::AuxVectorBase *ptr, const std::string &key, CLID auxclid) const
virtual StatusCode initialize() override final
Service initialization.
StatusCode typeless_overwrite(const CLID &id, DataObject *obj, const std::string &key, const void *const raw_ptr, bool allowMods, bool noHist=false, const std::type_info *tinfo=0)
same as typeless_record, allows to overwrite an object in memory or on disk
SG::DataProxy * record_impl(DataObject *obj, const std::string &key, const void *const raw_ptr, bool allowMods, bool resetOnly, bool allowOverwrite, const std::type_info *tinfo)
real recording of an object with a key, allow possibility of specifying const-access
void emptyTrash()
throw away bad objects
ServiceHandle< IConversionSvc > m_pDataLoader
Definition SGImplSvc.h:679
Base class for elements of a container that can have aux data.
Definition AuxElement.h:483
Manage index tracking and synchronization of auxiliary data.
Hold DataProxy instances associated with a store.
Mark that there's no associated AuxStore class.
Base class for VarHandle types.
Implementation class, not to be used directly Iterates over valid proxies it the range.
Definition SGIterator.h:37
The Athena Transient Store API.
STL class.
STL class.
int ir
counter of the current depth
Definition fastadd.cxx:49
PyObject * recordObjectToStore(StoreGateSvc *, PyObject *, PyObject *, bool, bool, bool)
record object to storegate
void py_sg_clearProxyPayload(StoreGateSvc *self, SG::DataProxy *)
=============================================================================
Forward declaration.
CxxUtils::RefCountedPtr< T > DataObjectSharedPtr
uint32_t sgkey_t
Type used for hashed StoreGate key+CLID pairs.
Definition sgkey_t.h:32
STL namespace.
#define private