内容

名称

ExtUtils::Typemaps::OutputMap - 类型映射 OUTPUT 部分的条目

概要

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

描述

有关详细信息,请参阅 ExtUtils::Typemaps

方法

new

需要 xstypecode 参数。

code

返回或设置此条目的 OUTPUT 映射代码。

xstype

返回 OUTPUT 映射的 XS 类型名称。

cleaned_code

返回代码的清理副本,对其应用了某些转换以使其更符合 ANSI 标准。

targetable

这是一个晦涩但有效的优化,以前直接存在于 ExtUtils::ParseXS 中。不实现它永远不会导致类型映射使用不当,只是代码效率较低。

简而言之,这将检查输出代码是否涉及调用 sv_setivsv_setuvsv_setnvsv_setpvsv_setpvn 来将特殊的 $arg 占位符设置为 输出代码末尾 的新值。如果是这种情况,则代码有资格使用 TARG 相关的宏来优化此操作。因此该方法的名称:targetable

如果此优化适用,ExtUtils::ParseXS将在生成的 XSUB 代码开头发出dXSTARG;定义,并在生成的 XSUB 代码末尾设置TARG并将其压入堆栈,以生成类型(见下文)相关的代码。

如果无法应用优化,则返回 undef。如果可以应用,此方法将返回一个包含以下信息的哈希引用

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, including leading comma)

另请参阅

ExtUtils::Typemaps

作者

Steffen Mueller <[email protected]>

版权和许可

版权所有 2009, 2010, 2011, 2012 Steffen Mueller

本程序是自由软件;您可以根据与 Perl 本身相同的条款重新发布和/或修改它。