This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
c1a7b36ff322d3f09e29e89df2a08f7b96626b6b
[perl5.git] / intrpvar.h
1 /***********************************************/
2 /* Global only to current interpreter instance */
3 /***********************************************/
4
5 /* pseudo environmental stuff */
6 PERLVAR(Iorigargc,      int)            
7 PERLVAR(Iorigargv,      char **)                
8 PERLVAR(Ienvgv,         GV *)           
9 PERLVAR(Isiggv,         GV *)           
10 PERLVAR(Iincgv,         GV *)           
11 PERLVAR(Iorigfilename,  char *)         
12 PERLVAR(Idiehook,       SV *)           
13 PERLVAR(Iwarnhook,      SV *)           
14 PERLVAR(Iparsehook,     SV *)           
15 PERLVAR(Icddir,         char *)         /* switches */
16 PERLVAR(Iminus_c,       bool)           
17 PERLVAR(Ipatchlevel[10],char)           
18 PERLVAR(Ilocalpatches,  char **)                
19 PERLVARI(Isplitstr,     char *, " ")    
20 PERLVAR(Ipreprocess,    bool)           
21 PERLVAR(Iminus_n,       bool)           
22 PERLVAR(Iminus_p,       bool)           
23 PERLVAR(Iminus_l,       bool)           
24 PERLVAR(Iminus_a,       bool)           
25 PERLVAR(Iminus_F,       bool)           
26 PERLVAR(Idoswitches,    bool)           
27 PERLVAR(Idowarn,        bool)           
28 PERLVAR(Idoextract,     bool)           
29 PERLVAR(Isawampersand,  bool)           /* must save all match strings */
30 PERLVAR(Isawstudy,      bool)           /* do fbm_instr on all strings */
31 PERLVAR(Isawvec,        bool)           
32 PERLVAR(Iunsafe,        bool)           
33 PERLVAR(Iinplace,       char *)         
34 PERLVAR(Ie_tmpname,     char *)         
35 PERLVAR(Ie_fp,          PerlIO *)               
36 PERLVAR(Iperldb,        U32)            
37
38 /* This value may be raised by extensions for testing purposes */
39 /* 0=none, 1=full, 2=full with checks */
40 PERLVARI(Iperl_destruct_level,  int,    0)      
41
42 /* magical thingies */
43 PERLVAR(Ibasetime,      Time_t)         /* $^T */
44 PERLVAR(Iformfeed,      SV *)           /* $^L */
45
46
47 PERLVARI(Imaxsysfd,     I32,    MAXSYSFD)       /* top fd to pass to subprocesses */
48 PERLVAR(Imultiline,     int)            /* $*--do strings hold >1 line? */
49 PERLVAR(Istatusvalue,   I32)            /* $? */
50 #ifdef VMS
51 PERLVAR(Istatusvalue_vms,       U32)            
52 #endif
53
54 PERLVAR(Istatcache,     Stat_t) /* _ */
55 PERLVAR(Istatgv,        GV *)           
56 PERLVARI(Istatname,     SV *,   Nullsv) 
57
58 /* shortcuts to various I/O objects */
59 PERLVAR(Istdingv,       GV *)           
60 PERLVAR(Idefgv,         GV *)           
61 PERLVAR(Iargvgv,        GV *)           
62 PERLVAR(Iargvoutgv,     GV *)           
63
64 /* shortcuts to regexp stuff */
65 PERLVAR(Ileftgv,        GV *)           
66 PERLVAR(Iampergv,       GV *)           
67 PERLVAR(Irightgv,       GV *)           
68 PERLVAR(Iscreamfirst,   I32 *)          
69 PERLVAR(Iscreamnext,    I32 *)          
70 PERLVARI(Imaxscream,    I32,    -1)     
71 PERLVAR(Ilastscream,    SV *)           
72
73 /* shortcuts to misc objects */
74 PERLVAR(Ierrgv,         GV *)           
75
76 /* shortcuts to debugging objects */
77 PERLVAR(IDBgv,          GV *)           
78 PERLVAR(IDBline,        GV *)           
79 PERLVAR(IDBsub,         GV *)           
80 PERLVAR(IDBsingle,      SV *)           
81 PERLVAR(IDBtrace,       SV *)           
82 PERLVAR(IDBsignal,      SV *)           
83 PERLVAR(Ilineary,       AV *)           /* lines of script for debugger */
84 PERLVAR(Idbargs,        AV *)           /* args to call listed by caller function */
85
86 /* symbol tables */
87 PERLVAR(Idebstash,      HV *)           /* symbol table for perldb package */
88 PERLVAR(Iglobalstash,   HV *)           /* global keyword overrides imported here */
89 PERLVAR(Icurstname,     SV *)           /* name of current package */
90 PERLVAR(Ibeginav,       AV *)           /* names of BEGIN subroutines */
91 PERLVAR(Iendav,         AV *)           /* names of END subroutines */
92 PERLVAR(Iinitav,        AV *)           /* names of INIT subroutines */
93 PERLVAR(Istrtab,        HV *)           /* shared string table */
94
95 /* memory management */
96 PERLVAR(Isv_count,      I32)            /* how many SV* are currently allocated */
97 PERLVAR(Isv_objcount,   I32)            /* how many objects are currently allocated */
98 PERLVAR(Isv_root,       SV*)            /* storage for SVs belonging to interp */
99 PERLVAR(Isv_arenaroot,  SV*)            /* list of areas for garbage collection */
100
101 /* funky return mechanisms */
102 PERLVAR(Ilastspbase,    I32)            
103 PERLVAR(Ilastsize,      I32)            
104 PERLVAR(Iforkprocess,   int)            /* so do_open |- can return proc# */
105
106 /* subprocess state */
107 PERLVAR(Ifdpid,         AV *)           /* keep fd-to-pid mappings for my_popen */
108
109 /* internal state */
110 PERLVAR(Itainting,      bool)           /* doing taint checks */
111 PERLVARI(Iop_mask,      char *, NULL)   /* masked operations for safe evals */
112
113 /* trace state */
114 PERLVAR(Idlevel,        I32)            
115 PERLVARI(Idlmax,        I32,    128)    
116 PERLVAR(Idebname,       char *)         
117 PERLVAR(Idebdelim,      char *)         
118
119 /* current interpreter roots */
120 PERLVAR(Imain_cv,       CV *)           
121 PERLVAR(Imain_root,     OP *)           
122 PERLVAR(Imain_start,    OP *)           
123 PERLVAR(Ieval_root,     OP *)           
124 PERLVAR(Ieval_start,    OP *)           
125
126 /* runtime control stuff */
127 PERLVARI(Icurcopdb,     COP *,  NULL)   
128 PERLVARI(Icopline,      line_t, NOLINE) 
129
130 /* statics moved here for shared library purposes */
131 PERLVAR(Istrchop,       SV)             /* return value from chop */
132 PERLVAR(Ifilemode,      int)            /* so nextargv() can preserve mode */
133 PERLVAR(Ilastfd,        int)            /* what to preserve mode on */
134 PERLVAR(Ioldname,       char *)         /* what to preserve mode on */
135 PERLVAR(IArgv,          char **)        /* stuff to free from do_aexec, vfork safe */
136 PERLVAR(ICmd,           char *)         /* stuff to free from do_aexec, vfork safe */
137 PERLVAR(Isortcop,       OP *)           /* user defined sort routine */
138 PERLVAR(Isortstash,     HV *)           /* which is in some package or other */
139 PERLVAR(Ifirstgv,       GV *)           /* $a */
140 PERLVAR(Isecondgv,      GV *)           /* $b */
141 PERLVAR(Imystrk,        SV *)           /* temp key string for do_each() */
142 PERLVAR(Idumplvl,       I32)            /* indentation level on syntax tree dump */
143 PERLVAR(Ioldlastpm,     PMOP *)         /* for saving regexp context during debugger */
144 PERLVAR(Igensym,        I32)            /* next symbol for getsym() to define */
145 PERLVAR(Ipreambled,     bool)           
146 PERLVAR(Ipreambleav,    AV *)           
147 PERLVARI(Ilaststatval,  int,    -1)     
148 PERLVARI(Ilaststype,    I32,    OP_STAT)        
149 PERLVAR(Imess_sv,       SV *)           
150
151 PERLVAR(Iors,           char *)         /* $\ */
152 PERLVAR(Iorslen,        STRLEN)         
153 PERLVAR(Iofmt,          char *)         /* $# */
154
155 /* interpreter atexit processing */
156 PERLVARI(Iexitlist,     PerlExitListEntry *, NULL)      /* list of exit functions */
157 PERLVARI(Iexitlistlen,  I32, 0)                         /* length of same */
158 PERLVAR(Imodglobal,     HV *)                           /* per-interp module data */
159
160 #ifdef HAVE_INTERP_INTERN
161 PERLVAR(Isys_intern,    struct interp_intern)           /* platform internals */
162 #endif
163
164 #ifdef USE_THREADS
165 PERLVAR(Ithrsv,         SV *)           /* holds struct perl_thread for main thread */
166 PERLVARI(Ithreadnum,    U32,    0)      /* incremented each thread creation */
167 #endif /* USE_THREADS */