Ubuntu Manpages

ExtUtils::Typemaps::OutputMap

Entry in the OUTPUT section of a typemap

  use ExtUtils::Typemaps;
  ...
  my $output = $typemap->get_output_map('T_NV');
  my $code = $output->code();
  $output->code("...");

Refer to ExtUtils::Typemaps for details.

Requires "xstype" and "code" parameters.

Returns or sets the OUTPUT mapping code for this entry.

Returns the name of the XS type of the OUTPUT map.

Returns a cleaned-up copy of the code to which certain transformations have been applied to make it more ANSI compliant.

This is an obscure optimization that used to live in "ExtUtils::ParseXS" directly.

In a nutshell, this will check whether the output code involves calling "set_iv", "set_uv", "set_nv", "set_pv" or "set_pvn" to set the special $arg placeholder to a new value AT THE END OF THE OUTPUT CODE. If that is the case, the code is eligible for using the "TARG"-related macros to optimize this. Thus the name of the method: "targetable".

If the optimization can not be applied, this returns undef. If it can be applied, this method returns a hash reference containing the following information:

  type:      Any of the characters i, u, n, p
  with_size: Bool indicating whether this is the sv_setpvn variant
  what:      The code that actually evaluates to the output scalar
  what_size: If "with_size", this has the string length (as code,
             not constant)

ExtUtils::Typemaps

Steffen Mueller "<smueller@cpan.org">

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.