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
,前者會造成致命錯誤。