Document T_PACKEDARRAY
authorSteffen Mueller <smueller@cpan.org>
Mon, 23 Jan 2012 17:33:26 +0000 (18:33 +0100)
committerSteffen Mueller <smueller@cpan.org>
Wed, 1 Feb 2012 07:07:49 +0000 (08:07 +0100)
ext/XS-Typemap/Typemap.xs

index f53f84a..75cc2ac 100644 (file)
@@ -1055,7 +1055,21 @@ but the prototype would be:
 
 =item T_PACKEDARRAY
 
-NOT YET
+T_PACKEDARRAY is similar to T_PACKED. In fact, the C<INPUT> (Perl
+to XSUB) typemap is indentical, but the C<OUTPUT> typemap passes
+an additional argument to the C<XS_pack_$ntype> function. This
+third parameter indicates the number of elements in the output
+so that the function can handle C arrays sanely. The variable
+needs to be declared by the user and must have the name
+C<count_$ntype> where C<$ntype> is the normalized C type name
+as explained above. The signature of the function would be for
+the example above and C<foo_t **>:
+
+  static void
+  XS_pack_foo_tPtrPtr(SV *out, foo_t *in, UV count_foo_tPtrPtr);
+
+The type of the third parameter is arbitrary as far as the typemap
+is concerned. It just has to be in line with the declared variable.
 
 =item T_DATAUNIT