Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-03-13 09:09:58

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_IADDRESSCREATOR_H
0012 #define GAUDIKERNEL_IADDRESSCREATOR_H
0013 
0014 // Framework include files
0015 #include "GaudiKernel/ClassID.h"
0016 #include "GaudiKernel/IInterface.h"
0017 
0018 // C++ include files
0019 #include <string>
0020 
0021 // Forward declarations
0022 class IOpaqueAddress;
0023 
0024 /** @class IAddressCreator IAddressCreator.h GaudiKernel/IAddressCreator.h
0025 
0026     IAddressCreator interface definition.
0027     The address creator allows to:
0028     <UL>
0029     <LI> Create persistent address representations for a given
0030          conversion service using this service itself. The aim is to
0031          allow address creation without coupling directly to the service.
0032     </UL>
0033 
0034 
0035     @author Markus Frank
0036     @version 1.0
0037 */
0038 class GAUDI_API IAddressCreator : virtual public IInterface {
0039 public:
0040   /// InterfaceID
0041   DeclareInterfaceID( IAddressCreator, 3, 0 );
0042 
0043   /** Create a Generic address using explicit arguments to
0044       identify a single object.
0045       @param      svc_type    Technology identifier encapsulated
0046                               in this address.
0047       @param      clid        Class identifier of the DataObject
0048                               represented by the opaque address
0049       @param      par         Array of strings needed to
0050                               construct the opaque address.
0051       @param      ipar        Array of integers needed to
0052                               construct the opaque address.
0053       @param      refpAddress Reference to pointer to the address where the created
0054                               Address should be stored.
0055       @return     Status code indicating success or failure.
0056   */
0057   virtual StatusCode createAddress( long svc_type, const CLID& clid, const std::string* par, const unsigned long* ipar,
0058                                     IOpaqueAddress*& refpAddress ) = 0;
0059 
0060   /** Convert an address to string form
0061       @param      pAddress    Input address.
0062       @param      refAddress  Output address in string form.
0063       @return     Status code indicating success or failure.
0064   */
0065   virtual StatusCode convertAddress( const IOpaqueAddress* pAddress, std::string& refAddress ) = 0;
0066 
0067   /** Creates an address in string form to object form
0068       @param      svc_type    Technology identifier encapsulated
0069                               in this address.
0070       @param      clid        Class identifier of the DataObject
0071                               represented by the opaque address
0072       @param      address     Input address.
0073       @param      refpAddress Output address in string form.
0074       @return     Status code indicating success or failure.
0075   */
0076   virtual StatusCode createAddress( long svc_type, const CLID& clid, const std::string& refAddress,
0077                                     IOpaqueAddress*& refpAddress ) = 0;
0078 };
0079 
0080 #endif // GAUDIKERNEL_IADDRESSCREATOR_H