Back to home page

EIC code displayed by LXR

 
 

    


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

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 GAUDIFILECATALOG_IFILECATALOGMGR_H
0012 #define GAUDIFILECATALOG_IFILECATALOGMGR_H
0013 
0014 #include "GaudiKernel/IInterface.h"
0015 #include <string>
0016 #include <vector>
0017 
0018 /*
0019  *   Gaudi namespace declaration
0020  */
0021 namespace Gaudi {
0022 
0023   // Forward declarations
0024   class IFileCatalog;
0025 
0026   /** @class IFileCatalogMgr IFileCatalogMgr.h GaudiUtils/IFileCatalogMgr.h
0027    *
0028    *  File catalog manager.
0029    *  Interface to add/remove file catalogs from the multi catalog.
0030    *
0031    *  @author  M.Frank
0032    *  @version 1.0
0033    *  @date    20/10/2007
0034    */
0035   class GAUDI_API IFileCatalogMgr : virtual public IInterface {
0036   public:
0037     /// InterfaceID
0038     DeclareInterfaceID( IFileCatalogMgr, 2, 0 );
0039 
0040     /// Public type definitions
0041     typedef std::vector<IFileCatalog*> Catalogs;
0042 
0043     /** Catalog management                                                    */
0044     /// Find catalog by connect string
0045     virtual IFileCatalog* findCatalog( const std::string& connect, bool must_be_writable ) const = 0;
0046     /// Add new catalog identified by name to the existing ones
0047     virtual void addCatalog( const std::string& connect ) = 0;
0048     /// Add new catalog identified by reference to the existing ones
0049     virtual void addCatalog( IFileCatalog* cat ) = 0;
0050     /// Remove catalog identified by name from the existing ones
0051     virtual void removeCatalog( const std::string& connect ) = 0;
0052     /// Remove catalog identified by reference from the existing ones
0053     virtual void removeCatalog( const IFileCatalog* cat ) = 0;
0054     /// Access catalog container
0055     virtual Catalogs& catalogs() = 0;
0056     /// Access catalog container (CONST)
0057     virtual const Catalogs& catalogs() const = 0;
0058     /// Access to the (first) writable file catalog
0059     virtual IFileCatalog* writeCatalog( const std::string& fid = "" ) const = 0;
0060     /// Define the writable catalog identified by reference
0061     virtual void setWriteCatalog( IFileCatalog* cat ) = 0;
0062     /// Define the writable catalog identified by name
0063     virtual void setWriteCatalog( const std::string& connect ) = 0;
0064   };
0065 } /* End namespace Gaudi             */
0066 #endif /* GAUDIFILECATALOG_IFILECATALOGMGR_H */