From 51b7adcf4e5b2a347081ec9a6903102c4909a404 Mon Sep 17 00:00:00 2001 From: Haru Date: Mon, 15 Jun 2015 20:52:44 +0200 Subject: HPM compatibility improvements Improved compatibility, portability and standards conformance. - Since it is not possible to portably and reliably re-use the core's symbols in plugins, symbols are no longer exported unless explicitly required, in the UNIX builds. This mimics the Windows behavior and adds HPM compatibility to OSes such as FreeBSD. Credits to Andrei Karas for making this possible. - For convenience, it is no longer necessary to call GET_SYMBOL, since the plugin will automatically import all the available symbols when it's loaded, depending on the included headers. - Plugins are now supposed to include the "common/hercules.h" header before including anything else. Incluing common/HPMi.h, common/cbasetypes.h or conf/core.h is no longer necessary, as those are guaranteed to be automatically included by hercules.h. - HPM API version bumped to 1.1. Signed-off-by: Haru --- src/common/HPMi.h | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) (limited to 'src/common/HPMi.h') diff --git a/src/common/HPMi.h b/src/common/HPMi.h index 2054657be..244a9e0ab 100644 --- a/src/common/HPMi.h +++ b/src/common/HPMi.h @@ -4,7 +4,7 @@ #ifndef COMMON_HPMI_H #define COMMON_HPMI_H -#include "common/cbasetypes.h" +#include "common/hercules.h" #include "common/console.h" #include "common/core.h" #include "common/showmsg.h" @@ -15,13 +15,7 @@ struct AtCommandInfo; struct socket_data; struct map_session_data; -#ifdef WIN32 - #define HPExport __declspec(dllexport) -#else - #define HPExport -#endif - -#define HPM_VERSION "1.0" +#define HPM_VERSION "1.1" #define HPM_ADDCONF_LENGTH 40 struct hplugin_info { @@ -37,11 +31,6 @@ struct s_HPMDataCheck { int type; }; -HPExport void *(*import_symbol) (char *name, unsigned int pID); -HPExport Sql *mysql_handle; - -#define GET_SYMBOL(n) import_symbol((n),HPMi->pid) - #define SERVER_TYPE_ALL (SERVER_TYPE_LOGIN|SERVER_TYPE_CHAR|SERVER_TYPE_MAP) enum hp_event_types { @@ -226,6 +215,10 @@ struct HPMi_interface { #ifndef HERCULES_CORE HPExport struct HPMi_interface HPMi_s; HPExport struct HPMi_interface *HPMi; -#endif +HPExport void *(*import_symbol) (char *name, unsigned int pID); +HPExport Sql *mysql_handle; +#define HPM_SYMBOL(n, s) ((s) = import_symbol((n),HPMi->pid)) +#endif // !HERCULES_CORE + #endif /* COMMON_HPMI_H */ -- cgit v1.2.3-70-g09d2