X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/550343399aa1355469ffed72c8cf84c732dcf98b..4e57034053aa0c73313f806c7b544e43c794394d:/include/wx/dynlib.h diff --git a/include/wx/dynlib.h b/include/wx/dynlib.h index 04a10d4fc8..4d5f948628 100644 --- a/include/wx/dynlib.h +++ b/include/wx/dynlib.h @@ -27,11 +27,12 @@ #include "wx/msw/private.h" #endif -#if defined(HAVE_DLERROR) && !defined(__EMX__) +// note that we have our own dlerror() implementation under Darwin +#if (defined(HAVE_DLERROR) && !defined(__EMX__)) || defined(__DARWIN__) #define wxHAVE_DYNLIB_ERROR #endif -class WXDLLIMPEXP_BASE wxDynamicLibraryDetailsCreator; +class WXDLLIMPEXP_FWD_BASE wxDynamicLibraryDetailsCreator; // ---------------------------------------------------------------------------- // conditional compilation @@ -169,7 +170,7 @@ public: static wxDllType GetProgramHandle(); // return the platform standard DLL extension (with leading dot) - static const wxChar *GetDllExt() { return ms_dllext; } + static const wxString& GetDllExt() { return ms_dllext; } wxDynamicLibrary() : m_handle(0) { } wxDynamicLibrary(const wxString& libname, int flags = wxDL_DEFAULT) @@ -286,10 +287,6 @@ public: static wxString GetPluginsDirectory(); -#if WXWIN_COMPATIBILITY_2_2 - operator bool() const { return IsLoaded(); } -#endif - protected: // common part of GetSymbol() and HasSymbol() void *DoGetSymbol(const wxString& name, bool *success = 0) const; @@ -301,7 +298,7 @@ protected: // platform specific shared lib suffix. - static const wxChar *ms_dllext; + static const wxString ms_dllext; // the handle to DLL or NULL wxDllType m_handle; @@ -312,122 +309,6 @@ protected: }; -// ---------------------------------------------------------------------------- -// wxDllLoader: low level DLL functions, use wxDynamicLibrary in your code -// ---------------------------------------------------------------------------- - -#if WXWIN_COMPATIBILITY_2_2 && wxUSE_DYNAMIC_LOADER - -#include "wx/object.h" - -/* - wxDllLoader is a class providing an interface similar to unix's dlopen(). - It is used by wxDynamicLibrary wxLibrary and manages the actual loading of - DLLs and the resolving of symbols in them. There are no instances of this - class, it simply serves as a namespace for its static member functions. -*/ -class WXDLLIMPEXP_BASE wxDllLoader -{ -public: - /* - This function loads the shared library libname into memory. - - libname may be either the full path to the file or just the filename in - which case the library is searched for in all standard locations - (use GetDllExt() to construct the filename) - - if success pointer is not NULL, it will be filled with true if everything - went ok and false otherwise - */ - static wxDllType LoadLibrary(const wxString& name, bool *success = NULL); - - /* - This function unloads the shared library previously loaded with - LoadLibrary - */ - static void UnloadLibrary(wxDllType dll); - - /* - This function returns a valid handle for the main program - itself or NULL if back linking is not supported by the current platform - (e.g. Win32). - */ - static wxDllType GetProgramHandle() { return wxDynamicLibrary::GetProgramHandle(); } - - /* - This function resolves a symbol in a loaded DLL, such as a - variable or function name. - - dllHandle Handle of the DLL, as returned by LoadDll(). - name Name of the symbol. - - Returns the pointer to the symbol or NULL on error. - */ - static void *GetSymbol(wxDllType dllHandle, const wxString &name, bool *success = 0); - - // return the standard DLL extension (with leading dot) for this platform - static wxString GetDllExt() { return wxDynamicLibrary::GetDllExt(); } - -private: - - wxDllLoader(); // forbid construction of objects -}; - - -// ---------------------------------------------------------------------------- -// wxLibrary -// ---------------------------------------------------------------------------- - -#include "wx/hash.h" - -class WXDLLIMPEXP_BASE wxLibrary : public wxObject -{ -public: - wxLibrary(wxDllType handle); - virtual ~wxLibrary(); - - // Get a symbol from the dynamic library - void *GetSymbol(const wxString& symbname); - - // Create the object whose classname is "name" - wxObject *CreateObject(const wxString& name); - -protected: - void PrepareClasses(wxClassInfo *first); - - wxDllType m_handle; - -public: - wxHashTable classTable; -}; - -// ---------------------------------------------------------------------------- -// wxLibraries -// ---------------------------------------------------------------------------- - -class WXDLLIMPEXP_BASE wxLibraries -{ -public: - wxLibraries(); - ~wxLibraries(); - - // caller is responsible for deleting the returned pointer if !NULL - wxLibrary *LoadLibrary(const wxString& basename); - - wxObject *CreateObject(const wxString& name); - -protected: - wxList m_loaded; -}; - -// ---------------------------------------------------------------------------- -// Global variables -// ---------------------------------------------------------------------------- - -extern WXDLLIMPEXP_DATA_BASE(wxLibraries) wxTheLibraries; - -#endif // WXWIN_COMPATIBILITY_2_2 && wxUSE_DYNAMIC_LOADER - // ---------------------------------------------------------------------------- // Interesting defines // ----------------------------------------------------------------------------