]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/dynlib.h
IS_KIND_OF -> wxIS_KIND_OF compilation fix
[wxWidgets.git] / include / wx / dynlib.h
index a1d3c794647a90632bb2dba706a8821aaae23956..ceecce4a5842bcea2940498ff5fac51c2175a981 100644 (file)
@@ -1,5 +1,5 @@
-#ifndef __DYNLIB_H__
-#define __DYNLIB_H__
+#ifndef _WX_DYNLIB_H__
+#define _WX_DYNLIB_H__
 
 #ifdef __GNUG__
 #pragma interface
@@ -8,53 +8,23 @@
 #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);
 
@@ -64,16 +34,21 @@ public:
   // 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);
 
@@ -89,7 +64,10 @@ extern wxLibraries wxTheLibraries;
 // ---------------------------------------------------------------------------
 // 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