-#ifndef __DYNLIB_H__
-#define __DYNLIB_H__
+#ifndef _WX_DYNLIB_H__
+#define _WX_DYNLIB_H__
#ifdef __GNUG__
#pragma interface
#include <wx/string.h>
#include <wx/list.h>
#include <wx/dynarray.h>
+#include <wx/hash.h>
-// ---------------------------------------------------------------------------
-// Some more info on a class
-
-typedef struct {
- wxClassInfo *class_info;
- wxString path;
-} wxClassLibInfo;
-
-// ---------------------------------------------------------------------------
-// Useful arrays
-
-WX_DEFINE_ARRAY(wxClassInfo *, wxArrayClassInfo);
-WX_DEFINE_ARRAY(wxClassLibInfo *, wxArrayClassLibInfo);
-
-// ---------------------------------------------------------------------------
-// wxClassLibrary
-
-class wxClassLibrary {
-protected:
- wxArrayClassLibInfo m_list;
-public:
- wxClassLibrary(void);
- ~wxClassLibrary(void);
-
- // Dynamic (un)register a (new) class in the database
- void RegisterClass(wxClassInfo *class_info, const wxString& path);
- void UnregisterClass(wxClassInfo *class_info);
-
- // Fetch all infos whose name matches the string (wildcards allowed)
- bool FetchInfos(const wxString& path, wxArrayClassLibInfo& infos);
-
- // Create all objects whose name matches the string (wildcards allowed)
- bool CreateObjects(const wxString& path, wxArrayClassInfo& objs);
-
- // Create one object using the EXACT name
- wxObject *CreateObject(const wxString& path);
-};
+#ifdef LoadLibrary
+#undef LoadLibrary
+#endif
// ---------------------------------------------------------------------------
// wxLibrary
class wxLibrary: public wxObject {
-protected:
- wxClassLibrary *m_liblist;
+ protected:
void *m_handle;
-public:
+ bool m_destroy;
+ public:
+ wxHashTable classTable;
+
+ public:
wxLibrary(void *handle);
~wxLibrary(void);
// Create the object whose classname is "name"
wxObject *CreateObject(const wxString& name);
- wxClassLibrary *ClassLib() const;
+ // Merge the symbols with the main symbols: WARNING! the library will not
+ // be unloaded.
+ void MergeWithSystem();
+
+ protected:
+ void PrepareClasses(wxClassInfo *first);
};
// ---------------------------------------------------------------------------
// wxLibraries
class wxLibraries {
-protected:
+ protected:
wxList m_loaded;
-public:
+ public:
wxLibraries(void);
~wxLibraries(void);
// ---------------------------------------------------------------------------
// Interesting defines
-#define WXDLL_ENTRY_FUNCTION() extern "C" wxClassLibrary *GetClassList()
-#define WXDLL_EXIT_FUNCTION(param) extern "C" void FreeClassList(wxClassLibrary *param)
+#define WXDLL_ENTRY_FUNCTION() \
+extern "C" wxClassInfo *wxGetClassFirst(); \
+wxClassInfo *wxGetClassFirst() { \
+ return wxClassInfo::GetFirst(); \
+}
#endif