Go to the documentation of this file.00001 #pragma once
00002 #include <typeinfo.h>
00003
00004 typedef void* (*FPCREATE)(const char*, Log*);
00005 typedef bool (*FPFREE)(const char*, void*);
00006
00009 class Module
00010 {
00011 public:
00012 Module(const wchar* filename);
00013 virtual ~Module(void);
00014
00016 template<class T>
00017 T* create(void){
00018 if(fpCreate == 0){
00019 printf("%s\n", "No Create Function found");
00020 return 0;
00021 }
00022 return (T*)fpCreate(typeid(T).name(), logger);
00023 }
00024
00026 template<class T>
00027 void free(T*& clazz){if(fpFree != 0 && fpFree(typeid(T).name(), clazz)) clazz=0;}
00028
00029 private:
00030 void* module;
00031 FPCREATE fpCreate;
00032 FPFREE fpFree;
00033 };
00034
00035 #ifdef _DEBUG
00036 #define MODULE(modulename) TEXT("../bin/")TEXT(modulename)TEXT("D.dll")
00037 #else
00038 #define MODULE(modulename) TEXT("../bin/")TEXT(modulename)TEXT(".dll")
00039 #endif