home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / thrdvar.h < prev    next >
C/C++ Source or Header  |  2003-11-07  |  10KB  |  279 lines

  1. /*    thdrvar.h
  2.  *
  3.  *    Copyright (C) 1999, 2000, 2001, 2002, by Larry Wall and others
  4.  *
  5.  *    You may distribute under the terms of either the GNU General Public
  6.  *    License or the Artistic License, as specified in the README file.
  7.  *
  8.  */
  9.  
  10. /*
  11. =head1 Global Variables
  12. */
  13.  
  14. /***********************************************/
  15. /* Global only to current thread               */
  16. /***********************************************/
  17.  
  18. /* Don't forget to re-run embed.pl to propagate changes! */
  19.  
  20. /* The 'T' prefix is only needed for vars that need appropriate #defines
  21.  * generated when built with or without USE_5005THREADS.  It is also used
  22.  * to generate the appropriate export list for win32.
  23.  *
  24.  * When building without USE_5005THREADS, these variables will be truly global.
  25.  * When building without USE_5005THREADS but with MULTIPLICITY, these variables
  26.  * will be global per-interpreter. */
  27.  
  28. /* Important ones in the first cache line (if alignment is done right) */
  29.  
  30. #ifdef USE_5005THREADS
  31. PERLVAR(interp,        PerlInterpreter*)    /* thread owner */
  32. #endif
  33.  
  34. PERLVAR(Tstack_sp,    SV **)        /* top of the stack */
  35. #ifdef OP_IN_REGISTER
  36. PERLVAR(Topsave,    OP *)
  37. #else
  38. PERLVAR(Top,        OP *)        /* currently executing op */
  39. #endif
  40. PERLVAR(Tcurpad,    SV **)        /* active pad (lexicals+tmps) */
  41.  
  42. PERLVAR(Tstack_base,    SV **)
  43. PERLVAR(Tstack_max,    SV **)
  44.  
  45. PERLVAR(Tscopestack,    I32 *)        /* scopes we've ENTERed */
  46. PERLVAR(Tscopestack_ix,    I32)
  47. PERLVAR(Tscopestack_max,I32)
  48.  
  49. PERLVAR(Tsavestack,    ANY *)        /* items that need to be restored
  50.                        when LEAVEing scopes we've ENTERed */
  51. PERLVAR(Tsavestack_ix,    I32)
  52. PERLVAR(Tsavestack_max,    I32)
  53.  
  54. PERLVAR(Ttmps_stack,    SV **)        /* mortals we've made */
  55. PERLVARI(Ttmps_ix,    I32,    -1)
  56. PERLVARI(Ttmps_floor,    I32,    -1)
  57. PERLVAR(Ttmps_max,    I32)
  58.  
  59. PERLVAR(Tmarkstack,    I32 *)        /* stack_sp locations we're remembering */
  60. PERLVAR(Tmarkstack_ptr,    I32 *)
  61. PERLVAR(Tmarkstack_max,    I32 *)
  62.  
  63. PERLVAR(Tretstack,    OP **)        /* OPs we have postponed executing */
  64. PERLVAR(Tretstack_ix,    I32)
  65. PERLVAR(Tretstack_max,    I32)
  66.  
  67. PERLVAR(TSv,        SV *)        /* used to hold temporary values */
  68. PERLVAR(TXpv,        XPV *)        /* used to hold temporary values */
  69.  
  70. /*
  71. =for apidoc Amn|STRLEN|PL_na
  72.  
  73. A convenience variable which is typically used with C<SvPV> when one
  74. doesn't care about the length of the string.  It is usually more efficient
  75. to either declare a local variable and use that instead or to use the
  76. C<SvPV_nolen> macro.
  77.  
  78. =cut
  79. */
  80.  
  81. PERLVAR(Tna,        STRLEN)        /* for use in SvPV when length is
  82.                        Not Applicable */
  83.  
  84. /* stat stuff */
  85. PERLVAR(Tstatbuf,    Stat_t)
  86. PERLVAR(Tstatcache,    Stat_t)        /* _ */
  87. PERLVAR(Tstatgv,    GV *)
  88. PERLVARI(Tstatname,    SV *,    Nullsv)
  89.  
  90. #ifdef HAS_TIMES
  91. PERLVAR(Ttimesbuf,    struct tms)
  92. #endif
  93.  
  94. /* Fields used by magic variables such as $@, $/ and so on */
  95. PERLVAR(Ttainted,    bool)        /* using variables controlled by $< */
  96. PERLVAR(Tcurpm,        PMOP *)        /* what to do \ interps in REs from */
  97. PERLVAR(Tnrs,        SV *)        /* placeholder: unused since 5.8.0 (5.7.2 patch #12027 for bug ID 20010815.012) */
  98.  
  99. /*
  100. =for apidoc mn|SV*|PL_rs
  101.  
  102. The input record separator - C<$/> in Perl space.
  103.  
  104. =for apidoc mn|GV*|PL_last_in_gv
  105.  
  106. The GV which was last used for a filehandle input operation. (C<< <FH> >>)
  107.  
  108. =for apidoc mn|SV*|PL_ofs_sv
  109.  
  110. The output field separator - C<$,> in Perl space.
  111.  
  112. =cut
  113. */
  114.  
  115. PERLVAR(Trs,        SV *)        /* input record separator $/ */
  116. PERLVAR(Tlast_in_gv,    GV *)        /* GV used in last <FH> */
  117. PERLVAR(Tofs_sv,    SV *)        /* output field separator $, */
  118. PERLVAR(Tdefoutgv,    GV *)        /* default FH for output */
  119. PERLVARI(Tchopset,    char *,    " \n-")    /* $: */
  120. PERLVAR(Tformtarget,    SV *)
  121. PERLVAR(Tbodytarget,    SV *)
  122. PERLVAR(Ttoptarget,    SV *)
  123.  
  124. /* Stashes */
  125. PERLVAR(Tdefstash,    HV *)        /* main symbol table */
  126. PERLVAR(Tcurstash,    HV *)        /* symbol table for current package */
  127.  
  128. PERLVAR(Trestartop,    OP *)        /* propagating an error from croak? */
  129. PERLVARI(Tcurcop,    COP * VOL,    &PL_compiling)
  130. PERLVAR(Tin_eval,    VOL int)    /* trap "fatal" errors? */
  131. PERLVAR(Tdelaymagic,    int)        /* ($<,$>) = ... */
  132. PERLVARI(Tdirty,    bool, FALSE)    /* in the middle of tearing things down? */
  133. PERLVAR(Tlocalizing,    int)        /* are we processing a local() list? */
  134.  
  135. PERLVAR(Tcurstack,    AV *)        /* THE STACK */
  136. PERLVAR(Tcurstackinfo,    PERL_SI *)    /* current stack + context */
  137. PERLVAR(Tmainstack,    AV *)        /* the stack when nothing funny is happening */
  138.  
  139. PERLVAR(Ttop_env,    JMPENV *)    /* ptr. to current sigjmp() environment */
  140. PERLVAR(Tstart_env,    JMPENV)        /* empty startup sigjmp() environment */
  141. #ifdef PERL_FLEXIBLE_EXCEPTIONS
  142. PERLVARI(Tprotect,    protect_proc_t,    MEMBER_TO_FPTR(Perl_default_protect))
  143. #endif
  144. PERLVARI(Terrors,    SV *, Nullsv)    /* outstanding queued errors */
  145.  
  146. /* statics "owned" by various functions */
  147. PERLVAR(Tav_fetch_sv,    SV *)        /* unused as of change #19268 */
  148. PERLVAR(Thv_fetch_sv,    SV *)        /* unused as of change #19268 */
  149. PERLVAR(Thv_fetch_ent_mh, HE*)        /* owned by hv_fetch_ent() */
  150.  
  151. PERLVAR(Tmodcount,    I32)        /* how much mod()ification in assignment? */
  152.  
  153. PERLVAR(Tlastgotoprobe,    OP*)        /* from pp_ctl.c */
  154. PERLVARI(Tdumpindent,    I32, 4)        /* # of blanks per dump indentation level */
  155.  
  156. /* sort stuff */
  157. PERLVAR(Tsortcop,    OP *)        /* user defined sort routine */
  158. PERLVAR(Tsortstash,    HV *)        /* which is in some package or other */
  159. PERLVAR(Tfirstgv,    GV *)        /* $a */
  160. PERLVAR(Tsecondgv,    GV *)        /* $b */
  161. PERLVAR(Tsortcxix,    I32)        /* from pp_ctl.c */
  162.  
  163. /* float buffer */
  164. PERLVAR(Tefloatbuf,    char*)
  165. PERLVAR(Tefloatsize,    STRLEN)
  166.  
  167. /* regex stuff */
  168.  
  169. PERLVAR(Tscreamfirst,    I32 *)
  170. PERLVAR(Tscreamnext,    I32 *)
  171. PERLVARI(Tmaxscream,    I32,    -1)
  172. PERLVAR(Tlastscream,    SV *)
  173.  
  174. PERLVAR(Tregdummy,    regnode)    /* from regcomp.c */
  175. PERLVAR(Tregcomp_parse,    char*)        /* Input-scan pointer. */
  176. PERLVAR(Tregxend,    char*)        /* End of input for compile */
  177. PERLVAR(Tregcode,    regnode*)    /* Code-emit pointer; ®dummy = don't */
  178. PERLVAR(Tregnaughty,    I32)        /* How bad is this pattern? */
  179. PERLVAR(Tregsawback,    I32)        /* Did we see \1, ...? */
  180. PERLVAR(Tregprecomp,    char *)        /* uncompiled string. */
  181. PERLVAR(Tregnpar,    I32)        /* () count. */
  182. PERLVAR(Tregsize,    I32)        /* Code size. */
  183. PERLVAR(Tregflags,    U32)        /* are we folding, multilining? */
  184. PERLVAR(Tregseen,    U32)        /* from regcomp.c */
  185. PERLVAR(Tseen_zerolen,    I32)        /* from regcomp.c */
  186. PERLVAR(Tseen_evals,    I32)        /* from regcomp.c */
  187. PERLVAR(Tregcomp_rx,    regexp *)    /* from regcomp.c */
  188. PERLVAR(Textralen,    I32)        /* from regcomp.c */
  189. PERLVAR(Tcolorset,    int)        /* from regcomp.c */
  190. PERLVARA(Tcolors,6,    char *)        /* from regcomp.c */
  191. PERLVAR(Treg_whilem_seen, I32)        /* number of WHILEM in this expr */
  192. PERLVAR(Treginput,    char *)        /* String-input pointer. */
  193. PERLVAR(Tregbol,    char *)        /* Beginning of input, for ^ check. */
  194. PERLVAR(Tregeol,    char *)        /* End of input, for $ check. */
  195. PERLVAR(Tregstartp,    I32 *)        /* Pointer to startp array. */
  196. PERLVAR(Tregendp,    I32 *)        /* Ditto for endp. */
  197. PERLVAR(Treglastparen,    U32 *)        /* Similarly for lastparen. */
  198. PERLVAR(Treglastcloseparen, U32 *)    /* Similarly for lastcloseparen. */
  199. PERLVAR(Tregtill,    char *)        /* How far we are required to go. */
  200. PERLVAR(Tregcompat1,    char)        /* used to be regprev1 */
  201. PERLVAR(Treg_start_tmp,    char **)    /* from regexec.c */
  202. PERLVAR(Treg_start_tmpl,U32)        /* from regexec.c */
  203. PERLVAR(Tregdata,    struct reg_data *)
  204.                     /* from regexec.c renamed was data */
  205. PERLVAR(Tbostr,        char *)        /* from regexec.c */
  206. PERLVAR(Treg_flags,    U32)        /* from regexec.c */
  207. PERLVAR(Treg_eval_set,    I32)        /* from regexec.c */
  208. PERLVAR(Tregnarrate,    I32)        /* from regexec.c */
  209. PERLVAR(Tregprogram,    regnode *)    /* from regexec.c */
  210. PERLVARI(Tregindent,    int,        0)    /* from regexec.c */
  211. PERLVAR(Tregcc,        CURCUR *)    /* from regexec.c */
  212. PERLVAR(Treg_call_cc,    struct re_cc_state *)    /* from regexec.c */
  213. PERLVAR(Treg_re,    regexp *)    /* from regexec.c */
  214. PERLVAR(Treg_ganch,    char *)        /* position of \G */
  215. PERLVAR(Treg_sv,    SV *)        /* what we match against */
  216. PERLVAR(Treg_magic,    MAGIC *)    /* pos-magic of what we match */
  217. PERLVAR(Treg_oldpos,    I32)        /* old pos of what we match */
  218. PERLVARI(Treg_oldcurpm,    PMOP*, NULL)    /* curpm before match */
  219. PERLVARI(Treg_curpm,    PMOP*, NULL)    /* curpm during match */
  220. PERLVAR(Treg_oldsaved,    char*)        /* old saved substr during match */
  221. PERLVAR(Treg_oldsavedlen, STRLEN)    /* old length of saved substr during match */
  222. PERLVAR(Treg_maxiter,    I32)        /* max wait until caching pos */
  223. PERLVAR(Treg_leftiter,    I32)        /* wait until caching pos */
  224. PERLVARI(Treg_poscache, char *, Nullch)    /* cache of pos of WHILEM */
  225. PERLVAR(Treg_poscache_size, STRLEN)    /* size of pos cache of WHILEM */
  226.  
  227. PERLVARI(Tpeepp,    peep_t, MEMBER_TO_FPTR(Perl_peep))
  228.                     /* Pointer to peephole optimizer */
  229. PERLVARI(Tregcompp,    regcomp_t, MEMBER_TO_FPTR(Perl_pregcomp))
  230.                     /* Pointer to REx compiler */
  231. PERLVARI(Tregexecp,    regexec_t, MEMBER_TO_FPTR(Perl_regexec_flags))
  232.                     /* Pointer to REx executer */
  233. PERLVARI(Tregint_start,    re_intuit_start_t, MEMBER_TO_FPTR(Perl_re_intuit_start))
  234.                     /* Pointer to optimized REx executer */
  235. PERLVARI(Tregint_string,re_intuit_string_t, MEMBER_TO_FPTR(Perl_re_intuit_string))
  236.                     /* Pointer to optimized REx string */
  237. PERLVARI(Tregfree,    regfree_t, MEMBER_TO_FPTR(Perl_pregfree))
  238.                     /* Pointer to REx free()er */
  239.  
  240. PERLVARI(Treginterp_cnt,int,        0)    /* Whether `Regexp'
  241.                            was interpolated. */
  242. PERLVARI(Treg_starttry,    char *,        0)    /* -Dr: where regtry was called. */
  243. PERLVARI(Twatchaddr,    char **,    0)
  244. PERLVAR(Twatchok,    char *)
  245.  
  246. /* Note that the variables below are all explicitly referenced in the code
  247.  * as thr->whatever and therefore don't need the 'T' prefix. */
  248.  
  249. #ifdef USE_5005THREADS
  250.  
  251. PERLVAR(oursv,        SV *)
  252. PERLVAR(cvcache,    HV *)
  253. PERLVAR(self,        perl_os_thread)    /* Underlying thread object */
  254. PERLVAR(flags,        U32)
  255. PERLVAR(threadsv,    AV *)        /* Per-thread SVs ($_, $@ etc.) */
  256. PERLVAR(threadsvp,    SV **)        /* AvARRAY(threadsv) */
  257. PERLVAR(specific,    AV *)        /* Thread-specific user data */
  258. PERLVAR(errsv,        SV *)        /* Backing SV for $@ */
  259. PERLVAR(mutex,        perl_mutex)    /* For the fields others can change */
  260. PERLVAR(tid,        U32)
  261. PERLVAR(prev,        struct perl_thread *)
  262. PERLVAR(next,        struct perl_thread *)
  263.                     /* Circular linked list of threads */
  264.  
  265. #ifdef HAVE_THREAD_INTERN
  266. PERLVAR(i,        struct thread_intern)
  267.                     /* Platform-dependent internals */
  268. #endif
  269.  
  270. PERLVAR(trailing_nul,    char)        /* For the sake of thrsv and oursv */
  271. PERLVAR(thr_done,    bool)        /* True when the thread has finished */
  272.  
  273. #endif /* USE_5005THREADS */
  274.  
  275. PERLVAR(Treg_match_utf8,    bool)        /* was what we matched against utf8 */
  276.  
  277. PERLVAR(Tcomppad,    AV *)        /* storage for lexically scoped temporaries */
  278.  
  279.