📄 dbipport.h
字号:
#if 0<<'SKIP';#endif/*---------------------------------------------------------------------- ppport.h -- Perl/Pollution/Portability Version 3.06_01 Automatically created by Devel::PPPort running under perl 5.008008 on Wed Apr 26 01:39:44 2006. Do NOT edit this file directly! -- Edit PPPort_pm.PL and the includes in parts/inc/ instead. Use 'perldoc ppport.h' to view the documentation below.----------------------------------------------------------------------SKIP=pod=head1 NAMEppport.h - Perl/Pollution/Portability version 3.06_01=head1 SYNOPSIS perl ppport.h [options] [source files] Searches current directory for files if no [source files] are given --help show short help --patch=file write one patch file with changes --copy=suffix write changed copies with suffix --diff=program use diff program and options --compat-version=version provide compatibility with Perl version --cplusplus accept C++ comments --quiet don't output anything except fatal errors --nodiag don't show diagnostics --nohints don't show hints --nochanges don't suggest changes --nofilter don't filter input files --list-provided list provided API --list-unsupported list unsupported API --api-info=name show Perl API portability information=head1 COMPATIBILITYThis version of F<ppport.h> is designed to support operation with Perlinstallations back to 5.003, and has been tested up to 5.9.3.=head1 OPTIONS=head2 --helpDisplay a brief usage summary.=head2 --patch=I<file>If this option is given, a single patch file will be created ifany changes are suggested. This requires a working diff programto be installed on your system.=head2 --copy=I<suffix>If this option is given, a copy of each file will be saved withthe given suffix that contains the suggested changes. This doesnot require any external programs.If neither C<--patch> or C<--copy> are given, the default is tosimply print the diffs for each file. This requires eitherC<Text::Diff> or a C<diff> program to be installed.=head2 --diff=I<program>Manually set the diff program and options to use. The defaultis to use C<Text::Diff>, when installed, and output unifiedcontext diffs.=head2 --compat-version=I<version>Tell F<ppport.h> to check for compatibility with the givenPerl version. The default is to check for compatibility with Perlversion 5.003. You can use this option to reduce the outputof F<ppport.h> if you intend to be backward compatible onlyup to a certain Perl version.=head2 --cplusplusUsually, F<ppport.h> will detect C++ style comments andreplace them with C style comments for portability reasons.Using this option instructs F<ppport.h> to leave C++comments untouched.=head2 --quietBe quiet. Don't print anything except fatal errors.=head2 --nodiagDon't output any diagnostic messages. Only portabilityalerts will be printed.=head2 --nohintsDon't output any hints. Hints often contain useful portabilitynotes.=head2 --nochangesDon't suggest any changes. Only give diagnostic output and hintsunless these are also deactivated.=head2 --nofilterDon't filter the list of input files. By default, files not lookinglike source code (i.e. not *.xs, *.c, *.cc, *.cpp or *.h) are skipped.=head2 --list-providedLists the API elements for which compatibility is provided byF<ppport.h>. Also lists if it must be explicitly requested,if it has dependencies, and if there are hints for it.=head2 --list-unsupportedLists the API elements that are known not to be supported byF<ppport.h> and below which version of Perl they probablywon't be available or work.=head2 --api-info=I<name>Show portability information for API elements matching I<name>.If I<name> is surrounded by slashes, it is interpreted as a regularexpression.=head1 DESCRIPTIONIn order for a Perl extension (XS) module to be as portable as possibleacross differing versions of Perl itself, certain steps need to be taken.=over 4=item *Including this header is the first major one. This alone will give youaccess to a large part of the Perl API that hasn't been available inearlier Perl releases. Use perl ppport.h --list-providedto see which API elements are provided by ppport.h.=item *You should avoid using deprecated parts of the API. For example, usingglobal Perl variables without the C<PL_> prefix is deprecated. Also,some API functions used to have a C<perl_> prefix. Using this form isalso deprecated. You can safely use the supported API, as F<ppport.h>will provide wrappers for older Perl versions.=item *If you use one of a few functions that were not present in earlierversions of Perl, and that can't be provided using a macro, you haveto explicitly request support for these functions by adding one ormore C<#define>s in your source code before the inclusion of F<ppport.h>.These functions will be marked C<explicit> in the list shown byC<--list-provided>.Depending on whether you module has a single or multiple files thatuse such functions, you want either C<static> or global variants.For a C<static> function, use: #define NEED_functionFor a global function, use: #define NEED_function_GLOBALNote that you mustn't have more than one global request for onefunction in your project. Function Static Request Global Request ----------------------------------------------------------------------------------------- eval_pv() NEED_eval_pv NEED_eval_pv_GLOBAL grok_bin() NEED_grok_bin NEED_grok_bin_GLOBAL grok_hex() NEED_grok_hex NEED_grok_hex_GLOBAL grok_number() NEED_grok_number NEED_grok_number_GLOBAL grok_numeric_radix() NEED_grok_numeric_radix NEED_grok_numeric_radix_GLOBAL grok_oct() NEED_grok_oct NEED_grok_oct_GLOBAL newCONSTSUB() NEED_newCONSTSUB NEED_newCONSTSUB_GLOBAL newRV_noinc() NEED_newRV_noinc NEED_newRV_noinc_GLOBAL sv_2pv_nolen() NEED_sv_2pv_nolen NEED_sv_2pv_nolen_GLOBAL sv_2pvbyte() NEED_sv_2pvbyte NEED_sv_2pvbyte_GLOBAL sv_catpvf_mg() NEED_sv_catpvf_mg NEED_sv_catpvf_mg_GLOBAL sv_catpvf_mg_nocontext() NEED_sv_catpvf_mg_nocontext NEED_sv_catpvf_mg_nocontext_GLOBAL sv_setpvf_mg() NEED_sv_setpvf_mg NEED_sv_setpvf_mg_GLOBAL sv_setpvf_mg_nocontext() NEED_sv_setpvf_mg_nocontext NEED_sv_setpvf_mg_nocontext_GLOBAL vnewSVpvf() NEED_vnewSVpvf NEED_vnewSVpvf_GLOBALTo avoid namespace conflicts, you can change the namespace of theexplicitly exported functions using the C<DPPP_NAMESPACE> macro.Just C<#define> the macro before including C<ppport.h>: #define DPPP_NAMESPACE MyOwnNamespace_ #include "ppport.h"The default namespace is C<DPPP_>.=backThe good thing is that most of the above can be checked by runningF<ppport.h> on your source code. See the next section fordetails.=head1 EXAMPLESTo verify whether F<ppport.h> is needed for your module, whether youshould make any changes to your code, and whether any special definesshould be used, F<ppport.h> can be run as a Perl script to check yoursource code. Simply say: perl ppport.hThe result will usually be a list of patches suggesting changesthat should at least be acceptable, if not necessarily the mostefficient solution, or a fix for all possible problems.If you know that your XS module uses features only available innewer Perl releases, if you're aware that it uses C++ comments,and if you want all suggestions as a single patch file, you coulduse something like this: perl ppport.h --compat-version=5.6.0 --cplusplus --patch=test.diffIf you only want your code to be scanned without any suggestionsfor changes, use: perl ppport.h --nochangesYou can specify a different C<diff> program or options, usingthe C<--diff> option: perl ppport.h --diff='diff -C 10'This would output context diffs with 10 lines of context.To display portability information for the C<newSVpvn> function,use: perl ppport.h --api-info=newSVpvnSince the argument to C<--api-info> can be a regular expression,you can use perl ppport.h --api-info=/_nomg$/to display portability information for all C<_nomg> functions or perl ppport.h --api-info=/./to display information for all known API elements.=head1 BUGSIf this version of F<ppport.h> is causing failure duringthe compilation of this module, please check if newer versionsof either this module or C<Devel::PPPort> are available on CPANbefore sending a bug report.If F<ppport.h> was generated using the latest version ofC<Devel::PPPort> and is causing failure of this module, pleasefile a bug report using the CPAN Request Tracker at L<http://rt.cpan.org/>.Please include the following information:=over 4=item 1.The complete output from running "perl -V"=item 2.This file.=item 3.The name and version of the module you were trying to build.=item 4.A full log of the build that failed.=item 5.Any other information that you think could be relevant.=backFor the latest version of this code, please get the C<Devel::PPPort>module from CPAN.=head1 COPYRIGHTVersion 3.x, Copyright (c) 2004-2005, Marcus Holland-Moritz.Version 2.x, Copyright (C) 2001, Paul Marquess.Version 1.x, Copyright (C) 1999, Kenneth Albanowski.This program is free software; you can redistribute it and/ormodify it under the same terms as Perl itself.=head1 SEE ALSOSee L<Devel::PPPort>.=cutuse strict;my %opt = ( quiet => 0, diag => 1, hints => 1, changes => 1, cplusplus => 0, filter => 1,);my($ppport) = $0 =~ /([\w.]+)$/;my $LF = '(?:\r\n|[\r\n])'; # line feedmy $HS = "[ \t]"; # horizontal whitespaceeval { require Getopt::Long; Getopt::Long::GetOptions(\%opt, qw( help quiet diag! filter! hints! changes! cplusplus patch=s copy=s diff=s compat-version=s list-provided list-unsupported api-info=s )) or usage();};if ($@ and grep /^-/, @ARGV) { usage() if "@ARGV" =~ /^--?h(?:elp)?$/; die "Getopt::Long not found. Please don't use any options.\n";}usage() if $opt{help};if (exists $opt{'compat-version'}) { my($r,$v,$s) = eval { parse_version($opt{'compat-version'}) }; if ($@) { die "Invalid version number format: '$opt{'compat-version'}'\n"; } die "Only Perl 5 is supported\n" if $r != 5; die "Invalid version number: $opt{'compat-version'}\n" if $v >= 1000 || $s >= 1000; $opt{'compat-version'} = sprintf "%d.%03d%03d", $r, $v, $s;}else { $opt{'compat-version'} = 5;}# Never use C comments in this file!!!!!my $ccs = '/'.'*';my $cce = '*'.'/';my $rccs = quotemeta $ccs;my $rcce = quotemeta $cce;my %API = map { /^(\w+)\|([^|]*)\|([^|]*)\|(\w*)$/ ? ( $1 => { ($2 ? ( base => $2 ) : ()), ($3 ? ( todo => $3 ) : ()), (index($4, 'v') >= 0 ? ( varargs => 1 ) : ()), (index($4, 'p') >= 0 ? ( provided => 1 ) : ()), (index($4, 'n') >= 0 ? ( nothxarg => 1 ) : ()), } ) : die "invalid spec: $_" } qw(AvFILLp|5.004050||pAvFILL|||CLASS|||nCX_CURPAD_SAVE|||CX_CURPAD_SV|||CopFILEAV|5.006000||pCopFILEGV_set|5.006000||pCopFILEGV|5.006000||pCopFILESV|5.006000||pCopFILE_set|5.006000||pCopFILE|5.006000||pCopSTASHPV_set|5.006000||pCopSTASHPV|5.006000||pCopSTASH_eq|5.006000||pCopSTASH_set|5.006000||pCopSTASH|5.006000||pCopyD|5.009002||pCopy|||CvPADLIST|||CvSTASH|||CvWEAKOUTSIDE|||DEFSV|5.004050||pEND_EXTERN_C|5.005000||pENTER|||ERRSV|5.004050||pEXTEND|||EXTERN_C|5.005000||pFREETMPS|||GIMME_V||5.004000|nGIMME|||nGROK_NUMERIC_RADIX|5.007002||pG_ARRAY|||G_DISCARD|||G_EVAL|||G_NOARGS|||G_SCALAR|||G_VOID||5.004000|GetVars|||GvSV|||Gv_AMupdate|||HEf_SVKEY||5.004000|HeHASH||5.004000|HeKEY||5.004000|HeKLEN||5.004000|HePV||5.004000|HeSVKEY_force||5.004000|HeSVKEY_set||5.004000|HeSVKEY||5.004000|HeVAL||5.004000|HvNAME|||INT2PTR|5.006000||pIN_LOCALE_COMPILETIME|5.007002||pIN_LOCALE_RUNTIME|5.007002||pIN_LOCALE|5.007002||pIN_PERL_COMPILETIME|5.008001||pIS_NUMBER_GREATER_THAN_UV_MAX|5.007002||pIS_NUMBER_INFINITY|5.007002||pIS_NUMBER_IN_UV|5.007002||pIS_NUMBER_NAN|5.007003||pIS_NUMBER_NEG|5.007002||pIS_NUMBER_NOT_INT|5.007002||pIVSIZE|5.006000||pIVTYPE|5.006000||pIVdf|5.006000||pLEAVE|||LVRET|||MARK|||MY_CXT_CLONE|5.009002||pMY_CXT_INIT|5.007003||pMY_CXT|5.007003||pMoveD|5.009002||pMove|||NEWSV|||NOOP|5.005000||pNUM2PTR|5.006000||pNVTYPE|5.006000||pNVef|5.006001||pNVff|5.006001||pNVgf|5.006001||pNewc|||Newz|||New|||Nullav|||Nullch|||Nullcv|||Nullhv|||Nullsv|||ORIGMARK|||PAD_BASE_SV|||PAD_CLONE_VARS|||PAD_COMPNAME_FLAGS|||PAD_COMPNAME_GEN_set|||PAD_COMPNAME_GEN|||PAD_COMPNAME_OURSTASH|||PAD_COMPNAME_PV|||PAD_COMPNAME_TYPE|||PAD_RESTORE_LOCAL|||PAD_SAVE_LOCAL|||PAD_SAVE_SETNULLPAD|||PAD_SETSV|||PAD_SET_CUR_NOSAVE|||PAD_SET_CUR|||PAD_SVl|||PAD_SV|||PERL_BCDVERSION|5.009003||pPERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||pPERL_INT_MAX|5.004000||pPERL_INT_MIN|5.004000||pPERL_LONG_MAX|5.004000||pPERL_LONG_MIN|5.004000||pPERL_MAGIC_arylen|5.007002||pPERL_MAGIC_backref|5.007002||pPERL_MAGIC_bm|5.007002||pPERL_MAGIC_collxfrm|5.007002||pPERL_MAGIC_dbfile|5.007002||pPERL_MAGIC_dbline|5.007002||pPERL_MAGIC_defelem|5.007002||pPERL_MAGIC_envelem|5.007002||pPERL_MAGIC_env|5.007002||pPERL_MAGIC_ext|5.007002||pPERL_MAGIC_fm|5.007002||pPERL_MAGIC_glob|5.007002||pPERL_MAGIC_isaelem|5.007002||pPERL_MAGIC_isa|5.007002||pPERL_MAGIC_mutex|5.007002||pPERL_MAGIC_nkeys|5.007002||pPERL_MAGIC_overload_elem|5.007002||pPERL_MAGIC_overload_table|5.007002||pPERL_MAGIC_overload|5.007002||pPERL_MAGIC_pos|5.007002||pPERL_MAGIC_qr|5.007002||pPERL_MAGIC_regdata|5.007002||pPERL_MAGIC_regdatum|5.007002||pPERL_MAGIC_regex_global|5.007002||pPERL_MAGIC_shared_scalar|5.007003||pPERL_MAGIC_shared|5.007003||pPERL_MAGIC_sigelem|5.007002||pPERL_MAGIC_sig|5.007002||pPERL_MAGIC_substr|5.007002||pPERL_MAGIC_sv|5.007002||pPERL_MAGIC_taint|5.007002||pPERL_MAGIC_tiedelem|5.007002||pPERL_MAGIC_tiedscalar|5.007002||pPERL_MAGIC_tied|5.007002||pPERL_MAGIC_utf8|5.008001||pPERL_MAGIC_uvar_elem|5.007003||pPERL_MAGIC_uvar|5.007002||pPERL_MAGIC_vec|5.007002||pPERL_MAGIC_vstring|5.008001||pPERL_QUAD_MAX|5.004000||pPERL_QUAD_MIN|5.004000||pPERL_REVISION|5.006000||pPERL_SCAN_ALLOW_UNDERSCORES|5.007003||pPERL_SCAN_DISALLOW_PREFIX|5.007003||pPERL_SCAN_GREATER_THAN_UV_MAX|5.007003||pPERL_SCAN_SILENT_ILLDIGIT|5.008001||pPERL_SHORT_MAX|5.004000||pPERL_SHORT_MIN|5.004000||pPERL_SUBVERSION|5.006000||pPERL_UCHAR_MAX|5.004000||pPERL_UCHAR_MIN|5.004000||pPERL_UINT_MAX|5.004000||pPERL_UINT_MIN|5.004000||pPERL_ULONG_MAX|5.004000||pPERL_ULONG_MIN|5.004000||pPERL_UNUSED_DECL|5.007002||pPERL_UQUAD_MAX|5.004000||pPERL_UQUAD_MIN|5.004000||pPERL_USHORT_MAX|5.004000||pPERL_USHORT_MIN|5.004000||pPERL_VERSION|5.006000||pPL_DBsingle|||pnPL_DBsub|||pnPL_DBtrace|||nPL_Sv|5.005000||pPL_compiling|5.004050||pPL_copline|5.005000||pPL_curcop|5.004050||pPL_curstash|5.004050||pPL_debstash|5.004050||pPL_defgv|5.004050||pPL_diehook|5.004050||pPL_dirty|5.004050||pPL_dowarn|||pnPL_errgv|5.004050||pPL_hexdigit|5.005000||pPL_hints|5.005000||pPL_last_in_gv|||nPL_modglobal||5.005000|nPL_na|5.004050||pnPL_no_modify|5.006000||pPL_ofs_sv|||nPL_perl_destruct_level|5.004050||pPL_perldb|5.004050||pPL_ppaddr|5.006000||pPL_rsfp_filters|5.004050||pPL_rsfp|5.004050||pPL_rs|||nPL_stack_base|5.004050||pPL_stack_sp|5.004050||pPL_stdingv|5.004050||pPL_sv_arenaroot|5.004050||pPL_sv_no|5.004050||pnPL_sv_undef|5.004050||pnPL_sv_yes|5.004050||pnPL_tainted|5.004050||pPL_tainting|5.004050||pPOPi|||nPOPl|||nPOPn|||nPOPpbytex||5.007001|nPOPpx||5.005030|nPOPp|||nPOPs|||nPTR2IV|5.006000||pPTR2NV|5.006000||pPTR2UV|5.006000||pPTR2ul|5.007001||pPTRV|5.006000||pPUSHMARK|||PUSHi|||PUSHmortal|5.009002||pPUSHn|||PUSHp|||PUSHs|||
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -