source: trunk/third/perl/intrpvar.h @ 14545

Revision 14545, 15.6 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r14544, which included commits to RCS files with non-trunk default branches.
Line 
1/***********************************************/
2/* Global only to current interpreter instance */
3/***********************************************/
4
5/* Don't forget to re-run embed.pl to propagate changes! */
6
7/* The 'I' prefix is only needed for vars that need appropriate #defines
8 * generated when built with or without MULTIPLICITY.  It is also used
9 * to generate the appropriate export list for win32.
10 *
11 * When building without MULTIPLICITY, these variables will be truly global. */
12
13/* pseudo environmental stuff */
14PERLVAR(Iorigargc,      int)
15PERLVAR(Iorigargv,      char **)
16PERLVAR(Ienvgv,         GV *)
17PERLVAR(Iincgv,         GV *)
18PERLVAR(Ihintgv,        GV *)
19PERLVAR(Iorigfilename,  char *)
20PERLVAR(Idiehook,       SV *)
21PERLVAR(Iwarnhook,      SV *)
22
23/* switches */
24PERLVAR(Iminus_c,       bool)
25PERLVAR(Ipatchlevel,    SV *)
26PERLVAR(Ilocalpatches,  char **)
27PERLVARI(Isplitstr,     char *, " ")
28PERLVAR(Ipreprocess,    bool)
29PERLVAR(Iminus_n,       bool)
30PERLVAR(Iminus_p,       bool)
31PERLVAR(Iminus_l,       bool)
32PERLVAR(Iminus_a,       bool)
33PERLVAR(Iminus_F,       bool)
34PERLVAR(Idoswitches,    bool)
35
36/*
37=for apidoc Amn|bool|PL_dowarn
38
39The C variable which corresponds to Perl's $^W warning variable.
40
41=cut
42*/
43
44PERLVAR(Idowarn,        U8)
45PERLVAR(Iwidesyscalls,  bool)           /* wide system calls */
46PERLVAR(Idoextract,     bool)
47PERLVAR(Isawampersand,  bool)           /* must save all match strings */
48PERLVAR(Iunsafe,        bool)
49PERLVAR(Iinplace,       char *)
50PERLVAR(Ie_script,      SV *)
51PERLVAR(Iperldb,        U32)
52
53/* This value may be set when embedding for full cleanup  */
54/* 0=none, 1=full, 2=full with checks */
55PERLVARI(Iperl_destruct_level,  int,    0)
56
57/* magical thingies */
58PERLVAR(Ibasetime,      Time_t)         /* $^T */
59PERLVAR(Iformfeed,      SV *)           /* $^L */
60
61
62PERLVARI(Imaxsysfd,     I32,    MAXSYSFD)
63                                        /* top fd to pass to subprocesses */
64PERLVAR(Imultiline,     int)            /* $*--do strings hold >1 line? */
65PERLVAR(Istatusvalue,   I32)            /* $? */
66PERLVAR(Iexit_flags,    U8)             /* was exit() unexpected, etc. */
67#ifdef VMS
68PERLVAR(Istatusvalue_vms,U32)
69#endif
70
71/* shortcuts to various I/O objects */
72PERLVAR(Istdingv,       GV *)
73PERLVAR(Istderrgv,      GV *)
74PERLVAR(Idefgv,         GV *)
75PERLVAR(Iargvgv,        GV *)
76PERLVAR(Iargvoutgv,     GV *)
77PERLVAR(Iargvout_stack, AV *)
78
79/* shortcuts to regexp stuff */
80/* this one needs to be moved to thrdvar.h and accessed via
81 * find_threadsv() when USE_THREADS */
82PERLVAR(Ireplgv,        GV *)
83
84/* shortcuts to misc objects */
85PERLVAR(Ierrgv,         GV *)
86
87/* shortcuts to debugging objects */
88PERLVAR(IDBgv,          GV *)
89PERLVAR(IDBline,        GV *)
90
91/*
92=for apidoc Amn|GV *|PL_DBsub
93When Perl is run in debugging mode, with the B<-d> switch, this GV contains
94the SV which holds the name of the sub being debugged.  This is the C
95variable which corresponds to Perl's $DB::sub variable.  See
96C<PL_DBsingle>.
97
98=for apidoc Amn|SV *|PL_DBsingle
99When Perl is run in debugging mode, with the B<-d> switch, this SV is a
100boolean which indicates whether subs are being single-stepped.
101Single-stepping is automatically turned on after every step.  This is the C
102variable which corresponds to Perl's $DB::single variable.  See
103C<PL_DBsub>.
104
105=for apidoc Amn|SV *|PL_DBtrace
106Trace variable used when Perl is run in debugging mode, with the B<-d>
107switch.  This is the C variable which corresponds to Perl's $DB::trace
108variable.  See C<PL_DBsingle>.
109
110=cut
111*/
112
113PERLVAR(IDBsub,         GV *)
114PERLVAR(IDBsingle,      SV *)
115PERLVAR(IDBtrace,       SV *)
116PERLVAR(IDBsignal,      SV *)
117PERLVAR(Ilineary,       AV *)           /* lines of script for debugger */
118PERLVAR(Idbargs,        AV *)           /* args to call listed by caller function */
119
120/* symbol tables */
121PERLVAR(Idebstash,      HV *)           /* symbol table for perldb package */
122PERLVAR(Iglobalstash,   HV *)           /* global keyword overrides imported here */
123PERLVAR(Icurstname,     SV *)           /* name of current package */
124PERLVAR(Ibeginav,       AV *)           /* names of BEGIN subroutines */
125PERLVAR(Iendav,         AV *)           /* names of END subroutines */
126PERLVAR(Icheckav,       AV *)           /* names of CHECK subroutines */
127PERLVAR(Iinitav,        AV *)           /* names of INIT subroutines */
128PERLVAR(Istrtab,        HV *)           /* shared string table */
129PERLVARI(Isub_generation,U32,1)         /* incr to invalidate method cache */
130
131/* memory management */
132PERLVAR(Isv_count,      I32)            /* how many SV* are currently allocated */
133PERLVAR(Isv_objcount,   I32)            /* how many objects are currently allocated */
134PERLVAR(Isv_root,       SV*)            /* storage for SVs belonging to interp */
135PERLVAR(Isv_arenaroot,  SV*)            /* list of areas for garbage collection */
136
137/* funky return mechanisms */
138PERLVAR(Iforkprocess,   int)            /* so do_open |- can return proc# */
139
140/* subprocess state */
141PERLVAR(Ifdpid,         AV *)           /* keep fd-to-pid mappings for my_popen */
142
143/* internal state */
144PERLVAR(Itainting,      bool)           /* doing taint checks */
145PERLVARI(Iop_mask,      char *, NULL)   /* masked operations for safe evals */
146
147/* current interpreter roots */
148PERLVAR(Imain_cv,       CV *)
149PERLVAR(Imain_root,     OP *)
150PERLVAR(Imain_start,    OP *)
151PERLVAR(Ieval_root,     OP *)
152PERLVAR(Ieval_start,    OP *)
153
154/* runtime control stuff */
155PERLVARI(Icurcopdb,     COP *,  NULL)
156PERLVARI(Icopline,      line_t, NOLINE)
157
158/* statics moved here for shared library purposes */
159PERLVAR(Ifilemode,      int)            /* so nextargv() can preserve mode */
160PERLVAR(Ilastfd,        int)            /* what to preserve mode on */
161PERLVAR(Ioldname,       char *)         /* what to preserve mode on */
162PERLVAR(IArgv,          char **)        /* stuff to free from do_aexec, vfork safe */
163PERLVAR(ICmd,           char *)         /* stuff to free from do_aexec, vfork safe */
164PERLVAR(Igensym,        I32)            /* next symbol for getsym() to define */
165PERLVAR(Ipreambled,     bool)
166PERLVAR(Ipreambleav,    AV *)
167PERLVARI(Ilaststatval,  int,    -1)
168PERLVARI(Ilaststype,    I32,    OP_STAT)
169PERLVAR(Imess_sv,       SV *)
170
171/* XXX shouldn't these be per-thread? --GSAR */
172PERLVAR(Iors,           char *)         /* output record separator $\ */
173PERLVAR(Iorslen,        STRLEN)
174PERLVAR(Iofmt,          char *)         /* output format for numbers $# */
175
176/* interpreter atexit processing */
177PERLVARI(Iexitlist,     PerlExitListEntry *, NULL)
178                                        /* list of exit functions */
179PERLVARI(Iexitlistlen,  I32, 0)         /* length of same */
180
181/*
182=for apidoc Amn|HV*|PL_modglobal
183
184C<PL_modglobal> is a general purpose, interpreter global HV for use by
185extensions that need to keep information on a per-interpreter basis.
186In a pinch, it can also be used as a symbol table for extensions
187to share data among each other.  It is a good idea to use keys
188prefixed by the package name of the extension that owns the data.
189
190=cut
191*/
192
193PERLVAR(Imodglobal,     HV *)           /* per-interp module data */
194
195/* these used to be in global before 5.004_68 */
196PERLVARI(Iprofiledata,  U32 *,  NULL)   /* table of ops, counts */
197PERLVARI(Irsfp, PerlIO * VOL,   Nullfp) /* current source file pointer */
198PERLVARI(Irsfp_filters, AV *,   Nullav) /* keeps active source filters */
199
200PERLVAR(Icompiling,     COP)            /* compiling/done executing marker */
201
202PERLVAR(Icompcv,        CV *)           /* currently compiling subroutine */
203PERLVAR(Icomppad,       AV *)           /* storage for lexically scoped temporaries */
204PERLVAR(Icomppad_name,  AV *)           /* variable names for "my" variables */
205PERLVAR(Icomppad_name_fill,     I32)    /* last "introduced" variable offset */
206PERLVAR(Icomppad_name_floor,    I32)    /* start of vars in innermost block */
207
208#ifdef HAVE_INTERP_INTERN
209PERLVAR(Isys_intern,    struct interp_intern)
210                                        /* platform internals */
211#endif
212
213/* more statics moved here */
214PERLVARI(Igeneration,   int,    100)    /* from op.c */
215PERLVAR(IDBcv,          CV *)           /* from perl.c */
216
217PERLVARI(Iin_clean_objs,bool,    FALSE) /* from sv.c */
218PERLVARI(Iin_clean_all, bool,    FALSE) /* from sv.c */
219
220PERLVAR(Ilinestart,     char *)         /* beg. of most recently read line */
221PERLVAR(Ipending_ident, char)           /* pending identifier lookup */
222PERLVAR(Isublex_info,   SUBLEXINFO)     /* from toke.c */
223
224#ifdef USE_THREADS
225PERLVAR(Ithrsv,         SV *)           /* struct perl_thread for main thread */
226PERLVARI(Ithreadnum,    U32,    0)      /* incremented each thread creation */
227PERLVAR(Istrtab_mutex,  perl_mutex)     /* Mutex for string table access */
228#endif /* USE_THREADS */
229
230PERLVAR(Iuid,           Uid_t)          /* current real user id */
231PERLVAR(Ieuid,          Uid_t)          /* current effective user id */
232PERLVAR(Igid,           Gid_t)          /* current real group id */
233PERLVAR(Iegid,          Gid_t)          /* current effective group id */
234PERLVAR(Inomemok,       bool)           /* let malloc context handle nomem */
235PERLVAR(Ian,            U32)            /* malloc sequence number */
236PERLVAR(Icop_seqmax,    U32)            /* statement sequence number */
237PERLVAR(Iop_seqmax,     U16)            /* op sequence number */
238PERLVAR(Ievalseq,       U32)            /* eval sequence number */
239PERLVAR(Iorigenviron,   char **)
240PERLVAR(Iorigalen,      U32)
241PERLVAR(Ipidstatus,     HV *)           /* pid-to-status mappings for waitpid */
242PERLVARI(Imaxo, int,    MAXO)           /* maximum number of ops */
243PERLVAR(Iosname,        char *)         /* operating system */
244PERLVARI(Ish_path,      char *, SH_PATH)/* full path of shell */
245PERLVAR(Isighandlerp,   Sighandler_t)
246
247PERLVAR(Ixiv_arenaroot, XPV*)           /* list of allocated xiv areas */
248PERLVAR(Ixiv_root,      IV *)           /* free xiv list--shared by interpreters */
249PERLVAR(Ixnv_root,      NV *)           /* free xnv list--shared by interpreters */
250PERLVAR(Ixrv_root,      XRV *)          /* free xrv list--shared by interpreters */
251PERLVAR(Ixpv_root,      XPV *)          /* free xpv list--shared by interpreters */
252PERLVAR(Ixpviv_root,    XPVIV *)        /* free xpviv list--shared by interpreters */
253PERLVAR(Ixpvnv_root,    XPVNV *)        /* free xpvnv list--shared by interpreters */
254PERLVAR(Ixpvcv_root,    XPVCV *)        /* free xpvcv list--shared by interpreters */
255PERLVAR(Ixpvav_root,    XPVAV *)        /* free xpvav list--shared by interpreters */
256PERLVAR(Ixpvhv_root,    XPVHV *)        /* free xpvhv list--shared by interpreters */
257PERLVAR(Ixpvmg_root,    XPVMG *)        /* free xpvmg list--shared by interpreters */
258PERLVAR(Ixpvlv_root,    XPVLV *)        /* free xpvlv list--shared by interpreters */
259PERLVAR(Ixpvbm_root,    XPVBM *)        /* free xpvbm list--shared by interpreters */
260PERLVAR(Ihe_root,       HE *)           /* free he list--shared by interpreters */
261PERLVAR(Inice_chunk,    char *)         /* a nice chunk of memory to reuse */
262PERLVAR(Inice_chunk_size,       U32)    /* how nice the chunk of memory is */
263
264PERLVARI(Irunops,       runops_proc_t,  MEMBER_TO_FPTR(RUNOPS_DEFAULT))
265
266PERLVARA(Itokenbuf,256, char)
267
268/*
269=for apidoc Amn|SV|PL_sv_undef
270This is the C<undef> SV.  Always refer to this as C<&PL_sv_undef>.
271
272=for apidoc Amn|SV|PL_sv_no
273This is the C<false> SV.  See C<PL_sv_yes>.  Always refer to this as
274C<&PL_sv_no>.
275
276=for apidoc Amn|SV|PL_sv_yes
277This is the C<true> SV.  See C<PL_sv_no>.  Always refer to this as
278C<&PL_sv_yes>.
279
280=cut
281*/
282
283PERLVAR(Isv_undef,      SV)
284PERLVAR(Isv_no,         SV)
285PERLVAR(Isv_yes,        SV)
286
287#ifdef CSH
288PERLVARI(Icshname,      char *, CSH)
289PERLVAR(Icshlen,        I32)
290#endif
291
292PERLVAR(Ilex_state,     U32)            /* next token is determined */
293PERLVAR(Ilex_defer,     U32)            /* state after determined token */
294PERLVAR(Ilex_expect,    int)            /* expect after determined token */
295PERLVAR(Ilex_brackets,  I32)            /* bracket count */
296PERLVAR(Ilex_formbrack, I32)            /* bracket count at outer format level */
297PERLVAR(Ilex_casemods,  I32)            /* casemod count */
298PERLVAR(Ilex_dojoin,    I32)            /* doing an array interpolation */
299PERLVAR(Ilex_starts,    I32)            /* how many interps done on level */
300PERLVAR(Ilex_stuff,     SV *)           /* runtime pattern from m// or s/// */
301PERLVAR(Ilex_repl,      SV *)           /* runtime replacement from s/// */
302PERLVAR(Ilex_op,        OP *)           /* extra info to pass back on op */
303PERLVAR(Ilex_inpat,     OP *)           /* in pattern $) and $| are special */
304PERLVAR(Ilex_inwhat,    I32)            /* what kind of quoting are we in */
305PERLVAR(Ilex_brackstack,char *)         /* what kind of brackets to pop */
306PERLVAR(Ilex_casestack, char *)         /* what kind of case mods in effect */
307
308/* What we know when we're in LEX_KNOWNEXT state. */
309PERLVARA(Inextval,5,    YYSTYPE)        /* value of next token, if any */
310PERLVARA(Inexttype,5,   I32)            /* type of next token */
311PERLVAR(Inexttoke,      I32)
312
313PERLVAR(Ilinestr,       SV *)
314PERLVAR(Ibufptr,        char *)
315PERLVAR(Ioldbufptr,     char *)
316PERLVAR(Ioldoldbufptr,  char *)
317PERLVAR(Ibufend,        char *)
318PERLVARI(Iexpect,int,   XSTATE)         /* how to interpret ambiguous tokens */
319
320PERLVAR(Imulti_start,   I32)            /* 1st line of multi-line string */
321PERLVAR(Imulti_end,     I32)            /* last line of multi-line string */
322PERLVAR(Imulti_open,    I32)            /* delimiter of said string */
323PERLVAR(Imulti_close,   I32)            /* delimiter of said string */
324
325PERLVAR(Ierror_count,   I32)            /* how many errors so far, max 10 */
326PERLVAR(Isubline,       I32)            /* line this subroutine began on */
327PERLVAR(Isubname,       SV *)           /* name of current subroutine */
328
329PERLVAR(Imin_intro_pending,     I32)    /* start of vars to introduce */
330PERLVAR(Imax_intro_pending,     I32)    /* end of vars to introduce */
331PERLVAR(Ipadix,         I32)            /* max used index in current "register" pad */
332PERLVAR(Ipadix_floor,   I32)            /* how low may inner block reset padix */
333PERLVAR(Ipad_reset_pending,     I32)    /* reset pad on next attempted alloc */
334
335PERLVAR(Ilast_uni,      char *)         /* position of last named-unary op */
336PERLVAR(Ilast_lop,      char *)         /* position of last list operator */
337PERLVAR(Ilast_lop_op,   OPCODE)         /* last list operator */
338PERLVAR(Iin_my,         I32)            /* we're compiling a "my" (or "our") declaration */
339PERLVAR(Iin_my_stash,   HV *)           /* declared class of this "my" declaration */
340#ifdef FCRYPT
341PERLVAR(Icryptseen,     bool)           /* has fast crypt() been initialized? */
342#endif
343
344PERLVAR(Ihints,         U32)            /* pragma-tic compile-time flags */
345
346PERLVAR(Idebug,         VOL U32)        /* flags given to -D switch */
347
348PERLVAR(Iamagic_generation,     long)
349
350#ifdef USE_LOCALE_COLLATE
351PERLVAR(Icollation_ix,  U32)            /* Collation generation index */
352PERLVAR(Icollation_name,char *)         /* Name of current collation */
353PERLVARI(Icollation_standard, bool,     TRUE)
354                                        /* Assume simple collation */
355PERLVAR(Icollxfrm_base, Size_t)         /* Basic overhead in *xfrm() */
356PERLVARI(Icollxfrm_mult,Size_t, 2)      /* Expansion factor in *xfrm() */
357#endif /* USE_LOCALE_COLLATE */
358
359#ifdef USE_LOCALE_NUMERIC
360
361PERLVAR(Inumeric_name,  char *)         /* Name of current numeric locale */
362PERLVARI(Inumeric_standard,     bool,   TRUE)
363                                        /* Assume simple numerics */
364PERLVARI(Inumeric_local,        bool,   TRUE)
365                                        /* Assume local numerics */
366PERLVAR(Inumeric_radix,         char)
367                                        /* The radix character if not '.' */
368
369#endif /* !USE_LOCALE_NUMERIC */
370
371/* utf8 character classes */
372PERLVAR(Iutf8_alnum,    SV *)
373PERLVAR(Iutf8_alnumc,   SV *)
374PERLVAR(Iutf8_ascii,    SV *)
375PERLVAR(Iutf8_alpha,    SV *)
376PERLVAR(Iutf8_space,    SV *)
377PERLVAR(Iutf8_cntrl,    SV *)
378PERLVAR(Iutf8_graph,    SV *)
379PERLVAR(Iutf8_digit,    SV *)
380PERLVAR(Iutf8_upper,    SV *)
381PERLVAR(Iutf8_lower,    SV *)
382PERLVAR(Iutf8_print,    SV *)
383PERLVAR(Iutf8_punct,    SV *)
384PERLVAR(Iutf8_xdigit,   SV *)
385PERLVAR(Iutf8_mark,     SV *)
386PERLVAR(Iutf8_toupper,  SV *)
387PERLVAR(Iutf8_totitle,  SV *)
388PERLVAR(Iutf8_tolower,  SV *)
389PERLVAR(Ilast_swash_hv, HV *)
390PERLVAR(Ilast_swash_klen,       U32)
391PERLVARA(Ilast_swash_key,10,    U8)
392PERLVAR(Ilast_swash_tmps,       U8 *)
393PERLVAR(Ilast_swash_slen,       STRLEN)
394
395/* perly.c globals */
396PERLVAR(Iyydebug,       int)
397PERLVAR(Iyynerrs,       int)
398PERLVAR(Iyyerrflag,     int)
399PERLVAR(Iyychar,        int)
400PERLVAR(Iyyval,         YYSTYPE)
401PERLVAR(Iyylval,        YYSTYPE)
402
403PERLVAR(Iglob_index,    int)
404PERLVAR(Isrand_called,  bool)
405PERLVARA(Iuudmap,256,   char)
406PERLVAR(Ibitcount,      char *)
407
408#ifdef USE_THREADS
409PERLVAR(Isv_mutex,      perl_mutex)     /* Mutex for allocating SVs in sv.c */
410PERLVAR(Ieval_mutex,    perl_mutex)     /* Mutex for doeval */
411PERLVAR(Ieval_cond,     perl_cond)      /* Condition variable for doeval */
412PERLVAR(Ieval_owner,    struct perl_thread *)
413                                        /* Owner thread for doeval */
414PERLVAR(Inthreads,      int)            /* Number of threads currently */
415PERLVAR(Ithreads_mutex, perl_mutex)     /* Mutex for nthreads and thread list */
416PERLVAR(Inthreads_cond, perl_cond)      /* Condition variable for nthreads */
417PERLVAR(Isvref_mutex,   perl_mutex)     /* Mutex for SvREFCNT_{inc,dec} */
418PERLVARI(Ithreadsv_names,char *,        THREADSV_NAMES)
419#ifdef FAKE_THREADS
420PERLVAR(Icurthr,        struct perl_thread *)
421                                        /* Currently executing (fake) thread */
422#endif
423
424PERLVAR(Icred_mutex,    perl_mutex)     /* altered credentials in effect */
425
426#endif /* USE_THREADS */
427
428PERLVAR(Ipsig_ptr, SV**)
429PERLVAR(Ipsig_name, SV**)
430
431#if defined(PERL_IMPLICIT_SYS)
432PERLVAR(IMem,           struct IPerlMem*)
433PERLVAR(IMemShared,     struct IPerlMem*)
434PERLVAR(IMemParse,      struct IPerlMem*)
435PERLVAR(IEnv,           struct IPerlEnv*)
436PERLVAR(IStdIO,         struct IPerlStdIO*)
437PERLVAR(ILIO,           struct IPerlLIO*)
438PERLVAR(IDir,           struct IPerlDir*)
439PERLVAR(ISock,          struct IPerlSock*)
440PERLVAR(IProc,          struct IPerlProc*)
441#endif
442
443#if defined(USE_ITHREADS)
444PERLVAR(Iptr_table,     PTR_TBL_t*)
445#endif
Note: See TracBrowser for help on using the repository browser.