]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/dynamic.h
Remove unneeded headers from spanningtree. This was done to the rest of the source...
[user/henk/code/inspircd.git] / include / dynamic.h
index d63e5dc83491f63af5f0aa40e8eb1f29e021ef62..db46291c4b888f34acec0d1101ec725431c5383f 100644 (file)
@@ -2,19 +2,15 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
- *                       E-mail:
- *                <brain@chatspike.net>
- *               <Craig@chatspike.net>
- *     
- * Written by Craig Edwards, Craig McLure, and others.
+ *  InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * See: http://www.inspircd.org/wiki/index.php/Credits
+ *
  * This program is free but copyrighted software; see
  *            the file COPYING for details.
  *
  * ---------------------------------------------------
  */
 
-
 #ifndef __DLL_H
 #define __DLL_H
 
@@ -31,7 +27,7 @@ class InspIRCd;
 /** The DLLManager class is able to load a module file by filename,
  * and locate its init_module symbol.
  */
-class DLLManager
+class CoreExport DLLManager
 {
  public:
        /** This constructor loads the module using dlopen()
@@ -42,51 +38,38 @@ class DLLManager
        DLLManager(InspIRCd* ServerInstance, const char *fname);
        virtual ~DLLManager();
 
-
-#ifdef STATIC_LINK
-       /** Get a symbol using static linking.
-        * @param v A static function pointer, pointing at an init_module function
-        * @param sym_name The symbol name to find, usually "init_module"
-        * @return True if the symbol can be found
-        */
-       bool GetSymbol(initfunc* &v, const char *sym_name);
-#else
        /** Get a symbol using dynamic linking.
         * @param v A function pointer, pointing at an init_module function
         * @param sym_name The symbol name to find, usually "init_module"
         * @return true if the symbol can be found, also the symbol will be put into v.
         */
        bool GetSymbol(void **v, const char *sym_name);
-#endif
+
        /** Get the last error from dlopen() or dlsym().
-        * @return The last error string, or NULL if no error has occured
+        * @return The last error string, or NULL if no error has occured.
         */
        char* LastError() 
        {
                 return err;
        }
-       
- protected:
 
-       /** The module handle
+       /** The module handle.
+        * This is OS dependent, on POSIX platforms it is a pointer to a function
+        * pointer (yes, really!) and on windows it is a library handle.
         */
        void *h;
 
+ protected:
+
        /** The last error string, or NULL
         */
        char *err;
-#ifdef STATIC_LINK
-
-       /** The module name
-        */
-       char staticname[1024];
-#endif
 };
 
 /** This class is a specialized form of DLLManager designed to load InspIRCd modules.
  * It's job is to call the init_module function and receive a factory pointer.
  */
-class DLLFactoryBase : public DLLManager
+class CoreExport DLLFactoryBase : public DLLManager
 {
  public:
        /** Default constructor.
@@ -96,18 +79,13 @@ class DLLFactoryBase : public DLLManager
         */
        DLLFactoryBase(InspIRCd* Instance, const char *fname, const char *func_name = 0);
 
-       /** Default destructor
+       /** Default destructor.
         */
        virtual ~DLLFactoryBase();
-#ifdef STATIC_LINK
-       /** A function pointer to the factory function
-        */
-       initfunc *factory_func;
-#else
-       /** A function pointer to the factory function
+
+       /** A function pointer to the factory function.
         */
        void * (*factory_func)(void);   
-#endif
 };
 
 /** This is the highest-level class of the DLLFactory system used to load InspIRCd modules.
@@ -115,7 +93,7 @@ class DLLFactoryBase : public DLLManager
  * This template is a container for ModuleFactory itself, so that it may 'plug' into ModuleFactory
  * and provide module loading capabilities transparently.
  */
-template <class T> class DLLFactory : public DLLFactoryBase
+template <class T> class CoreExport DLLFactory : public DLLFactoryBase
 {
  public:
        /** Default constructor.
@@ -146,3 +124,4 @@ template <class T> class DLLFactory : public DLLFactoryBase
 };
 
 #endif
+