Removed WXWIN_COMPATIBILITY_2_2 together with code guarded by it.

Changed default for WXWIN_COMPATIBILITY_2_4 to 0.
  Added WXWIN_COMPATIBILITY_2_6 (defaults to 1).
  Ran build/update-setup-h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35858 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Mattia Barbon
2005-10-09 15:48:42 +00:00
parent 92b0cd9eb0
commit dee1a63ff5
59 changed files with 990 additions and 1678 deletions

View File

@@ -359,225 +359,5 @@ void wxPluginManager::Unload()
m_entry = NULL;
}
#if WXWIN_COMPATIBILITY_2_2
wxPluginLibrary *wxPluginManager::GetObjectFromHandle(wxDllType handle)
{
for ( wxDLManifest::iterator i = ms_manifest->begin();
i != ms_manifest->end();
++i )
{
wxPluginLibrary * const lib = i->second;
if ( lib->GetLibHandle() == handle )
return lib;
}
return NULL;
}
// ---------------------------------------------------------------------------
// wxDllLoader (all these methods are static)
// ---------------------------------------------------------------------------
wxDllType wxDllLoader::LoadLibrary(const wxString &name, bool *success)
{
wxPluginLibrary *p = wxPluginManager::LoadLibrary
(
name,
wxDL_DEFAULT | wxDL_VERBATIM | wxDL_NOSHARE
);
if ( success )
*success = p != NULL;
return p ? p->GetLibHandle() : 0;
}
void wxDllLoader::UnloadLibrary(wxDllType handle)
{
wxPluginLibrary *p = wxPluginManager::GetObjectFromHandle(handle);
wxCHECK_RET( p, _T("Unloading a library not loaded with wxDllLoader?") );
p->UnrefLib();
}
void *
wxDllLoader::GetSymbol(wxDllType dllHandle, const wxString &name, bool *success)
{
wxPluginLibrary *p = wxPluginManager::GetObjectFromHandle(dllHandle);
if ( !p )
{
wxFAIL_MSG( _T("Using a library not loaded with wxDllLoader?") );
if ( success )
*success = false;
return NULL;
}
return p->GetSymbol(name, success);
}
// ---------------------------------------------------------------------------
// Global variables
// ---------------------------------------------------------------------------
wxLibraries wxTheLibraries;
// ============================================================================
// implementation
// ============================================================================
// construct the full name from the base shared object name: adds a .dll
// suffix under Windows or .so under Unix
static wxString ConstructLibraryName(const wxString& basename)
{
wxString fullname;
fullname << basename << wxDllLoader::GetDllExt();
return fullname;
}
// ---------------------------------------------------------------------------
// wxLibrary (one instance per dynamic library)
// ---------------------------------------------------------------------------
wxLibrary::wxLibrary(wxDllType handle)
{
typedef wxClassInfo *(*t_get_first)(void);
t_get_first get_first;
m_handle = handle;
// Some system may use a local heap for library.
get_first = (t_get_first)GetSymbol(_T("wxGetClassFirst"));
// It is a wxWidgets DLL.
if (get_first)
PrepareClasses(get_first());
}
wxLibrary::~wxLibrary()
{
if ( m_handle )
{
wxDllLoader::UnloadLibrary(m_handle);
}
}
wxObject *wxLibrary::CreateObject(const wxString& name)
{
wxClassInfo *info = (wxClassInfo *)classTable.Get(name);
if (!info)
return NULL;
return info->CreateObject();
}
void wxLibrary::PrepareClasses(wxClassInfo *first)
{
// Index all class infos by their class name
wxClassInfo *info = first;
while (info)
{
if (info->m_className)
classTable.Put(info->m_className, (wxObject *)info);
info = info->m_next;
}
#if !wxUSE_EXTENDED_RTTI
// Set base pointers for each wxClassInfo
info = first;
while (info)
{
if (info->GetBaseClassName1())
info->m_baseInfo1 = (wxClassInfo *)classTable.Get(info->GetBaseClassName1());
if (info->GetBaseClassName2())
info->m_baseInfo2 = (wxClassInfo *)classTable.Get(info->GetBaseClassName2());
info = info->m_next;
}
#endif
}
void *wxLibrary::GetSymbol(const wxString& symbname)
{
return wxDllLoader::GetSymbol(m_handle, symbname);
}
// ---------------------------------------------------------------------------
// wxLibraries (only one instance should normally exist)
// ---------------------------------------------------------------------------
wxLibraries::wxLibraries():m_loaded(wxKEY_STRING)
{
}
wxLibraries::~wxLibraries()
{
wxNode *node = m_loaded.GetFirst();
while (node) {
wxLibrary *lib = (wxLibrary *)node->GetData();
delete lib;
node = node->GetNext();
}
}
wxLibrary *wxLibraries::LoadLibrary(const wxString& name)
{
wxLibrary *lib;
wxClassInfo *old_sm_first;
wxNode *node = m_loaded.Find(name.GetData());
if (node != NULL)
return ((wxLibrary *)node->GetData());
// If DLL shares data, this is necessary.
old_sm_first = wxClassInfo::sm_first;
wxClassInfo::sm_first = NULL;
wxString libname = ConstructLibraryName(name);
bool success = false;
wxDllType handle = wxDllLoader::LoadLibrary(libname, &success);
if(success)
{
lib = new wxLibrary(handle);
wxClassInfo::sm_first = old_sm_first;
m_loaded.Append(name.GetData(), lib);
}
else
lib = NULL;
return lib;
}
wxObject *wxLibraries::CreateObject(const wxString& path)
{
wxNode *node = m_loaded.GetFirst();
wxObject *obj;
while (node) {
obj = ((wxLibrary *)node->GetData())->CreateObject(path);
if (obj)
return obj;
node = node->GetNext();
}
return NULL;
}
#endif // WXWIN_COMPATIBILITY_2_2
#endif // wxUSE_DYNAMIC_LOADER