]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - include/modulesystem.h
Merge commit '48410b113dd2036e69dbf723a39ec9af02fc9b12'
[xonotic/netradiant.git] / include / modulesystem.h
index 7cb6d3f53d060f95a105cf5e4b8a0bae190494e4..0378cc1d34031645d5a0e8a232d34647e8fda342 100644 (file)
@@ -23,11 +23,19 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #define INCLUDED_MODULESYSTEM_H
 
 #include "generic/static.h"
+#include "debugging/debugging.h"
 
 #if defined(WIN32)
+#ifdef MINGW32
+#define RADIANT_DLLEXPORT __declspec(dllexport)
+#define RADIANT_DLLIMPORT __declspec(dllimport)
+#else
 #define RADIANT_DLLEXPORT __stdcall
+#define RADIANT_DLLIMPORT __stdcall
+#endif
 #else
 #define RADIANT_DLLEXPORT
+#define RADIANT_DLLIMPORT
 #endif
 
 
@@ -53,7 +61,7 @@ public:
   class Visitor
   {
   public:
-    virtual void visit(const char* name, Module& module) = 0;
+    virtual void visit(const char* name, Module& module) const = 0;
   };
 
   virtual void setError(bool error) = 0;
@@ -65,7 +73,7 @@ public:
 
   virtual void registerModule(const char* type, int version, const char* name, Module& module) = 0;
   virtual Module* findModule(const char* type, int version, const char* name) const = 0;
-  virtual void foreachModule(const char* type, int version, Visitor& visitor) = 0;
+  virtual void foreachModule(const char* type, int version, const Visitor& visitor) = 0;
 };
 
 class ModuleServerHolder
@@ -94,6 +102,16 @@ inline ModuleServer& globalModuleServer()
 }
 
 
+inline void initialiseModule(ModuleServer& server)
+{
+  GlobalErrorStream::instance().setOutputStream(server.getErrorStream());
+  GlobalOutputStream::instance().setOutputStream(server.getOutputStream());
+  GlobalDebugMessageHandler::instance().setHandler(server.getDebugMessageHandler());
+  GlobalModuleServer::instance().set(server);
+}
+
+
+
 template<typename Type>
 class Modules
 {
@@ -101,11 +119,11 @@ public:
   class Visitor
   {
   public:
-    virtual void visit(const char* name, const Type& table) = 0;
+    virtual void visit(const char* name, const Type& table) const = 0;
   };
 
   virtual Type* findModule(const char* name) = 0;
-  virtual void foreachModule(Visitor& visitor) = 0;
+  virtual void foreachModule(const Visitor& visitor) = 0;
 };
 
 #include "debugging/debugging.h"