- Updated UFA:Plugin (mattn2)
[xonotic/netradiant.git] / include / modulesystem.h
index 7cb6d3f53d060f95a105cf5e4b8a0bae190494e4..dd7c59ad2b2e545693822ca9209f206d8c3050bb 100644 (file)
@@ -23,6 +23,7 @@ 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)
 #define RADIANT_DLLEXPORT __stdcall
@@ -53,7 +54,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 +66,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 +95,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 +112,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"