ExtUtils::Typemaps::OutputMap - 类型映射 OUTPUT 部分的条目
use ExtUtils::Typemaps;
...
my $output = $typemap->get_output_map('T_NV');
my $code = $output->code();
$output->code("...");
有关详细信息,请参阅 ExtUtils::Typemaps。
需要 xstype
和 code
参数。
返回或设置此条目的 OUTPUT 映射代码。
返回 OUTPUT 映射的 XS 类型名称。
返回代码的清理副本,对其应用了某些转换以使其更符合 ANSI 标准。
这是一个晦涩但有效的优化,以前直接存在于 ExtUtils::ParseXS
中。不实现它永远不会导致类型映射使用不当,只是代码效率较低。
简而言之,这将检查输出代码是否涉及调用 sv_setiv
、sv_setuv
、sv_setnv
、sv_setpv
或 sv_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)
Steffen Mueller <[email protected]
>
版权所有 2009, 2010, 2011, 2012 Steffen Mueller
本程序是自由软件;您可以根据与 Perl 本身相同的条款重新发布和/或修改它。