00001
00002 #ifndef GAUDIKERNEL_IDATAPROVIDERSVC_H
00003 #define GAUDIKERNEL_IDATAPROVIDERSVC_H
00004
00005
00006 #include "GaudiKernel/IInterface.h"
00007
00008
00009 #include <string>
00010
00011
00012 class DataObject;
00013 class IOpaqueAddress;
00014 class IRegistry;
00015 class DataStoreItem;
00016
00046 class GAUDI_API IDataProviderSvc: virtual public IInterface {
00047 public:
00049 DeclareInterfaceID(IDataProviderSvc,3,0);
00050
00051 enum { SEPARATOR = '/' };
00052
00060 virtual StatusCode registerObject(const std::string& fullPath,
00061 DataObject* pObject) = 0;
00062
00071 virtual StatusCode registerObject(const std::string& parentPath,
00072 const std::string& objectPath,
00073 DataObject* pObject) = 0;
00074
00083 virtual StatusCode registerObject(const std::string& parentPath,
00084 int item,
00085 DataObject* pObject) = 0;
00086
00095 virtual StatusCode registerObject(DataObject* parentObj,
00096 const std::string& objectPath,
00097 DataObject* pObject) = 0;
00098
00107 virtual StatusCode registerObject(DataObject* parentObj,
00108 int item,
00109 DataObject* pObject) = 0;
00110
00124 virtual StatusCode unregisterObject(const std::string& fullPath) = 0;
00125
00140 virtual StatusCode unregisterObject(const std::string& parentPath,
00141 const std::string& objPath) = 0;
00142
00157 virtual StatusCode unregisterObject(const std::string& parentPath,
00158 int item) = 0;
00159
00173 virtual StatusCode unregisterObject(DataObject* pObject) = 0;
00174
00189 virtual StatusCode unregisterObject(DataObject* pParent,
00190 const std::string& objPath) = 0;
00191
00206 virtual StatusCode unregisterObject(DataObject* pParent, int item) = 0;
00207
00218 virtual StatusCode retrieveObject(IRegistry* pDirectory,
00219 const std::string& path,
00220 DataObject*& pObject) = 0;
00221
00230 virtual StatusCode retrieveObject(const std::string& fullPath,
00231 DataObject*& pObject) = 0;
00232
00243 virtual StatusCode retrieveObject(const std::string& parentPath,
00244 const std::string& objectPath,
00245 DataObject*& pObject) = 0;
00246
00257 virtual StatusCode retrieveObject(const std::string& parentPath,
00258 int item, DataObject*& pObject) = 0;
00259
00270 virtual StatusCode retrieveObject(DataObject* parentObj,
00271 const std::string& objectPath,
00272 DataObject*& pObject) = 0;
00273
00284 virtual StatusCode retrieveObject(DataObject* parentObj,
00285 int item,
00286 DataObject*& pObject) = 0;
00287
00297 virtual StatusCode findObject(IRegistry* pDirectory,
00298 const std::string& path,
00299 DataObject*& pObject) = 0;
00300
00308 virtual StatusCode findObject(const std::string& fullPath,
00309 DataObject*& pObject) = 0;
00310
00320 virtual StatusCode findObject(const std::string& parentPath,
00321 const std::string& objectPath,
00322 DataObject*& pObject) = 0;
00323
00332 virtual StatusCode findObject(const std::string& parentPath,
00333 int item,
00334 DataObject*& pObject) = 0;
00335
00345 virtual StatusCode findObject(DataObject* pNode,
00346 const std::string& objectPath,
00347 DataObject*& pObject) = 0;
00348
00357 virtual StatusCode findObject(DataObject* parentObj,
00358 int item,
00359 DataObject*& pObject) = 0;
00360
00366 virtual StatusCode updateObject(IRegistry* pDirectory) = 0;
00367
00374 virtual StatusCode updateObject(const std::string& fullPath) = 0;
00375
00382 virtual StatusCode updateObject(DataObject* toUpdate) = 0;
00383
00392 virtual StatusCode updateObject(const std::string& parentPath,
00393 const std::string& updatePath) = 0;
00394
00403 virtual StatusCode updateObject(DataObject* pParent,
00404 const std::string& updatePath) = 0;
00405
00410 virtual StatusCode addPreLoadItem(const DataStoreItem& item) = 0;
00411
00417 virtual StatusCode addPreLoadItem(const std::string& itemPath) = 0;
00418
00423 virtual StatusCode removePreLoadItem(const DataStoreItem& item) = 0;
00424
00429 virtual StatusCode removePreLoadItem(const std::string& itemPath) = 0;
00430
00434 virtual StatusCode resetPreLoad() = 0;
00435
00439 virtual StatusCode preLoad() = 0;
00440
00449 virtual StatusCode linkObject(IRegistry* from,
00450 const std::string& objPath,
00451 DataObject* toObj) = 0;
00452
00461 virtual StatusCode linkObject(const std::string& fromPath,
00462 const std::string& objPath,
00463 DataObject* toObj) = 0;
00464
00473 virtual StatusCode linkObject(DataObject* fromObj,
00474 const std::string& objPath,
00475 DataObject* toObj) = 0;
00476
00484 virtual StatusCode linkObject(const std::string& fullPath,
00485 DataObject* toObj) = 0;
00486
00495 virtual StatusCode unlinkObject(IRegistry* from,
00496 const std::string& objPath) = 0;
00497
00506 virtual StatusCode unlinkObject(const std::string& fromPath,
00507 const std::string& objPath) = 0;
00508
00517 virtual StatusCode unlinkObject(DataObject* fromObj,
00518 const std::string& objPath) = 0;
00519
00527 virtual StatusCode unlinkObject(const std::string& fullPath) = 0;
00528
00530 enum Status {
00532 IDataProviderSvc_NO_ERROR = 1,
00534 DOUBL_OBJ_PATH,
00536 INVALID_OBJ_PATH,
00538 INVALID_ROOT,
00540 INVALID_OBJECT,
00542 INVALID_PARENT,
00544 OBJ_NOT_LOADED,
00546 NO_DATA_LOADER,
00548 INVALID_OBJ_ADDR,
00550 DIR_NOT_EMPTY,
00552 NO_MORE_LEVELS,
00554 NO_ACCESS,
00556 LAST
00557 };
00558 };
00559
00560 #endif // GAUDIKERNEL_IDATAPROVIDERSVC_H