00001 // $Header: /local/reps/Gaudi/GaudiKernel/GaudiKernel/IFactory.h,v 1.4 2001/02/23 16:12:10 dquarrie Exp $ 00002 #ifndef GAUDIKERNEL_IFACTORY_H 00003 #define GAUDIKERNEL_IFACTORY_H 00004 00005 // Include files 00006 #include "GaudiKernel/IInterface.h" 00007 #include <string> 00008 #include <vector> 00009 00010 00011 // Declaration of the interface ID ( interface id, major version, minor version) 00012 static const InterfaceID IID_IFactory(104, 1 , 0); 00013 00021 class IFactory : virtual public IInterface { 00022 public: 00024 static const InterfaceID& interfaceID() { return IID_IFactory; } 00026 virtual IInterface* instantiate( IInterface *parent ) const = 0; 00027 virtual unsigned long addRef() const = 0; 00028 virtual unsigned long release() const = 0; 00029 00033 virtual unsigned long addRef() = 0; 00035 virtual unsigned long release() = 0; 00036 00037 virtual const std::string& ident() const = 0; 00038 00039 }; 00040 00041 #endif // GAUDIKERNEL_IFACTORY_H