This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
d78134f7cffe4ccf20571c8e43cd8793e36a72f1
[perl5.git] / ext / XS-Typemap / Typemap.pm
1 package XS::Typemap;
2
3 =head1 NAME
4
5 XS::Typemap - module to test the XS typemaps distributed with perl
6
7 =head1 SYNOPSIS
8
9   use XS::Typemap;
10
11   $output = T_IV( $input );
12   $output = T_PV( $input );
13   @output = T_ARRAY( @input );
14
15 =head1 DESCRIPTION
16
17 This module is used to test that the XS typemaps distributed
18 with perl are working as advertised. A function is available
19 for each typemap definition (eventually). In general each function
20 takes a variable, processes it through the OUTPUT typemap and then
21 returns it using the INPUT typemap.
22
23 A test script can then compare the input and output to make sure they
24 are the expected values. When only an input or output function is
25 provided the function will be named after the typemap entry and have
26 either '_IN' or '_OUT' appended.
27
28 All the functions are exported. There is no reason not to do this since
29 the entire purpose is for testing Perl. Namespace pollution will be limited
30 to the test script.
31
32 =cut
33
34 use parent qw/ Exporter /;
35 require XSLoader;
36
37 use vars qw/ $VERSION @EXPORT /;
38
39 $VERSION = '0.12';
40
41 @EXPORT = (qw/
42            T_SV
43            T_SVREF
44            T_SVREF_REFCOUNT_FIXED
45            T_AVREF
46            T_AVREF_REFCOUNT_FIXED
47            T_HVREF
48            T_HVREF_REFCOUNT_FIXED
49            T_CVREF
50            T_CVREF_REFCOUNT_FIXED
51            T_SYSRET_fail T_SYSRET_pass
52            T_UV
53            T_IV
54            T_INT
55            T_ENUM
56            T_BOOL
57            T_BOOL_2
58            T_BOOL_OUT
59            T_U_INT
60            T_SHORT
61            T_U_SHORT
62            T_LONG
63            T_U_LONG
64            T_CHAR
65            T_U_CHAR
66            T_FLOAT
67            T_NV
68            T_DOUBLE
69            T_PV T_PV_null T_PV_mutate T_ROPV
70            T_PTR_IN T_PTR_OUT
71            T_PTRREF_IN T_PTRREF_OUT
72            T_REF_IV_REF
73            T_REF_IV_PTR_IN T_REF_IV_PTR_OUT
74            T_PTROBJ_IN T_PTROBJ_OUT
75            T_OPAQUE_IN T_OPAQUE_OUT T_OPAQUE_array
76            T_OPAQUEPTR_IN T_OPAQUEPTR_OUT T_OPAQUEPTR_OUT_short
77            T_OPAQUEPTR_IN_struct T_OPAQUEPTR_OUT_struct
78            T_ARRAY
79            T_STDIO_open T_STDIO_close T_STDIO_print
80            T_PACKED_in T_PACKED_out
81            T_PACKEDARRAY_in T_PACKEDARRAY_out
82            T_INOUT T_IN T_OUT
83            /);
84
85 XSLoader::load();
86
87 =head1 NOTES
88
89 This module is for testing only and should not normally be installed.
90
91 =head1 AUTHOR
92
93 Tim Jenness E<lt>t.jenness@jach.hawaii.eduE<gt>
94
95 Copyright (C) 2001 Tim Jenness All Rights Reserved.  This program is
96 free software; you can redistribute it and/or modify it under the same
97 terms as Perl itself.
98
99 =cut
100
101
102 1;
103