⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sv_xpvf

📁 source of perl for linux application,
💻
字号:
####################################################################################  $Revision: 8 $##  $Author: mhx $##  $Date: 2007/09/11 23:20:43 +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.##################################################################################=providesvnewSVpvfsv_vcatpvfsv_vsetpvfsv_catpvf_mgsv_catpvf_mg_nocontextsv_vcatpvf_mgsv_setpvf_mgsv_setpvf_mg_nocontextsv_vsetpvf_mg=implementation#if { VERSION >= 5.004 } && !defined(vnewSVpvf)#if { NEED vnewSVpvf }SV *vnewSVpvf(pTHX_ const char *pat, va_list *args){  register SV *sv = newSV(0);  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  return sv;}#endif#endif#if { VERSION >= 5.004 } && !defined(sv_vcatpvf)#  define sv_vcatpvf(sv, pat, args)  sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))#endif#if { VERSION >= 5.004 } && !defined(sv_vsetpvf)#  define sv_vsetpvf(sv, pat, args)  sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*))#endif#if { VERSION >= 5.004 } && !defined(sv_catpvf_mg)#if { NEED sv_catpvf_mg }voidsv_catpvf_mg(pTHX_ SV *sv, const char *pat, ...){  va_list args;  va_start(args, pat);  sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));  SvSETMAGIC(sv);  va_end(args);}#endif#endif#ifdef PERL_IMPLICIT_CONTEXT#if { VERSION >= 5.004 } && !defined(sv_catpvf_mg_nocontext)#if { NEED sv_catpvf_mg_nocontext }voidsv_catpvf_mg_nocontext(SV *sv, const char *pat, ...){  dTHX;  va_list args;  va_start(args, pat);  sv_vcatpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));  SvSETMAGIC(sv);  va_end(args);}#endif#endif#endif/* sv_catpvf_mg depends on sv_catpvf_mg_nocontext */#ifndef sv_catpvf_mg#  ifdef PERL_IMPLICIT_CONTEXT#    define sv_catpvf_mg   Perl_sv_catpvf_mg_nocontext#  else#    define sv_catpvf_mg   Perl_sv_catpvf_mg#  endif#endif#if { VERSION >= 5.004 } && !defined(sv_vcatpvf_mg)#  define sv_vcatpvf_mg(sv, pat, args)                                     \   STMT_START {                                                            \     sv_vcatpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \     SvSETMAGIC(sv);                                                       \   } STMT_END#endif#if { VERSION >= 5.004 } && !defined(sv_setpvf_mg)#if { NEED sv_setpvf_mg }voidsv_setpvf_mg(pTHX_ SV *sv, const char *pat, ...){  va_list args;  va_start(args, pat);  sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));  SvSETMAGIC(sv);  va_end(args);}#endif#endif#ifdef PERL_IMPLICIT_CONTEXT#if { VERSION >= 5.004 } && !defined(sv_setpvf_mg_nocontext)#if { NEED sv_setpvf_mg_nocontext }voidsv_setpvf_mg_nocontext(SV *sv, const char *pat, ...){  dTHX;  va_list args;  va_start(args, pat);  sv_vsetpvfn(sv, pat, strlen(pat), &args, Null(SV**), 0, Null(bool*));  SvSETMAGIC(sv);  va_end(args);}#endif#endif#endif/* sv_setpvf_mg depends on sv_setpvf_mg_nocontext */#ifndef sv_setpvf_mg#  ifdef PERL_IMPLICIT_CONTEXT#    define sv_setpvf_mg   Perl_sv_setpvf_mg_nocontext#  else#    define sv_setpvf_mg   Perl_sv_setpvf_mg#  endif#endif#if { VERSION >= 5.004 } && !defined(sv_vsetpvf_mg)#  define sv_vsetpvf_mg(sv, pat, args)                                     \   STMT_START {                                                            \     sv_vsetpvfn(sv, pat, strlen(pat), args, Null(SV**), 0, Null(bool*));  \     SvSETMAGIC(sv);                                                       \   } STMT_END#endif=xsinit#define NEED_vnewSVpvf#define NEED_sv_catpvf_mg#define NEED_sv_catpvf_mg_nocontext#define NEED_sv_setpvf_mg#define NEED_sv_setpvf_mg_nocontext=xsmiscstatic SV * test_vnewSVpvf(pTHX_ const char *pat, ...){  SV *sv;  va_list args;  va_start(args, pat);#if { VERSION >= 5.004 }  sv = vnewSVpvf(pat, &args);#else  sv = newSVpv((char *) pat, 0);#endif  va_end(args);  return sv;}static void test_sv_vcatpvf(pTHX_ SV *sv, const char *pat, ...){  va_list args;  va_start(args, pat);#if { VERSION >= 5.004 }  sv_vcatpvf(sv, pat, &args);#else  sv_catpv(sv, (char *) pat);#endif  va_end(args);}static void test_sv_vsetpvf(pTHX_ SV *sv, const char *pat, ...){  va_list args;  va_start(args, pat);#if { VERSION >= 5.004 }  sv_vsetpvf(sv, pat, &args);#else  sv_setpv(sv, (char *) pat);#endif  va_end(args);}=xsubsSV *vnewSVpvf()	CODE:		RETVAL = test_vnewSVpvf(aTHX_ "%s-%d", "Perl", 42);	OUTPUT:		RETVALSV *sv_vcatpvf(sv)	SV *sv	CODE:		RETVAL = newSVsv(sv);		test_sv_vcatpvf(aTHX_ RETVAL, "%s-%d", "Perl", 42);	OUTPUT:		RETVALSV *sv_vsetpvf(sv)	SV *sv	CODE:		RETVAL = newSVsv(sv);		test_sv_vsetpvf(aTHX_ RETVAL, "%s-%d", "Perl", 42);	OUTPUT:		RETVALvoidsv_catpvf_mg(sv)	SV *sv	CODE:#if { VERSION >= 5.004 }		sv_catpvf_mg(sv, "%s-%d", "Perl", 42);#endifvoidPerl_sv_catpvf_mg(sv)	SV *sv	CODE:#if { VERSION >= 5.004 }		Perl_sv_catpvf_mg(aTHX_ sv, "%s-%d", "-Perl", 43);#endifvoidsv_catpvf_mg_nocontext(sv)	SV *sv	CODE:#if { VERSION >= 5.004 }#ifdef PERL_IMPLICIT_CONTEXT		sv_catpvf_mg_nocontext(sv, "%s-%d", "-Perl", 44);#else		sv_catpvf_mg(sv, "%s-%d", "-Perl", 44);#endif#endifvoidsv_setpvf_mg(sv)	SV *sv	CODE:#if { VERSION >= 5.004 }		sv_setpvf_mg(sv, "%s-%d", "mhx", 42);#endifvoidPerl_sv_setpvf_mg(sv)	SV *sv	CODE:#if { VERSION >= 5.004 }		Perl_sv_setpvf_mg(aTHX_ sv, "%s-%d", "foo", 43);#endifvoidsv_setpvf_mg_nocontext(sv)	SV *sv	CODE:#if { VERSION >= 5.004 }#ifdef PERL_IMPLICIT_CONTEXT		sv_setpvf_mg_nocontext(sv, "%s-%d", "bar", 44);#else		sv_setpvf_mg(sv, "%s-%d", "bar", 44);#endif#endif=tests plan => 9use Tie::Hash;my %h;tie %h, 'Tie::StdHash';$h{foo} = 'foo-';$h{bar} = '';ok(&Devel::PPPort::vnewSVpvf(), $] >= 5.004 ? 'Perl-42' : '%s-%d');ok(&Devel::PPPort::sv_vcatpvf('1-2-3-'), $] >= 5.004 ? '1-2-3-Perl-42' : '1-2-3-%s-%d');ok(&Devel::PPPort::sv_vsetpvf('1-2-3-'), $] >= 5.004 ? 'Perl-42' : '%s-%d');&Devel::PPPort::sv_catpvf_mg($h{foo});ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42' : 'foo-');&Devel::PPPort::Perl_sv_catpvf_mg($h{foo});ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42-Perl-43' : 'foo-');&Devel::PPPort::sv_catpvf_mg_nocontext($h{foo});ok($h{foo}, $] >= 5.004 ? 'foo-Perl-42-Perl-43-Perl-44' : 'foo-');&Devel::PPPort::sv_setpvf_mg($h{bar});ok($h{bar}, $] >= 5.004 ? 'mhx-42' : '');&Devel::PPPort::Perl_sv_setpvf_mg($h{bar});ok($h{bar}, $] >= 5.004 ? 'foo-43' : '');&Devel::PPPort::sv_setpvf_mg_nocontext($h{bar});ok($h{bar}, $] >= 5.004 ? 'bar-44' : '');

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -