diff options
author | npmccallum <npmccallum@c587cffe-e639-0410-9787-d7902ae8ed56> | 2010-02-16 00:20:22 +0000 |
---|---|---|
committer | npmccallum <npmccallum@c587cffe-e639-0410-9787-d7902ae8ed56> | 2010-02-16 00:20:22 +0000 |
commit | 90be9ece730fac084d829daf8bb635e3538b93ae (patch) | |
tree | 3fcf642598fd5d8720d0e2e5b591841c220c53f8 /libmodman/module.hpp | |
parent | d436e8ff6055c3416c7b765c35b4fb502a0b7890 (diff) | |
download | libproxy-90be9ece730fac084d829daf8bb635e3538b93ae.tar.gz |
general libmodman/module.[ch]pp cleanup
git-svn-id: http://libproxy.googlecode.com/svn/trunk@554 c587cffe-e639-0410-9787-d7902ae8ed56
Diffstat (limited to 'libmodman/module.hpp')
-rw-r--r-- | libmodman/module.hpp | 44 |
1 files changed, 20 insertions, 24 deletions
diff --git a/libmodman/module.hpp b/libmodman/module.hpp index bcaf740..43aab77 100644 --- a/libmodman/module.hpp +++ b/libmodman/module.hpp @@ -20,30 +20,30 @@ #ifndef MODULE_HPP_ #define MODULE_HPP_ -#include <typeinfo> -#include <cstdlib> +#include <cstdlib> // For NULL #ifdef WIN32 #define __MM_DLL_EXPORT __declspec(dllexport) #define __MM_FUNC_DEF_PREFIX extern "C" __MM_DLL_EXPORT #define __MM_SCLR_DEF_PREFIX extern "C" __MM_DLL_EXPORT #else +#include <typeinfo> #define __MM_DLL_EXPORT __attribute__ ((visibility("default"))) #define __MM_FUNC_DEF_PREFIX __MM_DLL_EXPORT #define __MM_SCLR_DEF_PREFIX extern "C" __MM_DLL_EXPORT #endif -#define MM_MODULE_VERSION 1 -#define MM_MODULE_VARNAME(name) __mm_ ## name +#define __MM_MODULE_VERSION 1 +#define __MM_MODULE_VARNAME(name) __mm_ ## name #define MM_MODULE_INIT(mtype, minit) \ - __MM_SCLR_DEF_PREFIX const unsigned int MM_MODULE_VARNAME(vers) = MM_MODULE_VERSION; \ - __MM_FUNC_DEF_PREFIX const char* (*MM_MODULE_VARNAME(type))() = mtype::base_type; \ - __MM_FUNC_DEF_PREFIX base_extension** (*MM_MODULE_VARNAME(init))() = minit; + __MM_SCLR_DEF_PREFIX const unsigned int __MM_MODULE_VARNAME(vers) = __MM_MODULE_VERSION; \ + __MM_FUNC_DEF_PREFIX const char* (*__MM_MODULE_VARNAME(type))() = mtype::base_type; \ + __MM_FUNC_DEF_PREFIX base_extension** (*__MM_MODULE_VARNAME(init))() = minit; #define MM_MODULE_TEST(mtest) \ - __MM_FUNC_DEF_PREFIX bool (*MM_MODULE_VARNAME(test))() = mtest; + __MM_FUNC_DEF_PREFIX bool (*__MM_MODULE_VARNAME(test))() = mtest; #define MM_MODULE_SYMB(msymb, msmod) \ - __MM_SCLR_DEF_PREFIX const char* const MM_MODULE_VARNAME(symb) = msymb; \ - __MM_SCLR_DEF_PREFIX const char* const MM_MODULE_VARNAME(smod) = msmod; + __MM_SCLR_DEF_PREFIX const char* const __MM_MODULE_VARNAME(symb) = msymb; \ + __MM_SCLR_DEF_PREFIX const char* const __MM_MODULE_VARNAME(smod) = msmod; #define MM_MODULE_INIT_EZ(clsname) \ static libmodman::base_extension** clsname ## _init() { \ @@ -61,30 +61,26 @@ namespace libmodman { class __MM_DLL_EXPORT base_extension { public: - static const char* base_type() { -#ifdef WIN32 - return __FUNCSIG__; -#else - return typeid(base_extension).name(); -#endif - } - static bool singleton(); - - virtual ~base_extension(); - virtual bool operator<(const base_extension&) const; + static const char* base_type() { return NULL; } + static bool singleton() { return false; } + virtual ~base_extension() {} + virtual bool operator<(const base_extension&) const =0; }; -template <class T> +template <class basetype, bool snglton=false> class __MM_DLL_EXPORT extension : public base_extension { public: static const char* base_type() { #ifdef WIN32 return __FUNCSIG__; #else - return typeid(T).name(); + return typeid(basetype).name(); #endif - + } + + static bool singleton() { return snglton; } + virtual bool operator<(const base_extension&) const { return false; }; }; } |