module Nokogiri::LibXML

def self.pointer_offset(n)

helpers
def self.pointer_offset(n)
  n * FFI.type_size(:pointer) # byte offset of nth pointer in an array of pointers
end

def self.xmlFree(pointer)

returns char* that must be freed
xmlstring.c
def self.xmlFree(pointer)
  # xmlFree is a C preprocessor macro, not an actual function
  self.free(pointer)
end

def xmlXPathReturnFalse(ctx)

def xmlXPathReturnFalse(ctx)
  valuePush(ctx, xmlXPathNewBoolean(0))
end

def xmlXPathReturnNodeSet(ctx, ns)

these functions are implemented as C macros
def xmlXPathReturnNodeSet(ctx, ns)
  valuePush(ctx, xmlXPathWrapNodeSet(ns))
end

def xmlXPathReturnNumber(ctx, val)

def xmlXPathReturnNumber(ctx, val)
  valuePush(ctx, xmlXPathNewFloat(val))
end

def xmlXPathReturnString(ctx, str)

def xmlXPathReturnString(ctx, str)
  valuePush(ctx, xmlXPathWrapString(str))
end

def xmlXPathReturnTrue(ctx)

def xmlXPathReturnTrue(ctx)
  valuePush(ctx, xmlXPathNewBoolean(1))
end