- NAME
- SYNOPSIS
- DESCRIPTION
- METHODS
  - new
  - code
  - xstype
  - cleaned_code
  - targetable
- SEE ALSO
- AUTHOR
- COPYRIGHT & LICENSE

# NAME

ExtUtils::Typemaps::OutputMap - Entry in the OUTPUT section of a typemap

# SYNOPSIS

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

# DESCRIPTION

Refer to ExtUtils::Typemaps for details.

# METHODS

## new

Requires `xstype` and `code` parameters.

## code

Returns or sets the OUTPUT mapping code for this entry.

## xstype

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

## cleaned_code

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

## targetable

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)

# SEE ALSO

ExtUtils::Typemaps

# AUTHOR

Steffen Mueller `<smueller@cpan.org`>

# 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.