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