/* end of an element */ void raptor_sax2_end_element(void* user_data, const unsigned char *name) { raptor_sax2* sax2=(raptor_sax2*)user_data; raptor_xml_element* xml_element; if(sax2->failed) return; #ifdef RAPTOR_XML_EXPAT #ifdef EXPAT_UTF8_BOM_CRASH sax2->tokens_count++; #endif #endif xml_element=sax2->current_element; if(xml_element) { #ifdef RAPTOR_DEBUG_VERBOSE fprintf(stderr, "\nraptor_rdfxml_end_element_handler: End ns-element: "); raptor_qname_print(stderr, xml_element->name); fputc('\n', stderr); #endif if(sax2->end_element_handler) sax2->end_element_handler(sax2->user_data, xml_element); } raptor_namespaces_end_for_depth(&sax2->namespaces, raptor_sax2_get_depth(sax2)); xml_element=raptor_xml_element_pop(sax2); if(xml_element) raptor_free_xml_element(xml_element); raptor_sax2_dec_depth(sax2); }
/** * raptor_free_sax2: * @sax2: SAX2 object * * Destructor - destroy a SAX2 object */ void raptor_free_sax2(raptor_sax2 *sax2) { raptor_xml_element *xml_element; if(!sax2) return; #ifdef RAPTOR_XML_LIBXML if(sax2->xc) { raptor_libxml_free(sax2->xc); sax2->xc = NULL; } #endif while( (xml_element = raptor_xml_element_pop(sax2)) ) raptor_free_xml_element(xml_element); raptor_namespaces_clear(&sax2->namespaces); if(sax2->base_uri) raptor_free_uri(sax2->base_uri); raptor_object_options_clear(&sax2->options); RAPTOR_FREE(raptor_sax2, sax2); }
/** * raptor_free_sax2: * @sax2: SAX2 object * * Destructor - destroy a SAX2 object */ void raptor_free_sax2(raptor_sax2 *sax2) { raptor_xml_element *xml_element; RAPTOR_ASSERT_OBJECT_POINTER_RETURN(sax2, raptor_sax2); #ifdef RAPTOR_XML_EXPAT if(sax2->xp) { XML_ParserFree(sax2->xp); sax2->xp=NULL; } #endif #ifdef RAPTOR_XML_LIBXML if(sax2->xc) { raptor_libxml_free(sax2->xc); sax2->xc=NULL; } if(sax2->world->libxml_flags & RAPTOR_LIBXML_FLAGS_STRUCTURED_ERROR_SAVE) xmlSetStructuredErrorFunc(sax2->saved_structured_error_context, sax2->saved_structured_error_handler); if(sax2->world->libxml_flags & RAPTOR_LIBXML_FLAGS_GENERIC_ERROR_SAVE) xmlSetGenericErrorFunc(sax2->saved_generic_error_context, sax2->saved_generic_error_handler); #endif while( (xml_element=raptor_xml_element_pop(sax2)) ) raptor_free_xml_element(xml_element); raptor_namespaces_clear(&sax2->namespaces); if(sax2->base_uri) raptor_free_uri_v2(sax2->world, sax2->base_uri); RAPTOR_FREE(raptor_sax2, sax2); }