|
From: <vac...@us...> - 2009-06-02 16:42:52
|
Revision: 150
http://xmlwrapp.svn.sourceforge.net/xmlwrapp/?rev=150&view=rev
Author: vaclavslavik
Date: 2009-06-02 16:42:51 +0000 (Tue, 02 Jun 2009)
Log Message:
-----------
make extern "C" callback functions static so that they are not exported as globally visible symbols
Modified Paths:
--------------
trunk/src/libxml/dtd_impl.cxx
trunk/src/libxml/event_parser.cxx
trunk/src/libxml/init.cxx
trunk/src/libxml/tree_parser.cxx
trunk/src/libxslt/init.cxx
trunk/src/libxslt/stylesheet.cxx
Modified: trunk/src/libxml/dtd_impl.cxx
===================================================================
--- trunk/src/libxml/dtd_impl.cxx 2009-06-02 16:20:11 UTC (rev 149)
+++ trunk/src/libxml/dtd_impl.cxx 2009-06-02 16:42:51 UTC (rev 150)
@@ -51,10 +51,24 @@
using namespace xml::impl;
//####################################################################
-namespace {
- extern "C" void dtd_error (void *ctxt, const char *message, ...);
- extern "C" void dtd_warning (void *ctxt, const char*, ...);
-} // end anonymous namespace
+extern "C"
+{
+ //####################################################################
+ static void dtd_error (void *ctxt, const char *message, ...) {
+ dtd_impl *dtd = static_cast<dtd_impl*>(ctxt);
+
+ va_list ap;
+ va_start(ap, message);
+ printf2string(dtd->error_, message, ap);
+ va_end(ap);
+ }
+ //####################################################################
+ static void dtd_warning (void *ctxt, const char*, ...) {
+ dtd_impl *dtd = static_cast<dtd_impl*>(ctxt);
+ ++dtd->warnings_;
+ }
+ //####################################################################
+}
//####################################################################
dtd_impl::dtd_impl (const char *filename) : warnings_(0), dtd_(0) {
if ( (dtd_ = xmlParseDTD(0, reinterpret_cast<const xmlChar*>(filename))) == 0) {
@@ -89,22 +103,3 @@
dtd_ = 0;
return xmldtd;
}
-//####################################################################
-namespace {
- //####################################################################
- extern "C" void dtd_error (void *ctxt, const char *message, ...) {
- dtd_impl *dtd = static_cast<dtd_impl*>(ctxt);
-
- va_list ap;
- va_start(ap, message);
- printf2string(dtd->error_, message, ap);
- va_end(ap);
- }
- //####################################################################
- extern "C" void dtd_warning (void *ctxt, const char*, ...) {
- dtd_impl *dtd = static_cast<dtd_impl*>(ctxt);
- ++dtd->warnings_;
- }
- //####################################################################
-}
-//####################################################################
Modified: trunk/src/libxml/event_parser.cxx
===================================================================
--- trunk/src/libxml/event_parser.cxx 2009-06-02 16:20:11 UTC (rev 149)
+++ trunk/src/libxml/event_parser.cxx 2009-06-02 16:42:51 UTC (rev 150)
@@ -70,18 +70,8 @@
//####################################################################
namespace {
const std::size_t const_buffer_size = 4096;
+}
- extern "C" xmlEntityPtr cb_get_entity (void *, const xmlChar *name);
- extern "C" void cb_start_element (void *parser, const xmlChar *tag, const xmlChar **props);
- extern "C" void cb_end_element (void *parser, const xmlChar *tag);
- extern "C" void cb_text (void *parser, const xmlChar *text, int length);
- extern "C" void cb_pi (void *parser, const xmlChar *target, const xmlChar *data);
- extern "C" void cb_comment (void *parser, const xmlChar *text);
- extern "C" void cb_cdata (void *parser, const xmlChar *text, int length);
- extern "C" void cb_warning (void *parser, const char *message, ...);
- extern "C" void cb_error (void *parser, const char *message, ...);
- extern "C" void cb_ignore (void*, const xmlChar*, int);
-} // end anonymous namespace
//####################################################################
struct xml::impl::epimpl {
public:
@@ -107,6 +97,55 @@
epimpl (const epimpl&);
epimpl& operator= (const epimpl&);
};
+
+extern "C"
+{
+ //####################################################################
+ static void cb_start_element (void *parser, const xmlChar *tag, const xmlChar **props)
+ { static_cast<epimpl*>(parser)->event_start_element(tag, props); }
+ //####################################################################
+ static void cb_end_element (void *parser, const xmlChar *tag)
+ { static_cast<epimpl*>(parser)->event_end_element(tag); }
+ //####################################################################
+ static void cb_text (void *parser, const xmlChar *text, int length)
+ { static_cast<epimpl*>(parser)->event_text(text, length); }
+ //####################################################################
+ static void cb_pi (void *parser, const xmlChar *target, const xmlChar *data)
+ { static_cast<epimpl*>(parser)->event_pi(target, data); }
+ //####################################################################
+ static void cb_comment (void *parser, const xmlChar *text)
+ { static_cast<epimpl*>(parser)->event_comment(text); }
+ //####################################################################
+ static void cb_cdata (void *parser, const xmlChar *text, int length)
+ { static_cast<epimpl*>(parser)->event_cdata(text, length); }
+ //####################################################################
+ static void cb_warning (void *parser, const char *message, ...) {
+ std::string complete_message;
+
+ va_list ap;
+ va_start(ap, message);
+ printf2string(complete_message, message, ap);
+ va_end(ap);
+
+ static_cast<epimpl*>(parser)->event_warning(complete_message);
+ }
+ //####################################################################
+ static void cb_error (void *parser, const char *message, ...) {
+ std::string complete_message;
+
+ va_list ap;
+ va_start(ap, message);
+ printf2string(complete_message, message, ap);
+ va_end(ap);
+
+ static_cast<epimpl*>(parser)->event_error(complete_message);
+ }
+ //####################################################################
+ static void cb_ignore (void*, const xmlChar*, int) {
+ return;
+ }
+} // extern "C"
+
//####################################################################
xml::event_parser::event_parser (void) {
pimpl_ = new epimpl(*this);
@@ -302,53 +341,3 @@
parser_status_ = false;
xmlStopParser(parser_context_);
}
-//####################################################################
-namespace {
- //####################################################################
- extern "C" xmlEntityPtr cb_get_entity (void *, const xmlChar *name)
- { return xmlGetPredefinedEntity(name); }
- //####################################################################
- extern "C" void cb_start_element (void *parser, const xmlChar *tag, const xmlChar **props)
- { static_cast<epimpl*>(parser)->event_start_element(tag, props); }
- //####################################################################
- extern "C" void cb_end_element (void *parser, const xmlChar *tag)
- { static_cast<epimpl*>(parser)->event_end_element(tag); }
- //####################################################################
- extern "C" void cb_text (void *parser, const xmlChar *text, int length)
- { static_cast<epimpl*>(parser)->event_text(text, length); }
- //####################################################################
- extern "C" void cb_pi (void *parser, const xmlChar *target, const xmlChar *data)
- { static_cast<epimpl*>(parser)->event_pi(target, data); }
- //####################################################################
- extern "C" void cb_comment (void *parser, const xmlChar *text)
- { static_cast<epimpl*>(parser)->event_comment(text); }
- //####################################################################
- extern "C" void cb_cdata (void *parser, const xmlChar *text, int length)
- { static_cast<epimpl*>(parser)->event_cdata(text, length); }
- //####################################################################
- extern "C" void cb_warning (void *parser, const char *message, ...) {
- std::string complete_message;
-
- va_list ap;
- va_start(ap, message);
- printf2string(complete_message, message, ap);
- va_end(ap);
-
- static_cast<epimpl*>(parser)->event_warning(complete_message);
- }
- //####################################################################
- extern "C" void cb_error (void *parser, const char *message, ...) {
- std::string complete_message;
-
- va_list ap;
- va_start(ap, message);
- printf2string(complete_message, message, ap);
- va_end(ap);
-
- static_cast<epimpl*>(parser)->event_error(complete_message);
- }
- //####################################################################
- extern "C" void cb_ignore (void*, const xmlChar*, int) {
- return;
- }
-} // end anonymous namespace
Modified: trunk/src/libxml/init.cxx
===================================================================
--- trunk/src/libxml/init.cxx 2009-06-02 16:20:11 UTC (rev 149)
+++ trunk/src/libxml/init.cxx 2009-06-02 16:42:51 UTC (rev 150)
@@ -43,8 +43,12 @@
#include <libxml/parser.h>
//####################################################################
-namespace {
- extern "C" void xml_error (void *, const char*, ...);
+extern "C"
+{
+ static void xml_error (void *, const char*, ...)
+ {
+ // don't do anything
+ }
}
//####################################################################
int xml::init::ms_counter = 0;
@@ -98,8 +102,3 @@
xmlDoValidityCheckingDefaultValue = flag ? 1 : 0;
}
//####################################################################
-namespace {
- extern "C" void xml_error (void*, const char*, ...)
- { /* don't do anything */ }
-}
-//####################################################################
Modified: trunk/src/libxml/tree_parser.cxx
===================================================================
--- trunk/src/libxml/tree_parser.cxx 2009-06-02 16:20:11 UTC (rev 149)
+++ trunk/src/libxml/tree_parser.cxx 2009-06-02 16:42:51 UTC (rev 150)
@@ -67,11 +67,14 @@
//####################################################################
namespace {
const char const_default_error[] = "unknown XML parsing error";
+}
- extern "C" void cb_tree_error (void *v, const char *message, ...);
- extern "C" void cb_tree_warning (void *v, const char *, ...);
- extern "C" void cb_tree_ignore (void*, const xmlChar*, int);
+extern "C" {
+ static void cb_tree_error (void *v, const char *message, ...);
+ static void cb_tree_warning (void *v, const char *, ...);
+ static void cb_tree_ignore (void*, const xmlChar*, int);
}
+
//####################################################################
struct xml::impl::tree_impl {
tree_impl (void) : last_error_(const_default_error), warnings_(false), okay_(false) {
@@ -91,7 +94,46 @@
bool warnings_;
bool okay_;
};
+
//####################################################################
+extern "C"
+{
+//####################################################################
+static void cb_tree_error (void *v, const char *message, ...) {
+try {
+
+ xmlParserCtxtPtr ctxt = static_cast<xmlParserCtxtPtr>(v);
+ tree_impl *p = static_cast<tree_impl*>(ctxt->_private);
+ if (!p) return; // handle bug in older versions of libxml
+
+ va_list ap;
+ va_start(ap, message);
+ printf2string(p->last_error_, message, ap);
+ va_end(ap);
+
+ xmlStopParser(ctxt);
+} catch (...) { }
+}
+//####################################################################
+static void cb_tree_warning (void *v, const char *, ...) {
+try {
+
+ xmlParserCtxtPtr ctxt = static_cast<xmlParserCtxtPtr>(v);
+ tree_impl *p = static_cast<tree_impl*>(ctxt->_private);
+ if (!p) return; // handle bug in older versions of libxml
+
+ p->warnings_ = true;
+
+} catch (...) { }
+}
+//####################################################################
+static void cb_tree_ignore (void*, const xmlChar*, int) {
+return;
+}
+
+} // extern "C"
+
+//####################################################################
xml::tree_parser::tree_parser (const char *name, bool allow_exceptions) {
std::auto_ptr<tree_impl> ap(pimpl_ = new tree_impl);
@@ -162,40 +204,3 @@
const xml::document& xml::tree_parser::get_document (void) const {
return pimpl_->doc_;
}
-//####################################################################
-namespace {
- //####################################################################
- extern "C" void cb_tree_error (void *v, const char *message, ...) {
- try {
-
- xmlParserCtxtPtr ctxt = static_cast<xmlParserCtxtPtr>(v);
- tree_impl *p = static_cast<tree_impl*>(ctxt->_private);
- if (!p) return; // handle bug in older versions of libxml
-
- va_list ap;
- va_start(ap, message);
- printf2string(p->last_error_, message, ap);
- va_end(ap);
-
- xmlStopParser(ctxt);
- } catch (...) { }
- }
- //####################################################################
- extern "C" void cb_tree_warning (void *v, const char *, ...) {
- try {
-
- xmlParserCtxtPtr ctxt = static_cast<xmlParserCtxtPtr>(v);
- tree_impl *p = static_cast<tree_impl*>(ctxt->_private);
- if (!p) return; // handle bug in older versions of libxml
-
- p->warnings_ = true;
-
- } catch (...) { }
- }
- //####################################################################
- extern "C" void cb_tree_ignore (void*, const xmlChar*, int) {
- return;
- }
- //####################################################################
-}
-//####################################################################
Modified: trunk/src/libxslt/init.cxx
===================================================================
--- trunk/src/libxslt/init.cxx 2009-06-02 16:20:11 UTC (rev 149)
+++ trunk/src/libxslt/init.cxx 2009-06-02 16:42:51 UTC (rev 150)
@@ -44,16 +44,16 @@
#include <libxslt/xsltutils.h>
#include <libexslt/exslt.h>
-namespace
+extern "C"
{
-extern "C" void xslt_error(void *, const char*, ...)
+static void xslt_error(void *, const char*, ...)
{
// don't do anything; we install context-specific error handler to
// catch errors while applying a stylesheet
}
-} // anonymous namespace
+} // extern "C"
int xslt::init::ms_counter = 0;
Modified: trunk/src/libxslt/stylesheet.cxx
===================================================================
--- trunk/src/libxslt/stylesheet.cxx 2009-06-02 16:20:11 UTC (rev 149)
+++ trunk/src/libxslt/stylesheet.cxx 2009-06-02 16:42:51 UTC (rev 150)
@@ -121,8 +121,11 @@
}
-extern "C" void xsltwrapp_error_cb(void *c, const char *message, ...)
+extern "C"
{
+
+static void error_cb(void *c, const char *message, ...)
+{
xsltTransformContextPtr ctxt = static_cast<xsltTransformContextPtr>(c);
xslt::stylesheet::pimpl *impl = static_cast<xslt::stylesheet::pimpl*>(ctxt->_private);
@@ -146,6 +149,7 @@
impl->error_.append(formatted);
}
+} // extern "C"
xmlDocPtr apply_stylesheet(xslt::stylesheet::pimpl *impl,
xmlDocPtr doc,
@@ -159,7 +163,7 @@
xsltTransformContextPtr ctxt = xsltNewTransformContext(style, doc);
ctxt->_private = impl;
- xsltSetTransformErrorFunc(ctxt, ctxt, xsltwrapp_error_cb);
+ xsltSetTransformErrorFunc(ctxt, ctxt, error_cb);
// clear the error flag before applying the stylesheet
impl->errors_occured_ = false;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|