1 #ifndef GAUDIKERNEL_REGISTRYENTRY_H
2 #define GAUDIKERNEL_REGISTRYENTRY_H
8 #include "GaudiKernel/Kernel.h"
9 #include "GaudiKernel/IRegistry.h"
10 #include <boost/utility/string_ref.hpp>
37 typedef std::vector<IRegistry*> Store;
39 friend class ::DataSvc;
41 typedef Store::const_iterator
Iterator;
44 unsigned long m_refCount = 0;
46 bool m_isSoft =
false;
48 std::string m_fullpath;
52 RegistryEntry* m_pParent =
nullptr;
68 void assemblePath(std::string& buffer)
const;
73 RegistryEntry* i_find ( boost::string_ref
path )
const;
75 RegistryEntry* i_find (
const DataObject* pObject )
const;
77 RegistryEntry* i_create ( std::string
name );
79 long i_add ( RegistryEntry* entry );
81 void setParent(RegistryEntry* pParent);
84 m_pDataProviderSvc =
s;
87 virtual RegistryEntry* parentEntry() {
91 RegistryEntry* findLeaf(boost::string_ref
path)
const {
95 RegistryEntry* findLeaf(
const DataObject* key)
const {
108 RegistryEntry(std::string
path, RegistryEntry* parent =
nullptr);
110 ~RegistryEntry()
override;
112 unsigned long release()
override;
114 unsigned long addRef()
override {
118 const std::string&
name()
const override {
122 const std::string& identifier()
const override {
127 return m_pDataProviderSvc;
142 virtual bool isSoft()
const {
146 const Store& leaves()
const {
150 virtual int size()
const {
151 return m_store.size();
154 virtual bool isEmpty()
const {
155 return m_store.size() == 0;
158 virtual Iterator
begin ()
const {
159 return m_store.begin();
162 virtual Iterator
end ()
const {
163 return m_store.end();
179 virtual long add(
const std::string&
name,
181 bool is_soft =
false);
183 virtual long add(
const std::string&
name,
185 bool is_soft =
false);
187 virtual long remove(
const std::string&
name);
193 virtual long deleteElements();
198 #endif // GAUDIKERNEL_REGISTRYENTRY_H
auto begin(reverse_wrapper< T > &w)
Data provider interface definition.
auto end(reverse_wrapper< T > &w)
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Generic data agent interface.
boost::spirit::classic::position_iterator2< ForwardIterator > Iterator
Opaque address interface definition.
A DataObject is the base class of any identifiable object on any data store.