📄 ppport.pm
字号:
################################################################################## !!!!! Do NOT edit this file directly! -- Edit PPPort_pm.PL instead. !!!!!## This file was automatically generated from the definition files in the# parts/inc/ subdirectory by PPPort_pm.PL. To learn more about how all this# works, please read the F<HACKERS> file that came with this distribution.################################################################################### Perl/Pollution/Portability################################################################################### $Revision: 57 $# $Author: mhx $# $Date: 2007/09/11 23:28:24 +0200 $################################################################################### Version 3.x, Copyright (C) 2004-2007, 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/or# modify it under the same terms as Perl itself.#################################################################################=head1 NAMEDevel::PPPort - Perl/Pollution/Portability=head1 SYNOPSIS Devel::PPPort::WriteFile(); # defaults to ./ppport.h Devel::PPPort::WriteFile('someheader.h');=head1 DESCRIPTIONPerl's API has changed over time, gaining new features, new functions,increasing its flexibility, and reducing the impact on the C namespaceenvironment (reduced pollution). The header file written by this module,typically F<ppport.h>, attempts to bring some of the newer Perl APIfeatures to older versions of Perl, so that you can worry less aboutkeeping track of old releases, but users can still reap the benefit.C<Devel::PPPort> contains a single function, called C<WriteFile>. Itsonly purpose is to write the F<ppport.h> C header file. This filecontains a series of macros and, if explicitly requested, functions thatallow XS modules to be built using older versions of Perl. Currently,Perl versions from 5.003 to 5.10.0 are supported.This module is used by C<h2xs> to write the file F<ppport.h>.=head2 Why use ppport.h?You should use F<ppport.h> in modern code so that your code will workwith the widest range of Perl interpreters possible, without significantadditional work.You should attempt older code to fully use F<ppport.h>, because thereduced pollution of newer Perl versions is an important thing. It's soimportant that the old polluting ways of original Perl modules will not besupported very far into the future, and your module will almost certainlybreak! By adapting to it now, you'll gain compatibility and a sense ofhaving done the electronic ecology some good.=head2 How to use ppport.hDon't direct the users of your module to download C<Devel::PPPort>.They are most probably no XS writers. Also, don't make F<ppport.h>optional. Rather, just take the most recent copy of F<ppport.h> thatyou can find (e.g. by generating it with the latest C<Devel::PPPort>release from CPAN), copy it into your project, adjust your project touse it, and distribute the header along with your module.=head2 Running ppport.hBut F<ppport.h> is more than just a C header. It's also a Perl scriptthat can check your source code. It will suggest hints and portabilitynotes, and can even make suggestions on how to change your code. Youcan run it like any other Perl program: perl ppport.h [options] [files]It also has embedded documentation, so you can use perldoc ppport.hto find out more about how to use it.=head1 FUNCTIONS=head2 WriteFileC<WriteFile> takes one optional argument. When called with oneargument, it expects to be passed a filename. When called withno arguments, it defaults to the filename F<ppport.h>.The function returns a true value if the file was written successfully.Otherwise it returns a false value.=head1 COMPATIBILITYF<ppport.h> supports Perl versions from 5.003 to 5.10.0in threaded and non-threaded configurations.=head2 Provided Perl compatibility APIThe header file written by this module, typically F<ppport.h>, providesaccess to the following elements of the Perl API that is not availablein older Perl releases: _aMY_CXT _pMY_CXT aMY_CXT aMY_CXT_ aTHX aTHX_ aTHXR aTHXR_ AvFILLp boolSV call_argv call_method call_pv call_sv ckWARN CopFILE CopFILE_set CopFILEAV CopFILEGV CopFILEGV_set CopFILESV CopSTASH CopSTASH_eq CopSTASH_set CopSTASHPV CopSTASHPV_set CopyD dAX dAXMARK DEFSV dITEMS dMY_CXT dMY_CXT_SV dNOOP dTHR dTHX dTHXa dTHXoa dTHXR dUNDERBAR dVAR dXCPT dXSTARG END_EXTERN_C ERRSV eval_pv eval_sv EXTERN_C get_av get_cv get_hv get_sv grok_bin grok_hex grok_number GROK_NUMERIC_RADIX grok_numeric_radix grok_oct gv_stashpvn hv_fetchs hv_stores IN_LOCALE IN_LOCALE_COMPILETIME IN_LOCALE_RUNTIME IN_PERL_COMPILETIME INT2PTR IS_NUMBER_GREATER_THAN_UV_MAX IS_NUMBER_IN_UV IS_NUMBER_INFINITY IS_NUMBER_NAN IS_NUMBER_NEG IS_NUMBER_NOT_INT IVdf IVSIZE IVTYPE load_module memEQ memNE MoveD mPUSHi mPUSHn mPUSHp mPUSHu mXPUSHi mXPUSHn mXPUSHp mXPUSHu MY_CXT MY_CXT_CLONE MY_CXT_INIT my_snprintf my_strlcat my_strlcpy newCONSTSUB newRV_inc newRV_noinc newSVpvn newSVpvn_share newSVpvs newSVuv Newx Newxc Newxz NOOP NUM2PTR NVef NVff NVgf NVTYPE packWARN PERL_ABS PERL_BCDVERSION PERL_GCC_BRACE_GROUPS_FORBIDDEN PERL_HASH PERL_INT_MAX PERL_INT_MIN PERL_LONG_MAX PERL_LONG_MIN PERL_MAGIC_arylen PERL_MAGIC_backref PERL_MAGIC_bm PERL_MAGIC_collxfrm PERL_MAGIC_dbfile PERL_MAGIC_dbline PERL_MAGIC_defelem PERL_MAGIC_env PERL_MAGIC_envelem PERL_MAGIC_ext PERL_MAGIC_fm PERL_MAGIC_glob PERL_MAGIC_isa PERL_MAGIC_isaelem PERL_MAGIC_mutex PERL_MAGIC_nkeys PERL_MAGIC_overload PERL_MAGIC_overload_elem PERL_MAGIC_overload_table PERL_MAGIC_pos PERL_MAGIC_qr PERL_MAGIC_regdata PERL_MAGIC_regdatum PERL_MAGIC_regex_global PERL_MAGIC_shared PERL_MAGIC_shared_scalar PERL_MAGIC_sig PERL_MAGIC_sigelem PERL_MAGIC_substr PERL_MAGIC_sv PERL_MAGIC_taint PERL_MAGIC_tied PERL_MAGIC_tiedelem PERL_MAGIC_tiedscalar PERL_MAGIC_utf8 PERL_MAGIC_uvar PERL_MAGIC_uvar_elem PERL_MAGIC_vec PERL_MAGIC_vstring PERL_QUAD_MAX PERL_QUAD_MIN PERL_REVISION PERL_SCAN_ALLOW_UNDERSCORES PERL_SCAN_DISALLOW_PREFIX PERL_SCAN_GREATER_THAN_UV_MAX PERL_SCAN_SILENT_ILLDIGIT PERL_SHORT_MAX PERL_SHORT_MIN PERL_SIGNALS_UNSAFE_FLAG PERL_SUBVERSION PERL_UCHAR_MAX PERL_UCHAR_MIN PERL_UINT_MAX PERL_UINT_MIN PERL_ULONG_MAX PERL_ULONG_MIN PERL_UNUSED_ARG PERL_UNUSED_CONTEXT PERL_UNUSED_DECL PERL_UNUSED_VAR PERL_UQUAD_MAX PERL_UQUAD_MIN PERL_USE_GCC_BRACE_GROUPS PERL_USHORT_MAX PERL_USHORT_MIN PERL_VERSION Perl_warner Perl_warner_nocontext PL_compiling PL_copline PL_curcop PL_curstash PL_DBsignal PL_DBsingle PL_DBsub PL_DBtrace PL_debstash PL_defgv PL_diehook PL_dirty PL_dowarn PL_errgv PL_expect PL_hexdigit PL_hints PL_laststatval PL_na PL_no_modify PL_perl_destruct_level PL_perldb PL_ppaddr PL_rsfp PL_rsfp_filters PL_signals PL_stack_base PL_stack_sp PL_statcache PL_stdingv PL_Sv PL_sv_arenaroot PL_sv_no PL_sv_undef PL_sv_yes PL_tainted PL_tainting pMY_CXT pMY_CXT_ Poison PoisonFree PoisonNew PoisonWith pTHX pTHX_ PTR2IV PTR2NV PTR2ul PTR2UV PTRV PUSHmortal PUSHu SAVE_DEFSV START_EXTERN_C START_MY_CXT STMT_END STMT_START STR_WITH_LEN sv_2pv_flags sv_2pv_nolen sv_2pvbyte sv_2pvbyte_nolen sv_2uv sv_catpv_mg sv_catpvf_mg sv_catpvf_mg_nocontext sv_catpvn_mg sv_catpvn_nomg sv_catpvs sv_catsv_mg sv_catsv_nomg SV_CONST_RETURN SV_COW_DROP_PV SV_COW_SHARED_HASH_KEYS SV_GMAGIC SV_HAS_TRAILING_NUL SV_IMMEDIATE_UNREF sv_magic_portable SV_MUTABLE_RETURN SV_NOSTEAL sv_pvn_force_flags sv_pvn_nomg sv_setiv_mg sv_setnv_mg sv_setpv_mg sv_setpvf_mg sv_setpvf_mg_nocontext sv_setpvn_mg sv_setpvs sv_setsv_mg sv_setsv_nomg sv_setuv sv_setuv_mg SV_SMAGIC sv_usepvn_mg SV_UTF8_NO_ENCODING sv_uv sv_vcatpvf sv_vcatpvf_mg sv_vsetpvf sv_vsetpvf_mg SVf SvGETMAGIC SvIV_nomg SvMAGIC_set SvPV_const SvPV_flags SvPV_flags_const SvPV_flags_const_nolen SvPV_flags_mutable SvPV_force SvPV_force_flags SvPV_force_flags_mutable SvPV_force_flags_nolen SvPV_force_mutable SvPV_force_nolen SvPV_force_nomg SvPV_force_nomg_nolen SvPV_mutable SvPV_nolen SvPV_nolen_const SvPV_nomg SvPV_nomg_const SvPV_nomg_const_nolen SvPVbyte SvPVX_const SvPVX_mutable SvREFCNT_inc SvREFCNT_inc_NN SvREFCNT_inc_simple SvREFCNT_inc_simple_NN SvREFCNT_inc_simple_void SvREFCNT_inc_simple_void_NN SvREFCNT_inc_void SvREFCNT_inc_void_NN SvRV_set SvSHARED_HASH SvSTASH_set SvUOK SvUV SvUV_nomg SvUV_set SvUVX SvUVx SvUVXx SvVSTRING_mg UNDERBAR UTF8_MAXBYTES UVof UVSIZE UVTYPE UVuf UVXf UVxf vload_module vnewSVpvf WARN_ALL WARN_AMBIGUOUS WARN_ASSERTIONS WARN_BAREWORD WARN_CLOSED WARN_CLOSURE WARN_DEBUGGING WARN_DEPRECATED WARN_DIGIT WARN_EXEC WARN_EXITING WARN_GLOB WARN_INPLACE WARN_INTERNAL WARN_IO WARN_LAYER WARN_MALLOC WARN_MISC WARN_NEWLINE WARN_NUMERIC WARN_ONCE WARN_OVERFLOW WARN_PACK WARN_PARENTHESIS WARN_PIPE WARN_PORTABLE WARN_PRECEDENCE WARN_PRINTF WARN_PROTOTYPE WARN_QW WARN_RECURSION WARN_REDEFINE WARN_REGEXP WARN_RESERVED WARN_SEMICOLON WARN_SEVERE WARN_SIGNAL WARN_SUBSTR WARN_SYNTAX WARN_TAINT WARN_THREADS WARN_UNINITIALIZED WARN_UNOPENED WARN_UNPACK WARN_UNTIE WARN_UTF8 WARN_VOID warner XCPT_CATCH XCPT_RETHROW XCPT_TRY_END XCPT_TRY_START XPUSHmortal XPUSHu XSprePUSH XSRETURN XSRETURN_UV XST_mUV ZeroD=head2 Perl API not supported by ppport.hThere is still a big part of the API not supported by F<ppport.h>.Either because it doesn't make sense to back-port that part of the API,or simply because it hasn't been implemented yet. Patches welcome!Here's a list of the currently unsupported API, and also the version ofPerl below which it is unsupported:=over 4=item perl 5.9.5 MULTICALL POP_MULTICALL PUSH_MULTICALL Perl_signbit SvRX SvRXOK av_create_and_push av_create_and_unshift_one get_cvn_flags gv_fetchfile_flags hv_assert mro_get_linear_isa mro_get_linear_isa_c3 mro_get_linear_isa_dfs mro_method_changed_in my_dirfd newSV_type pad_sv pregcomp ptr_table_clear ptr_table_fetch ptr_table_free ptr_table_new ptr_table_split ptr_table_store re_compile re_intuit_start reg_named_buff_all reg_named_buff_exists reg_named_buff_fetch reg_named_buff_firstkey reg_named_buff_nextkey reg_named_buff_scalar reg_stringify regfree_internal savesharedpvn scan_vstring stashpv_hvname_match upg_version=item perl 5.9.4 PerlIO_context_layers gv_name_set my_vsnprintf newXS_flags pv_escape pv_pretty regclass_swash sv_does sv_usepvn_flags=item perl 5.9.3 av_arylen_p ckwarn ckwarn_d csighandler dMULTICALL doref gv_const_sv gv_stashpvs hv_eiter_p hv_eiter_set hv_name_set hv_placeholders_get hv_placeholders_p hv_placeholders_set hv_riter_p hv_riter_set is_utf8_string_loclen my_sprintf newGIVENOP newSVhek newSVpvs_share newWHENOP newWHILEOP ref savepvs sortsv_flags vverify=item perl 5.9.2 SvPVbyte_force find_rundefsvoffset gv_fetchpvn_flags gv_fetchsv op_refcnt_lock op_refcnt_unlock savesvpv vnormal=item perl 5.9.1 hv_clear_placeholders hv_scalar scan_version sv_2iv_flags sv_2uv_flags=item perl 5.9.0 new_version save_set_svflags vcmp vnumify vstringify=item perl 5.8.3 SvIsCOW SvIsCOW_shared_hash=item perl 5.8.1 SvVOK doing_taint
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -