Hello,
I am trying to make a
wrapper for libxml's SAX api, for learning purpose, I am trying to use
bind to wrap sax events in a class like this :
namespace sax {
class document {
public:
document();
~document();
protected:
virtual void start_node( void *user_data, const xmlChar *name, const xmlChar **attrs );
xmlSAXHandler m_evhdl;
xmlParserCtxtPtr m_ctxt;
};
}
The
start_node() function is intended to be pointed by the startElement
member from xmlSAXHandler ( it has same definition than start_node ).
I tried to use bind to copy function pointer in the constructor like this :
document::document() {
// binding here
m_evhdl.startElement = boost::bind( &document::start_node, this, _1, _2, _3 );
// xml init
m_ctxt = xmlCreateFileParserCtxt( "catalogue.xml" );
m_ctxt->sax = &m_evhdl;
xmlParseDocument( m_ctxt );
}
The
issue is that I can't submit the binded function to startElement
because bind submits "this" as a parameter to startElement, which is
incompatible definition, so is there a solution to my binding ?
Regards
Carlos