#ifndef _WX_DYNAMICLOADER_H__
#define _WX_DYNAMICLOADER_H__
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "dynload.h"
#endif
#if wxUSE_DYNAMIC_LOADER
-#include "wx/hash.h"
+#include "wx/hashmap.h"
#include "wx/module.h"
// FIXME: can this go in private.h or something too??
#include "wx/msw/private.h"
#endif
-// Ugh, I'd much rather this was typesafe, but no time
-// to rewrite wxHashTable right now..
+class WXDLLEXPORT wxPluginLibrary;
-typedef wxHashTable wxDLManifest;
-typedef wxHashTable wxDLImports;
+WX_DECLARE_EXPORTED_STRING_HASH_MAP(wxPluginLibrary *, wxDLManifest);
+typedef wxDLManifest wxDLImports;
// ----------------------------------------------------------------------------
// conditional compilation
// no copy ctor/assignment operators
// or we'd try to unload the library twice
-DECLARE_NO_COPY_CLASS(wxDynamicLibrary)
+ DECLARE_NO_COPY_CLASS(wxDynamicLibrary)
};
void RegisterModules(); // Init any wxModules in the lib.
void UnregisterModules(); // Cleanup any wxModules we installed.
-DECLARE_NO_COPY_CLASS(wxPluginLibrary)
+ DECLARE_NO_COPY_CLASS(wxPluginLibrary)
};
// Instance methods.
- wxPluginManager() : m_entry(0) {};
+ wxPluginManager() : m_entry(NULL) {};
wxPluginManager(const wxString &libname, int flags = wxDL_DEFAULT)
{
Load(libname, flags);
static void ClearManifest() { delete ms_manifest; ms_manifest = NULL; }
private:
+ // return the pointer to the entry for the library with given name in
+ // ms_manifest or NULL if none
+ static wxPluginLibrary *FindByName(const wxString& name)
+ {
+ const wxDLManifest::iterator i = ms_manifest->find(name);
+
+ return i == ms_manifest->end() ? NULL : i->second;
+ }
static wxDLManifest* ms_manifest; // Static hash of loaded libs.
wxPluginLibrary* m_entry; // Cache our entry in the manifest.
// We could allow this class to be copied if we really
// wanted to, but not without modification.
-
-DECLARE_NO_COPY_CLASS(wxPluginManager)
+ DECLARE_NO_COPY_CLASS(wxPluginManager)
};