Sha256: 8baa2688a121b79c951331ff2a117f9bca89c4b5cb154ad010bbaf300796e464

Contents?: true

Size: 1.11 KB

Versions: 9

Compression:

Stored size: 1.11 KB

Contents

#include <xml_xpath.h>

static void deallocate(xmlXPathObjectPtr xpath)
{
  NOKOGIRI_DEBUG_START(xpath);
  xmlXPathFreeNodeSetList(xpath); // despite the name, this frees the xpath but not the contained node set
  NOKOGIRI_DEBUG_END(xpath);
}

VALUE Nokogiri_wrap_xml_xpath(xmlXPathObjectPtr xpath)
{
  return Data_Wrap_Struct(cNokogiriXmlXpath, 0, deallocate, xpath);
}

/*
 * call-seq:
 *  node_set
 *
 * Fetch the node set associated with this xpath context.
 */
static VALUE node_set(VALUE self)
{
  xmlXPathObjectPtr xpath;
  Data_Get_Struct(self, xmlXPathObject, xpath);

  if (xpath->nodesetval)
    return Nokogiri_wrap_xml_node_set(xpath->nodesetval);

  return Nokogiri_wrap_xml_node_set(xmlXPathNodeSetCreate(NULL));
}

VALUE cNokogiriXmlXpath;
void init_xml_xpath(void)
{
  VALUE module = rb_define_module("Nokogiri");
  VALUE xml = rb_define_module_under(module, "XML");

  /*
   * This class wraps an XPath object and should only be instantiated from
   * XPathContext.
   */
  VALUE klass = rb_define_class_under(xml, "XPath", rb_cObject);

  cNokogiriXmlXpath = klass;
  rb_define_method(klass, "node_set", node_set, 0);
}

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
tenderlove-nokogiri-0.0.0-x86-mswin32-60 ext/nokogiri/xml_xpath.c
nokogiri-1.0.0-x86-mswin32-60 ext/nokogiri/xml_xpath.c
nokogiri-1.0.0 ext/nokogiri/xml_xpath.c
nokogiri-1.0.1 ext/nokogiri/xml_xpath.c
nokogiri-1.0.3-x86-mswin32-60 ext/nokogiri/xml_xpath.c
nokogiri-1.0.2 ext/nokogiri/xml_xpath.c
nokogiri-1.0.3 ext/nokogiri/xml_xpath.c
nokogiri-1.0.4-x86-mswin32-60 ext/nokogiri/xml_xpath.c
nokogiri-1.0.4 ext/nokogiri/xml_xpath.c