module Nokogiri::LibXML::XmlNodeSetMixin

def self.included(base)

:nodoc:
def self.included(base)
  base.class_eval do
    layout(
      :nodeNr,    :int,
      :nodeMax,   :int,
      :nodeTab,   :pointer
      )
  end
end

def document

def document
  p = self[:doc]
  p.null? ? nil : LibXML::XmlDocumentCast.new(p)
end

def nodeAt(index)

def nodeAt(index)
  self[:nodeTab].get_pointer(LibXML.pointer_offset(index))
end

def nodeTab

def nodeTab
  self[:nodeTab].null? ? [] : self[:nodeTab].read_array_of_pointer(self[:nodeNr])
end

def nodeTab=(array)

def nodeTab=(array)
  # TODO: do we need to check nodeMax and allocate more memory? probably.
  self[:nodeTab].write_array_of_pointer(array)
end