+# We ignore the return value of ZOOM_options_set_callback(), since it
+# is always just the address of the __ZOOM_option_callback() function.
+# The information that we actually want -- the address of the Perl
+# function in the callback_block -- is unavailable to us, as the
+# underlying C function doesn't give the block back.
+#
+void
+ZOOM_options_set_callback(opt, function, handle)
+ ZOOM_options opt
+ SV* function;
+ SV* handle;
+ CODE:
+ {
+ /* The tiny amount of memory allocated here is never
+ * released, as options_destroy() doesn't do anything
+ * to the callback information. Not a big deal.
+ * Also, I have no idea how to drive the Perl "mortal"
+ * reference-counting stuff, so I am just allocating
+ * copies which also never get released. Don't sue!
+ */
+ struct callback_block *block = (struct callback_block*)
+ xmalloc(sizeof *block);
+ block->function = function;
+ block->handle = handle;
+ SvREFCNT(block->function);
+ SvREFCNT(block->handle);
+ ZOOM_options_set_callback(opt, __ZOOM_option_callback,
+ (void*) block);
+ }
+
+ZOOM_options
+ZOOM_options_create()
+
+ZOOM_options
+ZOOM_options_create_with_parent(parent)
+ ZOOM_options parent
+
+ZOOM_options
+ZOOM_options_create_with_parent2(parent1, parent2)
+ ZOOM_options parent1
+ ZOOM_options parent2
+
+const char *
+ZOOM_options_get(opt, name)
+ ZOOM_options opt
+ const char* name
+
+struct datachunk
+ZOOM_options_getl(opt, name, len)
+ ZOOM_options opt
+ const char* name
+ int &len
+ CODE:
+ RETVAL.data = (char*) ZOOM_options_getl(opt, name, &len);
+ RETVAL.len = len;
+ OUTPUT:
+ RETVAL
+ len
+
+void
+ZOOM_options_set(opt, name, v)
+ ZOOM_options opt
+ const char* name
+ const char* v
+
+void
+ZOOM_options_setl(opt, name, value, len)
+ ZOOM_options opt
+ const char* name
+ opaquechar* value
+ int len
+
+void
+ZOOM_options_destroy(opt)
+ ZOOM_options opt
+
+int
+ZOOM_options_get_bool(opt, name, defa)
+ ZOOM_options opt
+ const char* name
+ int defa
+
+int
+ZOOM_options_get_int(opt, name, defa)
+ ZOOM_options opt
+ const char* name
+ int defa
+
+void
+ZOOM_options_set_int(opt, name, value)
+ ZOOM_options opt
+ const char* name
+ int value
+