+ const char* key
+ opaquechar* val
+ int len
+
+# The reference parameters, `cp' and `addinfo', need to already have
+# values when this function is called, otherwise an "uninitialised
+# value" warning is generated. As far as I can see, there is no way
+# around this: no way to specify in a prototype that an argument is
+# allowed to be undefined, for example. Since these function will
+# never be called directly by well-behaved client code, but only by
+# our own wrapper classes, I think we can live with that.
+#
+# The poxing about with cpp and caddinfo is due to Perl XS's lack of
+# support for const char**, but who can blame it? If you ask me, the
+# whole "const" thing was well-intentioned by ghastly mistake.
+#
+# TESTED
+int
+ZOOM_connection_error(c, cp, addinfo)
+ ZOOM_connection c
+ char* &cp
+ char* &addinfo
+ CODE:
+ const char *ccp, *caddinfo;
+ RETVAL = ZOOM_connection_error(c, &ccp, &caddinfo);
+ cp = (char*) ccp;
+ addinfo = (char*) caddinfo;
+ OUTPUT:
+ RETVAL
+ cp
+ addinfo
+
+# See comments for ZOOM_connection_error() above
+# TESTED
+int
+ZOOM_connection_error_x(c, cp, addinfo, diagset)
+ ZOOM_connection c
+ const char * &cp
+ const char * &addinfo
+ const char * &diagset
+ CODE:
+ const char *ccp, *caddinfo, *cdset;
+ RETVAL = ZOOM_connection_error_x(c, &ccp, &caddinfo, &cdset);
+ cp = (char*) ccp;
+ addinfo = (char*) caddinfo;
+ diagset = (char*) cdset;
+ OUTPUT:
+ RETVAL
+ cp
+ addinfo
+ diagset
+
+# TESTED
+int
+ZOOM_connection_errcode(c)
+ ZOOM_connection c