00001 // $Id: ISolidFactory.h,v 1.4 2003/11/24 14:43:44 cattanem Exp $ 00002 // ========================================================================== 00003 // CVS tag $Name: v18r12 $ 00004 // ========================================================================== 00005 #ifndef DETDESC_ISOLIDFACTORY_H 00006 #define DETDESC_ISOLIDFACTORY_H 1 00007 // GaudiKernel 00008 #include "GaudiKernel/IFactory.h" 00009 // forward declarations 00010 class ISolid; // DetDesc 00011 00013 static const InterfaceID IID_ISolidFactory( "ISolidFactory" , 2 , 0 ); 00014 00024 class ISolidFactory : public virtual IFactory 00025 { 00026 00027 public: 00028 00032 static const InterfaceID& interfaceID() { return IID_ISolidFactory; } 00033 00037 virtual ISolid* instantiate () const = 0; 00038 00039 protected: 00040 00042 virtual ~ISolidFactory(){}; 00043 00044 }; 00045 00051 #define DECLARE_SOLID(x) extern const ISolidFactory& x##Factory; \ 00052 x##Factory.addRef(); 00053 00054 00055 // ========================================================================== 00056 #endif 00057 // ==========================================================================