Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:57:40

0001 /***********************************************************************************\
0002 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
0003 *                                                                                   *
0004 * This software is distributed under the terms of the Apache version 2 licence,     *
0005 * copied verbatim in the file "LICENSE".                                            *
0006 *                                                                                   *
0007 * In applying this licence, CERN does not waive the privileges and immunities       *
0008 * granted to it by virtue of its status as an Intergovernmental Organization        *
0009 * or submit itself to any jurisdiction.                                             *
0010 \***********************************************************************************/
0011 #ifndef GAUDIKERNEL_IREGISTRY_H
0012 #define GAUDIKERNEL_IREGISTRY_H
0013 
0014 // Include files
0015 #include "GaudiKernel/Kernel.h"
0016 #include <string>
0017 
0018 // forward declarations
0019 class DataObject;
0020 class IOpaqueAddress;
0021 class IDataProviderSvc;
0022 
0023 /** @class IRegistry IRegistry.h GaudiKernel/IRegistry.h
0024 
0025     The IRegistry represents the entry door to the environment
0026     any data object residing in a transient data store is embedded.
0027 
0028     Split from directory browsing (which is now sub-classed), providing
0029     a light-weight interface to differing registry mechanism.
0030 
0031 */
0032 class GAUDI_API IRegistry {
0033 public:
0034   /// Type definitions
0035   /// Name type
0036   typedef std::string name_type;
0037   /// Identifier Key type
0038   typedef std::string id_type;
0039 
0040   /// destructor
0041   virtual ~IRegistry() = default;
0042 
0043   /// Add reference to object
0044   virtual unsigned long addRef() = 0;
0045 
0046   /// release reference to object
0047   virtual unsigned long release() = 0;
0048 
0049   /// Name of the directory (or key)
0050   virtual const name_type& name() const = 0;
0051 
0052   /// Full identifier (or key)
0053   virtual const id_type& identifier() const = 0;
0054 
0055   /// Retrieve pointer to Transient Store
0056   virtual IDataProviderSvc* dataSvc() const = 0;
0057 
0058   /// Retrieve object behind the link
0059   virtual DataObject* object() const = 0;
0060 
0061   /// Retrieve opaque storage address
0062   virtual IOpaqueAddress* address() const = 0;
0063 
0064   /// Set/Update Opaque storage address
0065   virtual void setAddress( IOpaqueAddress* pAddress ) = 0;
0066 };
0067 #endif // KERNEL_IREGISTRY_H