#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
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;
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
}
+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
{
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"