Obsoleted by new material in IDSoftwareRelease2010
[ZOOM-Perl-moved-to-github.git] / typemap
diff --git a/typemap b/typemap
index 4f00557..7bd56b6 100644 (file)
--- a/typemap
+++ b/typemap
@@ -1,5 +1,3 @@
-# $Id: typemap,v 1.3 2005-10-11 15:40:14 mike Exp $
-
 ZOOM_connection                                        T_PTROBJ
 ZOOM_connection *                              T_PTROBJ
 ZOOM_options                                   T_PTROBJ
@@ -24,8 +22,11 @@ const __sigset_t *                           T_PTROBJ
 # type of "const char *" as T_PTROBJ -- a pointer to an opaque object.
 # This prevented the return value of ZOOM_record_get() from being
 # translated into a Perl string.  Instead, I am using T_PV, which
-# works properly.
+# works properly.  This also has the pleasant side-effect that I no
+# longer have to discard the "const" qualfiers from the arguments to
+# the functions in the .xs file.
 const char *                                   T_PV
+opaquechar *                                   T_OPAQUECHAR
 const char **                                  T_PTROBJ
 const struct timespec *                                T_PTROBJ
 div_t                                          T_OPAQUE_STRUCT
@@ -48,7 +49,8 @@ unsigned short int *                          T_PTROBJ
 void ( * __func ) ( int __status, void * __arg )       T_PTROBJ
 void ( * __func ) ( void )                     T_PTROBJ
 void **                                                T_PTROBJ
-#############################################################################
+struct datachunk                               T_DATACHUNK
+# ---------------------------------------------------------------------------
 INPUT
 T_OPAQUE_STRUCT
        if (sv_derived_from($arg, \"${ntype}\")) {
@@ -62,7 +64,13 @@ T_OPAQUE_STRUCT
        }
        else
            croak(\"$var is not of type ${ntype}\")
-#############################################################################
+T_OPAQUECHAR
+       { STRLEN _unused_len;
+       $var = ($type) SvPV($arg, _unused_len); }
+
+# ---------------------------------------------------------------------------
 OUTPUT
 T_OPAQUE_STRUCT
        sv_setref_pvn($arg, \"${ntype}\", (char *)&$var, sizeof($var));
+T_DATACHUNK
+       sv_setpvn($arg, $var.data, $var.len);