The Gaudi Framework  v30r3 (a5ef0a68)
IDataProviderSvc.h
Go to the documentation of this file.
1 #ifndef GAUDIKERNEL_IDATAPROVIDERSVC_H
2 #define GAUDIKERNEL_IDATAPROVIDERSVC_H
3 
4 // Framework include files
6 
7 // C/C++ include files
8 #include "boost/utility/string_ref.hpp"
9 #include <string>
10 
11 // Forward declarations
12 class DataObject;
13 class IOpaqueAddress;
14 class IRegistry;
15 class DataStoreItem;
16 
46 class GAUDI_API IDataProviderSvc : virtual public IInterface
47 {
48 public:
51 
52  enum { SEPARATOR = '/' };
53 
61  virtual StatusCode registerObject( boost::string_ref fullPath, DataObject* pObject ) = 0;
62 
71  virtual StatusCode registerObject( boost::string_ref parentPath, boost::string_ref objectPath,
72  DataObject* pObject ) = 0;
73 
82  virtual StatusCode registerObject( boost::string_ref parentPath, int item, DataObject* pObject ) = 0;
83 
92  virtual StatusCode registerObject( DataObject* parentObj, boost::string_ref objectPath, DataObject* pObject ) = 0;
93 
102  virtual StatusCode registerObject( DataObject* parentObj, int item, DataObject* pObject ) = 0;
103 
117  virtual StatusCode unregisterObject( boost::string_ref fullPath ) = 0;
118 
133  virtual StatusCode unregisterObject( boost::string_ref parentPath, boost::string_ref objPath ) = 0;
134 
149  virtual StatusCode unregisterObject( boost::string_ref parentPath, int item ) = 0;
150 
164  virtual StatusCode unregisterObject( DataObject* pObject ) = 0;
165 
180  virtual StatusCode unregisterObject( DataObject* pParent, boost::string_ref objPath ) = 0;
181 
196  virtual StatusCode unregisterObject( DataObject* pParent, int item ) = 0;
197 
208  virtual StatusCode retrieveObject( IRegistry* pDirectory, boost::string_ref path, DataObject*& pObject ) = 0;
209 
218  virtual StatusCode retrieveObject( boost::string_ref fullPath, DataObject*& pObject ) = 0;
219 
230  virtual StatusCode retrieveObject( boost::string_ref parentPath, boost::string_ref objectPath,
231  DataObject*& pObject ) = 0;
232 
243  virtual StatusCode retrieveObject( boost::string_ref parentPath, int item, DataObject*& pObject ) = 0;
244 
255  virtual StatusCode retrieveObject( DataObject* parentObj, boost::string_ref objectPath, DataObject*& pObject ) = 0;
256 
267  virtual StatusCode retrieveObject( DataObject* parentObj, int item, DataObject*& pObject ) = 0;
268 
278  virtual StatusCode findObject( IRegistry* pDirectory, boost::string_ref path, DataObject*& pObject ) = 0;
279 
287  virtual StatusCode findObject( boost::string_ref fullPath, DataObject*& pObject ) = 0;
288 
298  virtual StatusCode findObject( boost::string_ref parentPath, boost::string_ref objectPath, DataObject*& pObject ) = 0;
299 
308  virtual StatusCode findObject( boost::string_ref parentPath, int item, DataObject*& pObject ) = 0;
309 
319  virtual StatusCode findObject( DataObject* pNode, boost::string_ref objectPath, DataObject*& pObject ) = 0;
320 
329  virtual StatusCode findObject( DataObject* parentObj, int item, DataObject*& pObject ) = 0;
330 
336  virtual StatusCode updateObject( IRegistry* pDirectory ) = 0;
337 
344  virtual StatusCode updateObject( boost::string_ref fullPath ) = 0;
345 
352  virtual StatusCode updateObject( DataObject* toUpdate ) = 0;
353 
362  virtual StatusCode updateObject( boost::string_ref parentPath, boost::string_ref updatePath ) = 0;
363 
372  virtual StatusCode updateObject( DataObject* pParent, boost::string_ref updatePath ) = 0;
373 
378  virtual StatusCode addPreLoadItem( const DataStoreItem& item ) = 0;
379 
385  virtual StatusCode addPreLoadItem( std::string itemPath ) = 0;
386 
391  virtual StatusCode removePreLoadItem( const DataStoreItem& item ) = 0;
392 
397  virtual StatusCode removePreLoadItem( std::string itemPath ) = 0;
398 
402  virtual StatusCode resetPreLoad() = 0;
403 
407  virtual StatusCode preLoad() = 0;
408 
417  virtual StatusCode linkObject( IRegistry* from, boost::string_ref objPath, DataObject* toObj ) = 0;
418 
427  virtual StatusCode linkObject( boost::string_ref fromPath, boost::string_ref objPath, DataObject* toObj ) = 0;
428 
437  virtual StatusCode linkObject( DataObject* fromObj, boost::string_ref objPath, DataObject* toObj ) = 0;
438 
446  virtual StatusCode linkObject( boost::string_ref fullPath, DataObject* toObj ) = 0;
447 
456  virtual StatusCode unlinkObject( IRegistry* from, boost::string_ref objPath ) = 0;
457 
466  virtual StatusCode unlinkObject( boost::string_ref fromPath, boost::string_ref objPath ) = 0;
467 
476  virtual StatusCode unlinkObject( DataObject* fromObj, boost::string_ref objPath ) = 0;
477 
485  virtual StatusCode unlinkObject( boost::string_ref fullPath ) = 0;
486 
488  enum class Status : StatusCode::code_t {
490  IDataProviderSvc_NO_ERROR = 1,
492  DOUBL_OBJ_PATH,
494  INVALID_OBJ_PATH,
496  INVALID_ROOT,
498  INVALID_OBJECT,
500  INVALID_PARENT,
502  OBJ_NOT_LOADED,
504  NO_DATA_LOADER,
506  INVALID_OBJ_ADDR,
508  DIR_NOT_EMPTY,
510  NO_MORE_LEVELS,
512  NO_ACCESS,
514  LAST
515  };
516 };
517 
519 
520 #endif // GAUDIKERNEL_IDATAPROVIDERSVC_H
constexpr char SEPARATOR
#define STATUSCODE_ENUM_DECL(ENUM)
Declare an enum to be used as StatusCode value.
Definition: StatusCode.h:258
Status
Status code definitions.
Data provider interface definition.
Description of the DataStoreItem class.
Definition: DataStoreItem.h:17
STL class.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:51
#define DeclareInterfaceID(iface, major, minor)
Macro to declare the interface ID when using the new mechanism of extending and implementing interfac...
Definition: IInterface.h:13
Definition of the basic interface.
Definition: IInterface.h:277
The IRegistry represents the entry door to the environment any data object residing in a transient da...
Definition: IRegistry.h:22
Opaque address interface definition.
#define GAUDI_API
Definition: Kernel.h:104
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:30
unsigned long code_t
type of StatusCode value
Definition: StatusCode.h:54