summaryrefslogtreecommitdiff
path: root/libmodman/module.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'libmodman/module.hpp')
-rw-r--r--libmodman/module.hpp113
1 files changed, 0 insertions, 113 deletions
diff --git a/libmodman/module.hpp b/libmodman/module.hpp
deleted file mode 100644
index 2d974aa..0000000
--- a/libmodman/module.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*******************************************************************************
- * libmodman - A library for extending applications
- * Copyright (C) 2009 Nathaniel McCallum <nathaniel@natemccallum.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- ******************************************************************************/
-
-#ifndef MODULE_HPP_
-#define MODULE_HPP_
-
-#include <cstdlib> // For NULL
-
-#ifndef MM_MODULE_BUILTIN
-#define MM_MODULE_BUILTIN
-#endif
-
-#ifdef _MSC_VER
-#define __MM_DLL_EXPORT __declspec(dllexport)
-#else
-#define __MM_DLL_EXPORT __attribute__ ((visibility("default")))
-#endif
-
-#define __MM_MODULE_VERSION 2
-#define __MM_MODULE_VARNAME__(suffix, name) mm_ ## name ## _ ## suffix
-#define __MM_MODULE_VARNAME_(suffix, name) __MM_MODULE_VARNAME__(suffix, name)
-#define __MM_MODULE_VARNAME(name) __MM_MODULE_VARNAME_(MM_MODULE_BUILTIN, name)
-
-#define MM_MODULE_INIT(mtype, minit, mtest, msymb, msmod) \
- extern "C" __MM_DLL_EXPORT struct mm_module __MM_MODULE_VARNAME(info); \
- struct mm_module __MM_MODULE_VARNAME(info) = { \
- __MM_MODULE_VERSION, \
- # mtype, \
- mtype::base_type, \
- minit, mtest, msymb, msmod \
- }
-
-#define MM_MODULE_INIT_EZ(clsname, mtest, msymb, msmod) \
- static libmodman::base_extension** clsname ## _init() { \
- libmodman::base_extension** retval = new libmodman::base_extension*[2]; \
- retval[0] = new clsname(); \
- retval[1] = NULL; \
- return retval; \
- } \
- static bool clsname ## _test() { return mtest; } \
- MM_MODULE_INIT(clsname, clsname ## _init, clsname ## _test, msymb, msmod)
-
-/* Helper macro for loading builtins */
-
-#define MM_DEF_BUILTIN(modname) \
- extern "C" struct mm_module __MM_MODULE_VARNAME_(modname,info)
-
-#define MM_BUILTIN(modname) __MM_MODULE_VARNAME_(modname,info)
-
-
-namespace libmodman {
-
-class __MM_DLL_EXPORT base_extension {
-public:
- static const char* base_type() { return NULL; }
- static bool singleton() { return false; }
- virtual ~base_extension() {}
- virtual const char* get_base_type() const =0;
- virtual bool operator<(const base_extension&) const =0;
-};
-
-template <class basetype, bool sngl=false>
-class __MM_DLL_EXPORT extension : public base_extension {
-public:
-#ifdef _MSC_VER
- static const char* base_type() { return __FUNCSIG__; }
-#else
- static const char* base_type() { return __PRETTY_FUNCTION__; }
-#endif
-
- static bool singleton() { return sngl; }
- virtual const char* get_base_type() const { return basetype::base_type(); }
- virtual bool operator<(const base_extension&) const { return false; };
-};
-
-}
-
-extern "C" {
-
-struct __MM_DLL_EXPORT mm_module
-{
-/* For some unknown reason, when vers is const VC++ (win32) NULLs out the whole struct.
- * This obviously breaks module loading. I'd love to know the reason for this, so if
- * anyone knows, please tell me. In the meantime, vers not being const is by design,
- * so don't change it. */
- unsigned int vers;
- const char* name;
- const char* (*type)();
- libmodman::base_extension** (*init)();
- bool (*test)();
- const char* symb;
- const char* smod;
-};
-
-}
-
-#endif /* MODULE_HPP_ */