xmlres: added support for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@7854 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -64,7 +64,7 @@ enum wxXmlIOType
|
|||||||
// Example: in <img src="hello.gif" id="3"/> "src" is property with value
|
// Example: in <img src="hello.gif" id="3"/> "src" is property with value
|
||||||
// "hello.gif" and "id" is prop. with value "3".
|
// "hello.gif" and "id" is prop. with value "3".
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlProperty
|
class wxXmlProperty
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlProperty() : m_Next(NULL) {}
|
wxXmlProperty() : m_Next(NULL) {}
|
||||||
@@ -94,7 +94,7 @@ class WXDLLEXPORT wxXmlProperty
|
|||||||
// element with name="title", irrelevant content and one child (wxXML_TEXT_NODE
|
// element with name="title", irrelevant content and one child (wxXML_TEXT_NODE
|
||||||
// with content="hi").
|
// with content="hi").
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlNode
|
class wxXmlNode
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlNode() : m_Properties(NULL), m_Parent(NULL),
|
wxXmlNode() : m_Properties(NULL), m_Parent(NULL),
|
||||||
@@ -165,7 +165,7 @@ class WXDLLEXPORT wxXmlNode
|
|||||||
// internal representation is independant on libxml and you can use
|
// internal representation is independant on libxml and you can use
|
||||||
// it without libxml (see Load/SaveBinary).
|
// it without libxml (see Load/SaveBinary).
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlDocument : public wxObject
|
class wxXmlDocument : public wxObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlDocument() : wxObject(), m_Version(_T("1.0")), m_Root(NULL) {}
|
wxXmlDocument() : wxObject(), m_Version(_T("1.0")), m_Root(NULL) {}
|
||||||
@@ -184,8 +184,6 @@ class WXDLLEXPORT wxXmlDocument : public wxObject
|
|||||||
bool Load(wxInputStream& stream, wxXmlIOType io_type = wxXML_IO_AUTO);
|
bool Load(wxInputStream& stream, wxXmlIOType io_type = wxXML_IO_AUTO);
|
||||||
|
|
||||||
// Saves document as .xml file.
|
// Saves document as .xml file.
|
||||||
// NOTE: Any call to this method will result into linking against libxml
|
|
||||||
// and app's binary size will grow by ca. 250kB
|
|
||||||
bool Save(const wxString& filename, wxXmlIOType io_type) const;
|
bool Save(const wxString& filename, wxXmlIOType io_type) const;
|
||||||
bool Save(wxOutputStream& stream, wxXmlIOType io_type) const;
|
bool Save(wxOutputStream& stream, wxXmlIOType io_type) const;
|
||||||
|
|
||||||
@@ -221,7 +219,7 @@ class WXDLLEXPORT wxXmlDocument : public wxObject
|
|||||||
// wxXmlIOHandler takes care of loading and/or saving XML data.
|
// wxXmlIOHandler takes care of loading and/or saving XML data.
|
||||||
// see xmlio.h for available handlers
|
// see xmlio.h for available handlers
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlIOHandler : public wxObject
|
class wxXmlIOHandler : public wxObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlIOHandler() {}
|
wxXmlIOHandler() {}
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
#include "wx/xml/xml.h"
|
#include "wx/xml/xml.h"
|
||||||
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlIOHandlerBin : public wxXmlIOHandler
|
class wxXmlIOHandlerBin : public wxXmlIOHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlIOHandlerBin() {}
|
wxXmlIOHandlerBin() {}
|
||||||
@@ -41,7 +41,7 @@ class WXDLLEXPORT wxXmlIOHandlerBin : public wxXmlIOHandler
|
|||||||
|
|
||||||
#if wxUSE_ZLIB
|
#if wxUSE_ZLIB
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlIOHandlerBinZ : public wxXmlIOHandlerBin
|
class wxXmlIOHandlerBinZ : public wxXmlIOHandlerBin
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlIOHandlerBinZ() {}
|
wxXmlIOHandlerBinZ() {}
|
||||||
@@ -57,7 +57,7 @@ class WXDLLEXPORT wxXmlIOHandlerBinZ : public wxXmlIOHandlerBin
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlIOHandlerLibxml : public wxXmlIOHandler
|
class wxXmlIOHandlerLibxml : public wxXmlIOHandler
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual wxXmlIOType GetType() { return wxXML_IO_LIBXML; }
|
virtual wxXmlIOType GetType() { return wxXML_IO_LIBXML; }
|
||||||
|
@@ -40,7 +40,7 @@ enum
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlResourceDataRecord
|
class wxXmlResourceDataRecord
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlResourceDataRecord() : Doc(NULL), Time(wxDateTime::Now()) {}
|
wxXmlResourceDataRecord() : Doc(NULL), Time(wxDateTime::Now()) {}
|
||||||
@@ -57,7 +57,7 @@ WX_DECLARE_OBJARRAY(wxXmlResourceDataRecord, wxXmlResourceDataRecords);
|
|||||||
// (or derived forms, either binary or zipped -- see manual for
|
// (or derived forms, either binary or zipped -- see manual for
|
||||||
// details).
|
// details).
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlResource : public wxObject
|
class wxXmlResource : public wxObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlResource();
|
wxXmlResource();
|
||||||
@@ -152,7 +152,7 @@ extern wxXmlResource *wxTheXmlResource;
|
|||||||
#define XMLID(str_id) wxXmlResource::GetXMLID(str_id)
|
#define XMLID(str_id) wxXmlResource::GetXMLID(str_id)
|
||||||
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxXmlResourceHandler : public wxObject
|
class wxXmlResourceHandler : public wxObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxXmlResourceHandler();
|
wxXmlResourceHandler();
|
||||||
|
286
contrib/src/xml/wxxmlVC.dsp
Normal file
286
contrib/src/xml/wxxmlVC.dsp
Normal file
@@ -0,0 +1,286 @@
|
|||||||
|
# Microsoft Developer Studio Project File - Name="wxxmlVC" - Package Owner=<4>
|
||||||
|
# Microsoft Developer Studio Generated Build File, Format Version 6.00
|
||||||
|
# ** DO NOT EDIT **
|
||||||
|
|
||||||
|
# TARGTYPE "Win32 (x86) Static Library" 0x0104
|
||||||
|
|
||||||
|
CFG=wxxmlVC - Win32 Debug
|
||||||
|
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
|
||||||
|
!MESSAGE use the Export Makefile command and run
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "wxxmlVC.mak".
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE You can specify a configuration when running NMAKE
|
||||||
|
!MESSAGE by defining the macro CFG on the command line. For example:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE NMAKE /f "wxxmlVC.mak" CFG="wxxmlVC - Win32 Debug"
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE Possible choices for configuration are:
|
||||||
|
!MESSAGE
|
||||||
|
!MESSAGE "wxxmlVC - Win32 Release" (based on "Win32 (x86) Static Library")
|
||||||
|
!MESSAGE "wxxmlVC - Win32 Debug" (based on "Win32 (x86) Static Library")
|
||||||
|
!MESSAGE
|
||||||
|
|
||||||
|
# Begin Project
|
||||||
|
# PROP AllowPerConfigDependencies 0
|
||||||
|
# PROP Scc_ProjName ""
|
||||||
|
# PROP Scc_LocalPath ""
|
||||||
|
CPP=cl.exe
|
||||||
|
RSC=rc.exe
|
||||||
|
|
||||||
|
!IF "$(CFG)" == "wxxmlVC - Win32 Release"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 0
|
||||||
|
# PROP BASE Output_Dir "Release"
|
||||||
|
# PROP BASE Intermediate_Dir "Release"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 0
|
||||||
|
# PROP Output_Dir "Release"
|
||||||
|
# PROP Intermediate_Dir "Release"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MD /W3 /GX /O1 /Ob2 /I "../../../include" /I "../../include" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LIB32=link.exe -lib
|
||||||
|
# ADD BASE LIB32 /nologo
|
||||||
|
# ADD LIB32 /nologo /out:"..\..\lib\wxxml.lib"
|
||||||
|
|
||||||
|
!ELSEIF "$(CFG)" == "wxxmlVC - Win32 Debug"
|
||||||
|
|
||||||
|
# PROP BASE Use_MFC 0
|
||||||
|
# PROP BASE Use_Debug_Libraries 1
|
||||||
|
# PROP BASE Output_Dir "Debug"
|
||||||
|
# PROP BASE Intermediate_Dir "Debug"
|
||||||
|
# PROP BASE Target_Dir ""
|
||||||
|
# PROP Use_MFC 0
|
||||||
|
# PROP Use_Debug_Libraries 1
|
||||||
|
# PROP Output_Dir "Debug"
|
||||||
|
# PROP Intermediate_Dir "Debug"
|
||||||
|
# PROP Target_Dir ""
|
||||||
|
# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
|
||||||
|
# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../../../include" /I "../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
|
||||||
|
# SUBTRACT CPP /YX
|
||||||
|
# ADD BASE RSC /l 0x809
|
||||||
|
# ADD RSC /l 0x809
|
||||||
|
BSC32=bscmake.exe
|
||||||
|
# ADD BASE BSC32 /nologo
|
||||||
|
# ADD BSC32 /nologo
|
||||||
|
LIB32=link.exe -lib
|
||||||
|
# ADD BASE LIB32 /nologo
|
||||||
|
# ADD LIB32 /nologo /out:"..\..\lib\wxxmld.lib"
|
||||||
|
|
||||||
|
!ENDIF
|
||||||
|
|
||||||
|
# Begin Target
|
||||||
|
|
||||||
|
# Name "wxxmlVC - Win32 Release"
|
||||||
|
# Name "wxxmlVC - Win32 Debug"
|
||||||
|
# Begin Group "Source files"
|
||||||
|
|
||||||
|
# PROP Default_Filter ""
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_bttn.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_chckb.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_chckl.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_choic.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_combo.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_dlg.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_gauge.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_html.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_menu.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_notbk.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_panel.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_radbt.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_radbx.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_sizer.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_slidr.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_spin.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_stbmp.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_sttxt.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xh_text.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xml.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xmlbin.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xmlbinz.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xmlpars.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xmlres.cpp
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=.\xmlrsall.cpp
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# Begin Group "Header files"
|
||||||
|
|
||||||
|
# PROP Default_Filter ""
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_all.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_bttn.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_chckb.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_chckl.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_choic.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_combo.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_dlg.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_gauge.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_html.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_menu.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_notbk.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_panel.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_radbt.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_radbx.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_sizer.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_slidr.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_spin.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_stbmp.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_sttxt.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xh_text.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xml.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xmlio.h
|
||||||
|
# End Source File
|
||||||
|
# Begin Source File
|
||||||
|
|
||||||
|
SOURCE=..\..\include\wx\xml\xmlres.h
|
||||||
|
# End Source File
|
||||||
|
# End Group
|
||||||
|
# End Target
|
||||||
|
# End Project
|
29
contrib/src/xml/wxxmlVC.dsw
Normal file
29
contrib/src/xml/wxxmlVC.dsw
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
Microsoft Developer Studio Workspace File, Format Version 6.00
|
||||||
|
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Project: "wxxmlVC"=.\wxxmlVC.dsp - Package Owner=<4>
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<4>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
Global:
|
||||||
|
|
||||||
|
Package=<5>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
Package=<3>
|
||||||
|
{{{
|
||||||
|
}}}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
|
@@ -43,6 +43,8 @@ typedef xmlNodePtr (*type_xmlNewChild)(xmlNodePtr, xmlNsPtr, const xmlChar *, co
|
|||||||
typedef xmlChar * (*type_xmlNodeListGetString)(xmlDocPtr, xmlNodePtr, int);
|
typedef xmlChar * (*type_xmlNodeListGetString)(xmlDocPtr, xmlNodePtr, int);
|
||||||
typedef xmlNodePtr (*type_xmlDocGetRootElement)(xmlDocPtr);
|
typedef xmlNodePtr (*type_xmlDocGetRootElement)(xmlDocPtr);
|
||||||
typedef xmlNodePtr (*type_xmlDocSetRootElement)(xmlDocPtr doc, xmlNodePtr root);
|
typedef xmlNodePtr (*type_xmlDocSetRootElement)(xmlDocPtr doc, xmlNodePtr root);
|
||||||
|
typedef void (*(*type_xmlFree))(void *);
|
||||||
|
typedef int (*type_xmlKeepBlanksDefault)(int);
|
||||||
|
|
||||||
static struct
|
static struct
|
||||||
{
|
{
|
||||||
@@ -62,6 +64,8 @@ static struct
|
|||||||
type_xmlNodeListGetString xmlNodeListGetString;
|
type_xmlNodeListGetString xmlNodeListGetString;
|
||||||
type_xmlDocGetRootElement xmlDocGetRootElement;
|
type_xmlDocGetRootElement xmlDocGetRootElement;
|
||||||
type_xmlDocSetRootElement xmlDocSetRootElement;
|
type_xmlDocSetRootElement xmlDocSetRootElement;
|
||||||
|
type_xmlFree xmlFree;
|
||||||
|
type_xmlKeepBlanksDefault xmlKeepBlanksDefault;
|
||||||
} gs_libxmlDLL;
|
} gs_libxmlDLL;
|
||||||
|
|
||||||
static bool gs_libxmlLoaded = FALSE;
|
static bool gs_libxmlLoaded = FALSE;
|
||||||
@@ -88,17 +92,37 @@ static bool LoadLibxml()
|
|||||||
gs_libxmlLoadFailed = TRUE;
|
gs_libxmlLoadFailed = TRUE;
|
||||||
|
|
||||||
wxLogDebug("Loading libxml.so.2...");
|
wxLogDebug("Loading libxml.so.2...");
|
||||||
|
{
|
||||||
|
wxLogNull lg;
|
||||||
#ifdef __UNIX__
|
#ifdef __UNIX__
|
||||||
gs_libxmlDLL.Handle =
|
gs_libxmlDLL.Handle =
|
||||||
|
wxDllLoader::LoadLibrary(_T("wxlibxml.so.2"), &gs_libxmlLoaded);
|
||||||
|
if (!gs_libxmlLoaded) gs_libxmlDLL.Handle =
|
||||||
wxDllLoader::LoadLibrary(_T("libxml.so.2"), &gs_libxmlLoaded);
|
wxDllLoader::LoadLibrary(_T("libxml.so.2"), &gs_libxmlLoaded);
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __WXMSW__
|
||||||
|
gs_libxmlDLL.Handle =
|
||||||
|
wxDllLoader::LoadLibrary(_T("wxlibxml2.dll"), &gs_libxmlLoaded);
|
||||||
|
if (!gs_libxmlLoaded) gs_libxmlDLL.Handle =
|
||||||
|
wxDllLoader::LoadLibrary(_T("libxml2.dll"), &gs_libxmlLoaded);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (!gs_libxmlLoaded) return FALSE;
|
if (!gs_libxmlLoaded)
|
||||||
|
{
|
||||||
|
wxLogError(_("Failed to load libxml shared library."));
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
#define LOAD_SYMBOL(sym) \
|
#define LOAD_SYMBOL(sym) \
|
||||||
gs_libxmlDLL.sym = \
|
gs_libxmlDLL.sym = \
|
||||||
(type_##sym)wxDllLoader::GetSymbol(gs_libxmlDLL.Handle, _T(#sym)); \
|
(type_##sym)wxDllLoader::GetSymbol(gs_libxmlDLL.Handle, _T(#sym)); \
|
||||||
if (!gs_libxmlDLL.sym) { ReleaseLibxml(); return FALSE; }
|
if (!gs_libxmlDLL.sym) \
|
||||||
|
{ \
|
||||||
|
ReleaseLibxml(); \
|
||||||
|
wxLogError(_("Failed to load libxml shared library.")); \
|
||||||
|
return FALSE; \
|
||||||
|
}
|
||||||
|
|
||||||
LOAD_SYMBOL(xmlCreatePushParserCtxt)
|
LOAD_SYMBOL(xmlCreatePushParserCtxt)
|
||||||
LOAD_SYMBOL(xmlNewText)
|
LOAD_SYMBOL(xmlNewText)
|
||||||
@@ -114,6 +138,8 @@ static bool LoadLibxml()
|
|||||||
LOAD_SYMBOL(xmlNodeListGetString)
|
LOAD_SYMBOL(xmlNodeListGetString)
|
||||||
LOAD_SYMBOL(xmlDocGetRootElement)
|
LOAD_SYMBOL(xmlDocGetRootElement)
|
||||||
LOAD_SYMBOL(xmlDocSetRootElement)
|
LOAD_SYMBOL(xmlDocSetRootElement)
|
||||||
|
LOAD_SYMBOL(xmlFree)
|
||||||
|
LOAD_SYMBOL(xmlKeepBlanksDefault)
|
||||||
|
|
||||||
#undef LOAD_SYMBOL
|
#undef LOAD_SYMBOL
|
||||||
|
|
||||||
@@ -153,7 +179,7 @@ static wxXmlProperty *CreateWXProperty(xmlDocPtr doc, xmlAttrPtr attr)
|
|||||||
gs_libxmlDLL.xmlNodeListGetString(doc, attr->children, 1);
|
gs_libxmlDLL.xmlNodeListGetString(doc, attr->children, 1);
|
||||||
wxXmlProperty *prop =
|
wxXmlProperty *prop =
|
||||||
new wxXmlProperty(attr->name, val, CreateWXProperty(doc, attr->next));
|
new wxXmlProperty(attr->name, val, CreateWXProperty(doc, attr->next));
|
||||||
free(val);
|
(*gs_libxmlDLL.xmlFree)(val);
|
||||||
return prop;
|
return prop;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,6 +213,7 @@ bool wxXmlIOHandlerLibxml::Load(wxInputStream& stream, wxXmlDocument& doc)
|
|||||||
if (res > 0)
|
if (res > 0)
|
||||||
{
|
{
|
||||||
bool okay = TRUE;
|
bool okay = TRUE;
|
||||||
|
gs_libxmlDLL.xmlKeepBlanksDefault(0);
|
||||||
ctxt = gs_libxmlDLL.xmlCreatePushParserCtxt(NULL, NULL,
|
ctxt = gs_libxmlDLL.xmlCreatePushParserCtxt(NULL, NULL,
|
||||||
buffer, res, ""/*docname*/);
|
buffer, res, ""/*docname*/);
|
||||||
while ((res = stream.Read(buffer, 1024).LastRead()) > 0)
|
while ((res = stream.Read(buffer, 1024).LastRead()) > 0)
|
||||||
@@ -249,6 +276,7 @@ bool wxXmlIOHandlerLibxml::Save(wxOutputStream& stream, const wxXmlDocument& doc
|
|||||||
|
|
||||||
wxASSERT_MSG(doc.GetRoot() != NULL, _("Trying to save empty document!"));
|
wxASSERT_MSG(doc.GetRoot() != NULL, _("Trying to save empty document!"));
|
||||||
|
|
||||||
|
gs_libxmlDLL.xmlKeepBlanksDefault(0);
|
||||||
dc = gs_libxmlDLL.xmlNewDoc((xmlChar*)doc.GetVersion().mb_str());
|
dc = gs_libxmlDLL.xmlNewDoc((xmlChar*)doc.GetVersion().mb_str());
|
||||||
|
|
||||||
gs_libxmlDLL.xmlDocSetRootElement(dc,
|
gs_libxmlDLL.xmlDocSetRootElement(dc,
|
||||||
@@ -262,7 +290,7 @@ bool wxXmlIOHandlerLibxml::Save(wxOutputStream& stream, const wxXmlDocument& doc
|
|||||||
gs_libxmlDLL.xmlDocDumpMemory(dc, &buffer, &size);
|
gs_libxmlDLL.xmlDocDumpMemory(dc, &buffer, &size);
|
||||||
gs_libxmlDLL.xmlFreeDoc(dc);
|
gs_libxmlDLL.xmlFreeDoc(dc);
|
||||||
stream.Write(buffer, size);
|
stream.Write(buffer, size);
|
||||||
free(buffer);
|
(*gs_libxmlDLL.xmlFree)(buffer);
|
||||||
return stream.LastWrite() == (unsigned)size;
|
return stream.LastWrite() == (unsigned)size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user