diff options
author | Charles Bailey <bailey@newman.upenn.edu> | 2000-02-09 09:09:45 +0000 |
---|---|---|
committer | bailey <bailey@newman.upenn.edu> | 2000-02-09 09:09:45 +0000 |
commit | cb50131aab68ac6dda048612c6e853b8cb08701e (patch) | |
tree | f79e2d86db7c34f64fc53a94e23bacad3c188a08 /op.h | |
parent | 8560c20dd6b2f3dfec719d4b500be45742de4507 (diff) | |
download | perl-cb50131aab68ac6dda048612c6e853b8cb08701e.tar.gz |
Resync with mainline
p4raw-id: //depot/vmsperl@5049
p4raw-branched: from //depot/perl@4822 'branch in'
ext/Sys/Syslog/Makefile.PL ext/Sys/Syslog/Syslog.pm
lib/Pod/Find.pm lib/Pod/ParseUtils.pm t/op/exists_sub.t
t/op/ver.t t/pragma/diagnostics.t win32/bin/exetype.pl
vos/config.def vos/config.pl (@4896..) pod/perlintern.pod
(@4915..) ext/Sys/Syslog/Syslog.xs (@4980..)
pod/perlunicode.pod (@5013..) pod/perlapi.pod (@5015..)
Todo-5.6 (@5027..)
p4raw-deleted: from //depot/perl@4822 'delete in' lib/Sys/Syslog.pm
(@2406..) Todo-5.005 (@4008..) lib/caller.pm (@4860..)
p4raw-edited: from //depot/perl@4822 'edit in' vms/subconfigure.com
(@4767..)
p4raw-integrated: from //depot/perl@4822 'copy in' hints/unicosmk.sh
(@948..) lib/FileHandle.pm (@1044..) lib/ExtUtils/Packlist.pm
(@1315..) ext/IPC/SysV/SysV.pm (@1372..) lib/Net/protoent.pm
lib/Net/servent.pm lib/Text/Soundex.pm (@1575..) README.vos
vos/Changes vos/build.cm vos/compile_perl.cm vos/perl.bind
vos/test_vos_dummies.c vos/vos_dummies.c (@1838..)
lib/utf8_heavy.pl (@2039..) ext/IO/lib/IO/Seekable.pm
lib/ExtUtils/Command.pm lib/Net/hostent.pm lib/Net/netent.pm
lib/Time/gmtime.pm lib/Time/localtime.pm lib/User/grent.pm
lib/User/pwent.pm (@2620..) eg/cgi/index.html lib/CGI/Apache.pm
lib/CGI/Switch.pm (@2830..) ext/IO/lib/IO/Dir.pm
ext/IO/lib/IO/Pipe.pm ext/IO/lib/IO/Poll.pm
ext/IO/lib/IO/Socket/UNIX.pm (@2882..) t/comp/use.t (@2891..)
lib/File/Compare.pm (@3061..) form.h (@3124..) hints/netbsd.sh
(@3158..) t/op/grep.t (@3180..) lib/AnyDBM_File.pm (@3317..)
lib/Test.pm (@3376..) lib/CPAN/Nox.pm (@3458..)
hints/openbsd.sh (@3516..) mg.h (@3524..) lib/CGI/Cookie.pm
lib/CGI/Pretty.pm (@3559..) lib/Text/ParseWords.pm (@3563..)
ext/IO/lib/IO/File.pm lib/File/Basename.pm (@3650..)
x2p/find2perl.PL (@3677..) cflags.SH (@3774..) utils/dprofpp.PL
(@3778..) ext/IO/lib/IO/Handle.pm (@3825..) lib/CGI.pm
lib/dumpvar.pl (@3848..) README.cygwin
lib/ExtUtils/MM_Cygwin.pm (@3852..) README.threads (@3860..)
lib/SelfLoader.pm t/io/tell.t t/lib/cgi-html.t t/op/attrs.t
(@4076..) ext/SDBM_File/sdbm/sdbm.c (@4082..)
lib/Test/Harness.pm (@4092..) pod/perlcompile.pod (@4120..)
ext/Opcode/Safe.pm (@4131..) ext/DB_File/Changes
ext/DB_File/Makefile.PL ext/DB_File/version.c (@4142..)
ext/DB_File/DB_File.xs (@4144..) lib/File/Spec/VMS.pm (@4182..)
hints/dynixptx.sh (@4271..) t/lib/fields.t (@4303..) thrdvar.h
(@4316..) pod/perlguts.pod (@4339..) Porting/makerel (@4391..)
lib/Text/Tabs.pm (@4398..) perlio.c (@4402..)
lib/CPAN/FirstTime.pm (@4416..) README (@4433..)
lib/attributes.pm (@4438..) ext/Devel/Peek/Peek.xs (@4475..)
Policy_sh.SH (@4496..) universal.c xsutils.c (@4511..)
ext/B/B/Stash.pm ext/B/NOTES ext/B/O.pm keywords.h keywords.pl
(@4515..) util.h (@4545..) ext/B/B/Asmdata.pm
ext/B/B/Deparse.pm (@4546..) ext/Data/Dumper/Dumper.xs
pod/perlmod.pod (@4556..) ext/IO/IO.xs lib/unicode/Is/ASCII.pl
lib/unicode/Is/Alnum.pl lib/unicode/Is/Alpha.pl
lib/unicode/Is/BidiAN.pl lib/unicode/Is/BidiB.pl
lib/unicode/Is/BidiCS.pl lib/unicode/Is/BidiEN.pl
lib/unicode/Is/BidiES.pl lib/unicode/Is/BidiET.pl
lib/unicode/Is/BidiL.pl lib/unicode/Is/BidiON.pl
lib/unicode/Is/BidiR.pl lib/unicode/Is/BidiS.pl
lib/unicode/Is/BidiWS.pl lib/unicode/Is/C.pl
lib/unicode/Is/Cc.pl lib/unicode/Is/Cn.pl
lib/unicode/Is/Cntrl.pl lib/unicode/Is/Co.pl
lib/unicode/Is/DCcircle.pl lib/unicode/Is/DCcompat.pl
lib/unicode/Is/DCfinal.pl lib/unicode/Is/DCfont.pl
lib/unicode/Is/DCinital.pl lib/unicode/Is/DCinitial.pl
lib/unicode/Is/DCisolated.pl lib/unicode/Is/DCnarrow.pl
lib/unicode/Is/DCnoBreak.pl lib/unicode/Is/DCsmall.pl
lib/unicode/Is/DCsquare.pl lib/unicode/Is/DCsub.pl
lib/unicode/Is/DCsuper.pl lib/unicode/Is/DCvertical.pl
lib/unicode/Is/DCwide.pl lib/unicode/Is/DecoCanon.pl
lib/unicode/Is/DecoCompat.pl lib/unicode/Is/Digit.pl
lib/unicode/Is/Graph.pl lib/unicode/Is/L.pl
lib/unicode/Is/Ll.pl lib/unicode/Is/Lm.pl lib/unicode/Is/Lo.pl
lib/unicode/Is/Lower.pl lib/unicode/Is/Lt.pl
lib/unicode/Is/Lu.pl lib/unicode/Is/M.pl lib/unicode/Is/Mc.pl
lib/unicode/Is/Mirrored.pl lib/unicode/Is/Mn.pl
lib/unicode/Is/N.pl lib/unicode/Is/Nd.pl lib/unicode/Is/No.pl
lib/unicode/Is/P.pl lib/unicode/Is/Pd.pl lib/unicode/Is/Pe.pl
lib/unicode/Is/Po.pl lib/unicode/Is/Print.pl
lib/unicode/Is/Ps.pl lib/unicode/Is/Punct.pl
lib/unicode/Is/S.pl lib/unicode/Is/Sc.pl lib/unicode/Is/Sm.pl
lib/unicode/Is/So.pl lib/unicode/Is/Space.pl (@4573..) perly.c
vms/perly_c.vms (@4578..) deb.c (@4588..) lib/Pod/Checker.pm
lib/Pod/Parser.pm lib/Pod/Usage.pm t/pod/poderrs.t
t/pod/poderrs.xr (@4590..) pod/Makefile pod/roffitall unixish.h
vos/vosish.h (@4602..) run.c (@4603..) utils/perlbug.PL
utils/perldoc.PL (@4604..) hints/hpux.sh (@4606..)
lib/strict.pm pod/perlsyn.pod (@4616..) ext/DB_File/DB_File.pm
ext/Fcntl/Fcntl.pm ext/GDBM_File/GDBM_File.pm
ext/Opcode/Opcode.pm ext/SDBM_File/SDBM_File.pm
ext/Socket/Socket.pm lib/AutoLoader.pm lib/Getopt/Std.pm
(@4623..) lib/ExtUtils/Manifest.pm (@4632..) pod/perlfaq2.pod
(@4636..) t/op/misc.t t/pragma/warn/2use (@4641..)
lib/Math/BigFloat.pm (@4685..) pod/perlfilter.pod
pod/perlopentut.pod (@4699..) t/pragma/warn/pp_hot
t/pragma/warn/pp_sys (@4709..) cygwin/Makefile.SHs
os2/Makefile.SHs (@4710..) lib/Net/Ping.pm (@4711..)
ext/POSIX/POSIX.xs ext/SDBM_File/sdbm/pair.c (@4717..)
lib/ExtUtils/Liblist.pm (@4720..) t/lib/charnames.t
t/lib/dumper.t (@4723..) lib/byte_heavy.pl (@4726..)
t/pragma/warn/doop t/pragma/warn/pp t/pragma/warn/sv
t/pragma/warn/utf8 (@4727..) lib/ExtUtils/xsubpp (@4731..)
pod/perlre.pod (@4732..) INTERN.h (@4734..) globals.c (@4744..)
lib/File/Copy.pm (@4753..) lib/ExtUtils/MM_VMS.pm
lib/ExtUtils/MM_Win32.pm (@4754..) lib/ExtUtils/Install.pm
(@4758..) ext/B/B/C.pm (@4763..) README.os2 (@4766..)
lib/ExtUtils/MakeMaker.pm (@4769..) installperl (@4774..)
lib/CPAN.pm lib/ExtUtils/Installed.pm lib/ExtUtils/MM_Unix.pm
lib/ExtUtils/Mksymlists.pm lib/diagnostics.pm (@4777..)
t/lib/thread.t (@4780..) pod/perl.pod (@4781..)
ext/IO/lib/IO/Socket.pm (@4782..) win32/perlhost.h (@4792..)
lib/Tie/Array.pm (@4796..) t/pragma/strict-vars (@4801..)
win32/config.bc win32/config.gc win32/config.vc (@4817..)
INSTALL (@4824..) utils/h2xs.PL (@4825..) embed.h (@4830..)
ext/Data/Dumper/Dumper.pm (@4832..) lib/Tie/Handle.pm (@4833..)
proto.h t/op/closure.t (@4834..) lib/base.pm lib/fields.pm
(@4835..) dump.c (@4836..) t/io/fs.t (@4838..)
lib/Carp/Heavy.pm (@4839..) t/cmd/while.t (@4848..)
Porting/Glossary Porting/config.sh Porting/config_H (@4850..)
lib/Sys/Hostname.pm (@4851..) ext/Devel/DProf/DProf.pm
(@4852..) hints/cygwin.sh (@4853..) patchlevel.h (@4858..)
ext/File/Glob/Glob.pm ext/IO/lib/IO/Socket/INET.pm
ext/NDBM_File/NDBM_File.pm ext/ODBM_File/ODBM_File.pm
ext/POSIX/POSIX.pm lib/Dumpvalue.pm lib/Fatal.pm
lib/File/Path.pm lib/File/stat.pm lib/Math/Complex.pm
lib/Math/Trig.pm lib/Shell.pm lib/constant.pm lib/lib.pm
(@4860..) lib/AutoSplit.pm (@4873..) lib/Pod/Html.pm (@4883..)
win32/perllib.c (@4884..) vos/config.h vos/config_h.SH_orig
(@4896..) perly.y pod/perlrun.pod pod/perlsub.pod
pod/perltodo.pod (@4905..) README.win32 lib/Class/Struct.pm
(@4906..) Porting/p4desc (@4908..) ext/Devel/Peek/Peek.pm
ext/Thread/Thread.pm lib/File/Find.pm lib/UNIVERSAL.pm
pod/buildtoc pod/perlfork.pod (@4910..) t/op/fork.t (@4914..)
XSUB.h av.h cop.h cv.h gv.h handy.h hv.h makedef.pl
pod/perltoc.pod pp.h scope.h (@4915..) global.sym objXSUB.h
(@4916..) lib/Cwd.pm (@4921..) doop.c t/pragma/warn/toke
(@4930..) win32/win32.c (@4933..) embedvar.h intrpvar.h
lib/charnames.pm op.h sv.h (@4937..) embed.pl (@4939..)
lib/utf8.pm regcomp.c regexec.c (@4941..)
vms/descrip_mms.template (@4944..) lib/warnings.pm warnings.pl
(@4947..) lib/File/Spec/Win32.pm (@4949..) lib/perl5db.pl
(@4955..) lib/Benchmark.pm (@4958..) lib/English.pm (@4960..)
lib/byte.pm (@4969..) scope.c (@4970..)
ext/Devel/DProf/DProf.xs (@4973..) malloc.c (@4974..) op.c
pod/perldebug.pod pp_ctl.c (@4975..) Makefile.SH (@4977..)
config_h.SH (@4978..) pod/perlop.pod (@4979..) pod/perlfunc.pod
(@4998..) pod/perldiag.pod (@5001..) pp_sys.c (@5006..)
EXTERN.h doio.c perl.h util.c (@5008..) av.c hv.c pp.c pp_hot.c
utf8.c utf8.h (@5009..) pod/perldelta.pod pod/perlport.pod
(@5015..) MANIFEST (@5016..) sv.c (@5017..) win32/config_H.bc
win32/config_H.gc win32/config_H.vc (@5019..) win32/Makefile
win32/makefile.mk (@5022..) win32/win32.h (@5024..) mg.c toke.c
(@5025..) gv.c perl.c pod/perlvar.pod (@5029..)
pod/perlhist.pod (@5034..) Configure (@5036..) Changes
(@5038..) 'merge in' configure.com (@4773..)
Diffstat (limited to 'op.h')
-rw-r--r-- | op.h | 27 |
1 files changed, 25 insertions, 2 deletions
@@ -1,6 +1,6 @@ /* op.h * - * Copyright (c) 1991-1999, Larry Wall + * Copyright (c) 1991-2000, Larry Wall * * You may distribute under the terms of either the GNU General Public * License or the Artistic License, as specified in the README file. @@ -52,6 +52,20 @@ typedef U32 PADOFFSET; ((op)->op_flags & OPf_WANT) == OPf_WANT_LIST ? G_ARRAY : \ dfl) +/* +=for apidoc Amn|U32|GIMME_V +The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>, +C<G_SCALAR> or C<G_ARRAY> for void, scalar or array context, +respectively. + +=for apidoc Amn|U32|GIMME +A backward-compatible version of C<GIMME_V> which can only return +C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>. +Deprecated. Use C<GIMME_V> instead. + +=cut +*/ + #define GIMME_V OP_GIMME(PL_op, block_gimme()) /* Public flags */ @@ -77,6 +91,7 @@ typedef U32 PADOFFSET; /* On flipflop, we saw ... instead of .. */ /* On UNOPs, saw bare parens, e.g. eof(). */ /* On OP_ENTERSUB || OP_NULL, saw a "do". */ + /* On OP_EXISTS, treat av as av, not avhv. */ /* On OP_(ENTER|LEAVE)EVAL, don't clear $@ */ /* On OP_ENTERITER, loop var is per-thread */ /* On pushre, re is /\s+/ imp. by split " " */ @@ -84,6 +99,7 @@ typedef U32 PADOFFSET; /* old names; don't use in new code, but don't break them, either */ #define OPf_LIST OPf_WANT_LIST #define OPf_KNOW OPf_WANT + #define GIMME \ (PL_op->op_flags & OPf_WANT \ ? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \ @@ -91,6 +107,9 @@ typedef U32 PADOFFSET; : G_SCALAR) \ : dowantarray()) +/* NOTE: OP_NEXTSTATE, OP_DBSTATE, and OP_SETSTATE (i.e. COPs) carry lower + * bits of PL_hints in op_private */ + /* Private for lvalues */ #define OPpLVAL_INTRO 128 /* Lvalue must be localized or lvalue sub */ @@ -136,7 +155,7 @@ typedef U32 PADOFFSET; #define OPpEARLY_CV 32 /* foo() called before sub foo was parsed */ /* OP_?ELEM only */ #define OPpLVAL_DEFER 16 /* Defer creation of array/hash elem */ - /* OP_RV2?V only */ + /* OP_RV2?V, OP_GVSV only */ #define OPpOUR_INTRO 16 /* Defer creation of array/hash elem */ /* for OP_RV2?V, lower bits carry hints (currently only HINT_STRICT_REFS) */ @@ -160,6 +179,9 @@ typedef U32 PADOFFSET; /* Private for OP_DELETE */ #define OPpSLICE 64 /* Operating on a list of keys */ +/* Private for OP_EXISTS */ +#define OPpEXISTS_SUB 64 /* Checking for &sub, not {} or []. */ + /* Private for OP_SORT, OP_PRTF, OP_SPRINTF, OP_FTTEXT, OP_FTBINARY, */ /* string comparisons, and case changers. */ #define OPpLOCALE 64 /* Use locale */ @@ -215,6 +237,7 @@ struct pmop { #define PMdf_USED 0x01 /* pm has been used once already */ #define PMdf_TAINTED 0x02 /* pm compiled from tainted pattern */ +#define PMdf_UTF8 0x04 /* pm compiled from utf8 data */ #define PMf_RETAINT 0x0001 /* taint $1 etc. if target tainted */ #define PMf_ONCE 0x0002 /* use pattern only once per reset */ |