module Nokogiri::LibXML::XmlDocumentMixin
def self.included(base)
def self.included(base) base.class_eval do layout( :_private, :pointer, :type, :int, :name, :string, :children, :pointer, :last, :pointer, :parent, :pointer, :next, :pointer, :prev, :pointer, :doc, :pointer, :compression, :int, :standalone, :int, :intSubset, :pointer, :extSubset, :pointer, :oldNs, :pointer, :version, :string, :encoding, :pointer, :ids, :pointer, :refs, :pointer, :URL, :string ) end end
def alloc_tuple
def alloc_tuple self[:_private] = LibXML.calloc(FFI.type_size(:pointer), 2) self[:_private].put_pointer(FFI.type_size(:pointer), LibXML.xmlXPathNodeSetCreate(nil)) end
def document
def document p = self[:doc] p.null? ? nil : LibXML::XmlDocumentCast.new(p) end
def ruby_doc
def ruby_doc ptr = self[:_private] return nil if ptr.null? ObjectSpace._id2ref(ptr.get_long(0)) end
def ruby_doc=(object)
def ruby_doc=(object) self[:_private].put_long(0, object.object_id) end
def unlinked_nodes
def unlinked_nodes LibXML::XmlNodeSetCast.new(self[:_private].get_pointer(FFI.type_size(:pointer))) end