/* * call-seq: * initialize_native(xml_sax, filename) * * Initialize the push parser with +xml_sax+ using +filename+ */ static VALUE initialize_native(VALUE self, VALUE _xml_sax, VALUE _filename) { xmlSAXHandlerPtr sax; Data_Get_Struct(_xml_sax, xmlSAXHandler, sax); const char * filename = NULL; if(_filename != Qnil) filename = StringValuePtr(_filename); xmlParserCtxtPtr ctx = xmlCreatePushParserCtxt( sax, (void *)self, NULL, 0, filename ); if(ctx == NULL) rb_raise(rb_eRuntimeError, "Could not create a parser context"); DATA_PTR(self) = ctx; return self; }