/*
 * call-seq:
 *  native_write_to(io, encoding, options)
 *
 * Write this Node to +io+ with +encoding+ and +options+
 */
static VALUE native_write_to(VALUE self, VALUE io, VALUE encoding, VALUE options)
{
  xmlNodePtr node;

  Data_Get_Struct(self, xmlNode, node);

  xmlSaveCtxtPtr savectx = xmlSaveToIO(
      (xmlOutputWriteCallback)io_write_callback,
      (xmlOutputCloseCallback)io_close_callback,
      (void *)io,
      RTEST(encoding) ? StringValuePtr(encoding) : NULL,
      NUM2INT(options)
  );

  xmlSaveTree(savectx, node);
  xmlSaveClose(savectx);
  return io;
}