X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fdynamic.h;h=10b87b40c5c25e172fdd72d9bc9882e4cecb4514;hb=40b67389a9ac1ef3f37ce93dd95e76c474edd511;hp=987f5de72c23192685895a941521b3b65d56891a;hpb=740b09e2aee345c6fde199986d8eab6e0db224e3;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/dynamic.h b/include/dynamic.h index 987f5de72..10b87b40c 100644 --- a/include/dynamic.h +++ b/include/dynamic.h @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. + * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * * @@ -18,40 +18,54 @@ #ifndef __DLL_H #define __DLL_H +typedef void * (initfunc) (void); + +#include "inspircd_config.h" class DLLManager { public: - DLLManager( const char *fname ); + DLLManager(char *fname); virtual ~DLLManager(); - bool GetSymbol( void **, const char *sym_name ); +#ifdef STATIC_LINK + bool GetSymbol( initfunc* &v, char *sym_name ); +#else + bool GetSymbol( void **, char *sym_name ); +#endif - const char *LastError() + char *LastError() { return err; } protected: void *h; - const char *err; + char *err; +#ifdef STATIC_LINK + char staticname[1024]; +#endif }; class DLLFactoryBase : public DLLManager { public: - DLLFactoryBase(const char *fname, const char *func_name = 0); + DLLFactoryBase(char *fname, char *func_name = 0); virtual ~DLLFactoryBase(); +#ifdef STATIC_LINK + initfunc *factory_func; +#else void * (*factory_func)(void); +#endif }; template class DLLFactory : public DLLFactoryBase { public: - DLLFactory(const char *fname, const char *func_name=0) : DLLFactoryBase(fname,func_name) + DLLFactory(char *fname, char *func_name=0) : DLLFactoryBase(fname,func_name) { if (factory_func) factory = (T*)factory_func();