XERCES_CPP_NAMESPACE_USE
-namespace Kumu {
- void init_xml_dom();
- typedef std::basic_string<XMLCh> XercesString;
- bool UTF_8_to_XercesString(const std::string& in_str, XercesString& out_str);
- bool UTF_8_to_XercesString(const char* in_str, XercesString& out_str);
- bool XercesString_to_UTF_8(const XercesString& in_str, std::string& out_str);
- bool XercesString_to_UTF_8(const XMLCh* in_str, std::string& out_str);
+extern "C"
+{
+ void kumu_init_xml_dom();
+ bool kumu_UTF_8_to_XercesString(const std::string& in_str, std::basic_string<XMLCh>& out_str);
+ bool kumu_UTF_8_to_XercesString_p(const char* in_str, std::basic_string<XMLCh>& out_str);
+ bool kumu_XercesString_to_UTF_8(const std::basic_string<XMLCh>& in_str, std::string& out_str);
+ bool kumu_XercesString_to_UTF_8_p(const XMLCh* in_str, std::string& out_str);
}
#endif
if ( ! XML_Parse(Parser, document, doc_len, 1) )
{
- DefaultLogSink().Error("XML Parse error on line %d: %s\n",
- XML_GetCurrentLineNumber(Parser),
- XML_ErrorString(XML_GetErrorCode(Parser)));
XML_ParserFree(Parser);
return false;
}
//
void
-Kumu::init_xml_dom()
+kumu_init_xml_dom()
{
if ( ! sg_xml_init )
{
//
bool
-Kumu::XercesString_to_UTF_8(const Kumu::XercesString& in_str, std::string& out_str) {
- return XercesString_to_UTF_8(in_str.c_str(), out_str);
+kumu_XercesString_to_UTF_8(const std::basic_string<XMLCh>& in_str, std::string& out_str) {
+ return kumu_XercesString_to_UTF_8_p(in_str.c_str(), out_str);
}
//
bool
-Kumu::XercesString_to_UTF_8(const XMLCh* in_str, std::string& out_str)
+kumu_XercesString_to_UTF_8_p(const XMLCh* in_str, std::string& out_str)
{
assert(in_str);
assert(sg_xml_init);
//
bool
-Kumu::UTF_8_to_XercesString(const std::string& in_str, Kumu::XercesString& out_str) {
- return UTF_8_to_XercesString(in_str.c_str(), out_str);
+kumu_UTF_8_to_XercesString(const std::string& in_str, std::basic_string<XMLCh>& out_str) {
+ return kumu_UTF_8_to_XercesString_p(in_str.c_str(), out_str);
}
//
bool
-Kumu::UTF_8_to_XercesString(const char* in_str, Kumu::XercesString& out_str)
+kumu_UTF_8_to_XercesString_p(const char* in_str, std::basic_string<XMLCh>& out_str)
{
assert(in_str);
assert(sg_xml_init);
assert(x_name);
std::string tx_name;
- if ( ! XercesString_to_UTF_8(x_name, tx_name) )
+ if ( ! kumu_XercesString_to_UTF_8(x_name, tx_name) )
m_HasEncodeErrors = true;
const char* name = tx_name.c_str();
for ( ui32_t i = 0; i < a_len; i++)
{
std::string aname, value;
- if ( ! XercesString_to_UTF_8(attributes.getName(i), aname) )
+ if ( ! kumu_XercesString_to_UTF_8(attributes.getName(i), aname) )
m_HasEncodeErrors = true;
- if ( ! XercesString_to_UTF_8(attributes.getValue(i), value) )
+ if ( ! kumu_XercesString_to_UTF_8(attributes.getValue(i), value) )
m_HasEncodeErrors = true;
const char* x_aname = aname.c_str();
m_Scope.pop();
}
+#if XERCES_VERSION_MAJOR < 3
void characters(const XMLCh *const chars, const unsigned int length)
+#else
+ void characters(const XMLCh* const chars, const XMLSize_t length)
+#endif
{
if ( length > 0 )
{
std::string tmp;
- if ( ! XercesString_to_UTF_8(chars, tmp) )
+ if ( ! kumu_XercesString_to_UTF_8(chars, tmp) )
m_HasEncodeErrors = true;
m_Scope.top()->AppendBody(tmp);
return false;
}
- init_xml_dom();
+ kumu_init_xml_dom();
int errorCount = 0;
SAXParser* parser = new SAXParser();
return false;
}
- init_xml_dom();
-
+ kumu_init_xml_dom();
+
int errorCount = 0;
SAXParser* parser = new SAXParser();
++errorCount;
}
}
- catch (const XMLException& e)
- {
- char* message = XMLString::transcode(e.getMessage());
- DefaultLogSink().Error("Parser error: %s\n", message);
- XMLString::release(&message);
- errorCount++;
- }
- catch (const SAXParseException& e)
- {
- char* message = XMLString::transcode(e.getMessage());
- DefaultLogSink().Error("Parser error: %s at line %d\n", message, e.getLineNumber());
- XMLString::release(&message);
- errorCount++;
- }
catch (...)
{
- DefaultLogSink().Error("Unexpected XML parser error\n");
errorCount++;
}
if ( errorCount == 0 )
- m_NamespaceOwner = (void*)docHandler->TakeNamespaceMap();
+ {
+ m_NamespaceOwner = (void*)docHandler->TakeNamespaceMap();
+ }
delete parser;
delete docHandler;