ExtUtils::ParseXS::Utilities - 与 ExtUtils::ParseXS 一起使用的子例程
use ExtUtils::ParseXS::Utilities qw(
standard_typemap_locations
trim_whitespace
C_string
valid_proto_string
process_typemaps
map_type
standard_XS_defs
assign_func_args
analyze_preprocessor_statements
set_cond
Warn
blurt
death
check_conditional_preprocessor_statements
escape_file_for_line_directive
report_typemap_failure
);
以下函数不属于公共接口的一部分。它们在此处记录下来是为了方便将来维护此模块的人员。
standard_typemap_locations()
目的
提供一个文件路径列表,其中可以找到 typemap 文件。文件路径(文件的相对路径,不仅仅是目录路径)按从低到高的优先级显示在此列表中。
最高优先级是在当前目录中查找。
'typemap'
第二和第三高优先级是在当前目录的父目录和父目录下名为 lib/ExtUtils 的目录中查找。
'../typemap',
'../lib/ExtUtils/typemap',
第四到第九高优先级是在相应的祖父母、曾祖父母和曾曾祖父母目录中查找。
'../../typemap',
'../../lib/ExtUtils/typemap',
'../../../typemap',
'../../../lib/ExtUtils/typemap',
'../../../../typemap',
'../../../../lib/ExtUtils/typemap',
第十及后续优先级是在名为 ExtUtils 的目录中查找,这些目录是 @INC
中目录的子目录——前提是 这样的目录中确实存在名为 typemap 的文件。示例
'/usr/local/lib/perl5/5.10.1/ExtUtils/typemap',
但是,这些文件路径按相反的顺序显示在 standard_typemap_locations()
返回的列表中,即 从低到高。
'/usr/local/lib/perl5/5.10.1/ExtUtils/typemap',
'../../../../lib/ExtUtils/typemap',
'../../../../typemap',
'../../../lib/ExtUtils/typemap',
'../../../typemap',
'../../lib/ExtUtils/typemap',
'../../typemap',
'../lib/ExtUtils/typemap',
'../typemap',
'typemap'
参数
my @stl = standard_typemap_locations( \@INC );
对 @INC
的引用。
返回值
包含要搜索 typemap 文件的目录列表的数组。
trim_whitespace()
目的
对提供给函数的第一个参数执行就地修剪,去除前导和尾随空格。
参数
trim_whitespace($arg);
返回值
无。请记住:这是对参数的就地修改。
C_string()
目的
转义原型字符串中的反斜杠 (\
)。
参数
$ProtoThisXSUB = C_string($_);
需要转义的字符串。
返回值
正确转义的字符串。
valid_proto_string()
目的
验证原型字符串。
参数
需要检查的字符串。
返回值
成功后,返回作为参数传递的相同字符串。
失败后,返回 0
。
process_typemaps()
目的
处理所有 typemap 文件。
参数
my $typemaps_object = process_typemaps( $args{typemap}, $pwd );
两个元素的列表:%args
中的 typemap
元素;当前工作目录。
返回值
成功后,返回一个 ExtUtils::Typemaps 对象。
map_type()
目的
在 PARAGRAPH
循环内的多个位置执行映射。
参数
$type = map_type($self, $type, $varname);
三个参数的列表。
返回值
包含第二个参数的增强版本的字符串。
standard_XS_defs()
目的
将某些预处理器指令和所有此类文件中所需的功能头写入.c
输出文件。
参数
无。
返回值
返回 true。
assign_func_args()
目的
对func_args
属性执行赋值。
参数
$string = assign_func_args($self, $argsref, $class);
三个元素的列表。第二个是数组引用;第三个是字符串。
返回值
字符串。
analyze_preprocessor_statements()
目的
在每个 Xsub 中的每个函数中,将某些预处理器语句打印到.c输出文件。
参数
( $self, $XSS_work_idx, $BootCode_ref ) =
analyze_preprocessor_statements(
$self, $statement, $XSS_work_idx, $BootCode_ref
);
四个元素的列表。
返回值
传递给函数的三个参数的修改值。特别是,XSStack
和InitFileCode
属性被修改。
set_cond()
目的
参数
返回值
current_line_number()
目的
找出 XS 文件中的当前行号。
参数
$self
返回值
当前行号。
Warn()
目的
在末尾打印带有行号详细信息的警告。
参数
要输出的文本列表。
返回值
无。
WarnHint()
目的
打印带有行号详细信息的警告。最后一个参数被假定为提示字符串。
参数
要警告的字符串列表,后跟一个表示提示的参数。如果定义了该参数,则它将按换行符拆分,并在主警告后逐行输出。
返回值
无。
_MsgHint()
目的
构造带有行号详细信息的异常消息。最后一个参数被假定为提示字符串。
参数
要警告的字符串列表,后跟一个表示提示的参数。如果定义了该参数,则它将按换行符拆分,并在主消息后逐行(用括号括起来)连接。
返回值
构造的字符串。
blurt()
目的
参数
返回值
death()
目的
参数
返回值
check_conditional_preprocessor_statements()
目的
参数
返回值
escape_file_for_line_directive()
目的
转义给定的代码源名称(通常是文件名,但也可以是从中读取的命令),以便转义双引号和反斜杠。
参数
一个字符串。
返回值
一个转义了双引号和反斜杠的字符串。
report_typemap_failure
目的
针对缺少的类型映射进行错误报告。
参数
ExtUtils::ParseXS
对象。
一个 ExtUtils::Typemaps
对象。
表示在类型映射中未找到的 C 类型的字符串。
可选,字符串 death
或 blurt
,以选择错误是否立即致命。默认值:blurt
返回值
不返回任何内容。根据参数,这可能会调用 death
或 blurt
,前者是致命的。