Extract typemap-related code from ExtUtils::ParseXS
[perl.git] / dist / ExtUtils-ParseXS / lib / ExtUtils / Typemap / InputMap.pm
1 package ExtUtils::Typemap::InputMap;
2 use 5.006001;
3 use strict;
4 use warnings;
5 our $VERSION = '0.05';
6 use Carp qw(croak);
7
8 =head1 NAME
9
10 ExtUtils::Typemap::InputMap - Entry in the INPUT section of a typemap
11
12 =head1 SYNOPSIS
13
14   use ExtUtils::Typemap;
15   ...
16   my $input = $typemap->get_input_map('T_NV');
17   my $code = $input->code();
18   $input->code("...");
19
20 =head1 DESCRIPTION
21
22 Refer to L<ExtUtils::Typemap> for details.
23
24 =head1 METHODS
25
26 =cut
27
28 =head2 new
29
30 Requires C<xstype> and C<code> parameters.
31
32 =cut
33
34 sub new {
35   my $prot = shift;
36   my $class = ref($prot)||$prot;
37   my %args = @_;
38
39   if (!ref($prot)) {
40     if (not defined $args{xstype} or not defined $args{code}) {
41       croak("Need xstype and code parameters");
42     }
43   }
44
45   my $self = bless(
46     (ref($prot) ? {%$prot} : {})
47     => $class
48   );
49
50   $self->{xstype} = $args{xstype} if defined $args{xstype};
51   $self->{code} = $args{code} if defined $args{code};
52   $self->{code} =~ s/^(?=\S)/\t/mg;
53
54   return $self;
55 }
56
57 =head2 code
58
59 Returns or sets the INPUT mapping code for this entry.
60
61 =cut
62
63 sub code {
64   $_[0]->{code} = $_[1] if @_ > 1;
65   return $_[0]->{code};
66 }
67
68 =head2 xstype
69
70 Returns the name of the XS type of the INPUT map.
71
72 =cut
73
74 sub xstype {
75   return $_[0]->{xstype};
76 }
77
78 =head1 SEE ALSO
79
80 L<ExtUtils::Typemap>
81
82 =head1 AUTHOR
83
84 Steffen Mueller C<<smueller@cpan.org>>
85
86 =head1 COPYRIGHT & LICENSE
87
88 Copyright 2009-2010 Steffen Mueller
89
90 This program is free software; you can redistribute it and/or
91 modify it under the same terms as Perl itself.
92
93 =cut
94
95 1;
96