X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c1e2b44010c1a8dcf9bd26c390d1991f6f7e64f..b4b830ec00c099ae83596fa3fe9d8a4398fd2929:/include/wx/object.h diff --git a/include/wx/object.h b/include/wx/object.h index 69ad1b9f88..6b529bd31e 100644 --- a/include/wx/object.h +++ b/include/wx/object.h @@ -195,31 +195,24 @@ WXDLLEXPORT wxObject *wxCreateDynamicObject(const wxChar *name); #if wxUSE_NESTED_CLASSES -#if 0 -#define _DECLARE_DL_SENTINEL(name) \ - wxPluginSentinel m_pluginsentinel; - -#else - -#define _DECLARE_DL_SENTINEL(name) \ -class name##PluginSentinel { \ -private: \ - static const wxString sm_className; \ -public: \ - name##PluginSentinel(); \ - ~##name##PluginSentinel(); \ -}; \ +#define _DECLARE_DL_SENTINEL(name, exportdecl) \ +class exportdecl name##PluginSentinel { \ +private: \ + static const wxString sm_className; \ +public: \ + name##PluginSentinel(); \ + ~name##PluginSentinel(); \ +}; \ name##PluginSentinel m_pluginsentinel; -#endif #define _IMPLEMENT_DL_SENTINEL(name) \ const wxString name::name##PluginSentinel::sm_className(#name); \ name::name##PluginSentinel::name##PluginSentinel() { \ - wxDLManifestEntry *e = (wxDLManifestEntry*) wxDLManifestEntry::ms_classes.Get(#name); \ + wxPluginLibrary *e = (wxPluginLibrary*) wxPluginLibrary::ms_classes.Get(#name); \ if( e != 0 ) { e->RefObj(); } \ } \ - name::name##PluginSentinel::~##name##PluginSentinel() { \ - wxDLManifestEntry *e = (wxDLManifestEntry*) wxDLManifestEntry::ms_classes.Get(#name); \ + name::name##PluginSentinel::~name##PluginSentinel() { \ + wxPluginLibrary *e = (wxPluginLibrary*) wxPluginLibrary::ms_classes.Get(#name); \ if( e != 0 ) { e->UnrefObj(); } \ } #else @@ -230,21 +223,33 @@ name##PluginSentinel m_pluginsentinel; #endif // wxUSE_NESTED_CLASSES #define DECLARE_PLUGGABLE_CLASS(name) \ - DECLARE_DYNAMIC_CLASS(name) _DECLARE_DL_SENTINEL(name) - + DECLARE_DYNAMIC_CLASS(name) _DECLARE_DL_SENTINEL(name, WXDLLEXPORT) #define DECLARE_ABSTRACT_PLUGGABLE_CLASS(name) \ - DECLARE_ABSTRACT_CLASS(name) _DECLARE_DL_SENTINEL(name) + DECLARE_ABSTRACT_CLASS(name) _DECLARE_DL_SENTINEL(name, WXDLLEXPORT) + +#define DECLARE_USER_EXPORTED_PLUGGABLE_CLASS(name, usergoo) \ + DECLARE_DYNAMIC_CLASS(name) _DECLARE_DL_SENTINEL(name, usergoo) +#define DECLARE_USER_EXPORTED_ABSTRACT_PLUGGABLE_CLASS(name, usergoo) \ + DECLARE_ABSTRACT_CLASS(name) _DECLARE_DL_SENTINEL(name, usergoo) #define IMPLEMENT_PLUGGABLE_CLASS(name, basename) \ IMPLEMENT_DYNAMIC_CLASS(name, basename) _IMPLEMENT_DL_SENTINEL(name) #define IMPLEMENT_PLUGGABLE_CLASS2(name, basename1, basename2) \ IMPLEMENT_DYNAMIC_CLASS2(name, basename1, basename2) _IMPLEMENT_DL_SENTINEL(name) - #define IMPLEMENT_ABSTRACT_PLUGGABLE_CLASS(name, basename) \ IMPLEMENT_ABSTRACT_CLASS(name, basename) _IMPLEMENT_DL_SENTINEL(name) #define IMPLEMENT_ABSTRACT_PLUGGABLE_CLASS2(name, basename1, basename2) \ IMPLEMENT_ABSTRACT_CLASS2(name, basename1, basename2) _IMPLEMENT_DL_SENTINEL(name) +#define IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS(name, basename) \ + IMPLEMENT_PLUGGABLE_CLASS(name, basename) +#define IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS2(name, basename1, basename2) \ + IMPLEMENT_PLUGGABLE_CLASS2(name, basename1, basename2) +#define IMPLEMENT_USER_EXPORTED_ABSTRACT_PLUGGABLE_CLASS(name, basename) \ + IMPLEMENT_ABSTRACT_PLUGGABLE_CLASS(name, basename) +#define IMPLEMENT_USER_EXPORTED_ABSTRACT_PLUGGABLE_CLASS2(name, basename1, basename2) \ + IMPLEMENT_ABSTRACT_PLUGGABLE_CLASS2(name, basename1, basename2) + #define CLASSINFO(name) (&name::sm_class##name) @@ -269,6 +274,13 @@ name##PluginSentinel m_pluginsentinel; #define IMPLEMENT_ABSTRACT_PLUGGABLE_CLASS(name, basename) #define IMPLEMENT_ABSTRACT_PLUGGABLE_CLASS2(name, basename1, basename2) +#define DECLARE_USER_EXPORTED_PLUGGABLE_CLASS(name, usergoo) +#define DECLARE_USER_EXPORTED_ABSTRACT_PLUGGABLE_CLASS(name, usergoo) +#define IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS(name, basename) +#define IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS2(name, basename1, basename2) +#define IMPLEMENT_USER_EXPORTED_ABSTRACT_PLUGGABLE_CLASS(name, basename) +#define IMPLEMENT_USER_EXPORTED_ABSTRACT_PLUGGABLE_CLASS2(name, basename1, basename2) + #endif // wxUSE_DYNAMIC_CLASSES