HP-UX support added

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1751 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1999-02-22 19:42:45 +00:00
parent f76f940bce
commit 7b0bfbb256
2 changed files with 259 additions and 179 deletions

View File

@@ -1,68 +1,101 @@
/////////////////////////////////////////////////////////////////////////////
// Name: dynlib.cpp
// Purpose: Dynamic library management
// Author: Guilhem Lavaux
// Modified by:
// Created: 20/07/98
// RCS-ID: $Id$
// Copyright: (c) Guilhem Lavaux
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_DYNLIB_H__
#define _WX_DYNLIB_H__
#ifdef __GNUG__
#pragma interface
#pragma interface
#endif
#include <wx/string.h>
#include <wx/list.h>
#include <wx/dynarray.h>
#include <wx/hash.h>
#if defined(HAVE_DLOPEN)
#include <dlfcn.h>
typedef void *wxDllType;
#elif defined(HAVE_SHLLOAD)
#include <dl.h>
typedef void *wxDllType;
#elif defined(__WINDOWS__)
#include <windows.h>
typedef HMODULE wxDllType;
#elif defined(__WXMAC__)
typedef CFragConnectionID wxDllType;
#else
#error "wxLibrary can't be compiled on this platform, sorry."
#endif // OS
// defined in windows.h
#ifdef LoadLibrary
#undef LoadLibrary
#undef LoadLibrary
#endif
// ---------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// wxLibrary
// ----------------------------------------------------------------------------
class wxLibrary: public wxObject {
protected:
void *m_handle;
bool m_destroy;
public:
wxHashTable classTable;
class wxLibrary : public wxObject
{
public:
wxHashTable classTable;
public:
wxLibrary(void *handle);
~wxLibrary(void);
public:
wxLibrary(void *handle);
~wxLibrary();
// Get a symbol from the dynamic library
void *GetSymbol(const wxString& symbname);
// Get a symbol from the dynamic library
void *GetSymbol(const wxString& symbname);
// Create the object whose classname is "name"
wxObject *CreateObject(const wxString& name);
// Create the object whose classname is "name"
wxObject *CreateObject(const wxString& name);
// Merge the symbols with the main symbols: WARNING! the library will not
// be unloaded.
void MergeWithSystem();
protected:
void PrepareClasses(wxClassInfo *first);
protected:
void PrepareClasses(wxClassInfo *first);
wxDllType m_handle;
};
// ---------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// wxLibraries
// ----------------------------------------------------------------------------
class wxLibraries {
protected:
wxList m_loaded;
public:
wxLibraries(void);
~wxLibraries(void);
class wxLibraries
{
public:
wxLibraries();
~wxLibraries();
wxLibrary *LoadLibrary(const wxString& name);
wxObject *CreateObject(const wxString& name);
// 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 wxLibraries wxTheLibraries;
// ---------------------------------------------------------------------------
// ----------------------------------------------------------------------------
// Interesting defines
// ----------------------------------------------------------------------------
#define WXDLL_ENTRY_FUNCTION() \
extern "C" wxClassInfo *wxGetClassFirst(); \
@@ -70,4 +103,4 @@ wxClassInfo *wxGetClassFirst() { \
return wxClassInfo::GetFirst(); \
}
#endif
#endif // _WX_DYNLIB_H__