diff options
Diffstat (limited to 'Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm')
-rw-r--r-- | Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm new file mode 100644 index 00000000000..9e7053f2290 --- /dev/null +++ b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm @@ -0,0 +1,116 @@ +package ExtUtils::Typemaps::InputMap; +use 5.006001; +use strict; +use warnings; +our $VERSION = '3.16'; + +=head1 NAME + +ExtUtils::Typemaps::InputMap - Entry in the INPUT section of a typemap + +=head1 SYNOPSIS + + use ExtUtils::Typemaps; + ... + my $input = $typemap->get_input_map('T_NV'); + my $code = $input->code(); + $input->code("..."); + +=head1 DESCRIPTION + +Refer to L<ExtUtils::Typemaps> for details. + +=head1 METHODS + +=cut + +=head2 new + +Requires C<xstype> and C<code> parameters. + +=cut + +sub new { + my $prot = shift; + my $class = ref($prot)||$prot; + my %args = @_; + + if (!ref($prot)) { + if (not defined $args{xstype} or not defined $args{code}) { + die("Need xstype and code parameters"); + } + } + + my $self = bless( + (ref($prot) ? {%$prot} : {}) + => $class + ); + + $self->{xstype} = $args{xstype} if defined $args{xstype}; + $self->{code} = $args{code} if defined $args{code}; + $self->{code} =~ s/^(?=\S)/\t/mg; + + return $self; +} + +=head2 code + +Returns or sets the INPUT mapping code for this entry. + +=cut + +sub code { + $_[0]->{code} = $_[1] if @_ > 1; + return $_[0]->{code}; +} + +=head2 xstype + +Returns the name of the XS type of the INPUT map. + +=cut + +sub xstype { + return $_[0]->{xstype}; +} + +=head2 cleaned_code + +Returns a cleaned-up copy of the code to which certain transformations +have been applied to make it more ANSI compliant. + +=cut + +sub cleaned_code { + my $self = shift; + my $code = $self->code; + + $code =~ s/(?:;+\s*|;*\s+)\z//s; + + # Move C pre-processor instructions to column 1 to be strictly ANSI + # conformant. Some pre-processors are fussy about this. + $code =~ s/^\s+#/#/mg; + $code =~ s/\s*\z/\n/; + + return $code; +} + +=head1 SEE ALSO + +L<ExtUtils::Typemaps> + +=head1 AUTHOR + +Steffen Mueller C<<smueller@cpan.org>> + +=head1 COPYRIGHT & LICENSE + +Copyright 2009, 2010, 2011, 2012 Steffen Mueller + +This program is free software; you can redistribute it and/or +modify it under the same terms as Perl itself. + +=cut + +1; + |