1 /* $Header: stab.h,v 3.0.1.1 89/12/21 20:19:53 lwall Locked $
3 * Copyright (c) 1989, Larry Wall
5 * You may distribute under the terms of the GNU General Public License
6 * as specified in the README file that comes with the perl 3.0 kit.
9 * Revision 3.0.1.1 89/12/21 20:19:53 lwall
10 * patch7: in stab.h, added some CRIPPLED_CC support for Microport
12 * Revision 3.0 89/10/18 15:23:30 lwall
19 STR *stbp_val; /* scalar value */
20 struct stio *stbp_io; /* filehandle value */
21 FCMD *stbp_form; /* format value */
22 ARRAY *stbp_array; /* array value */
23 HASH *stbp_hash; /* associative array value */
24 SUBR *stbp_sub; /* subroutine value */
25 int stbp_lastexpr; /* used by nothing_in_common() */
26 line_t stbp_line; /* line first declared at (for -w) */
30 #if defined(CRIPPLED_CC) && (defined(iAPX286) || defined(M_I286) || defined(I80286))
34 #define stab_magic(stab) (((STBP*)(stab->str_ptr))->stbp_magic)
35 #define stab_val(stab) (((STBP*)(stab->str_ptr))->stbp_val)
36 #define stab_io(stab) (((STBP*)(stab->str_ptr))->stbp_io)
37 #define stab_form(stab) (((STBP*)(stab->str_ptr))->stbp_form)
38 #define stab_xarray(stab) (((STBP*)(stab->str_ptr))->stbp_array)
39 #ifdef MICROPORT /* Microport 2.4 hack */
42 #define stab_array(stab) (((STBP*)(stab->str_ptr))->stbp_array ? \
43 ((STBP*)(stab->str_ptr))->stbp_array : \
44 ((STBP*)(aadd(stab)->str_ptr))->stbp_array)
46 #define stab_xhash(stab) (((STBP*)(stab->str_ptr))->stbp_hash)
47 #ifdef MICROPORT /* Microport 2.4 hack */
50 #define stab_hash(stab) (((STBP*)(stab->str_ptr))->stbp_hash ? \
51 ((STBP*)(stab->str_ptr))->stbp_hash : \
52 ((STBP*)(hadd(stab)->str_ptr))->stbp_hash)
53 #endif /* Microport 2.4 hack */
54 #define stab_sub(stab) (((STBP*)(stab->str_ptr))->stbp_sub)
55 #define stab_lastexpr(stab) (((STBP*)(stab->str_ptr))->stbp_lastexpr)
56 #define stab_line(stab) (((STBP*)(stab->str_ptr))->stbp_line)
57 #define stab_flags(stab) (((STBP*)(stab->str_ptr))->stbp_flags)
58 #define stab_name(stab) (stab->str_magic->str_ptr)
60 #define SF_VMAGIC 1 /* call routine to dereference STR val */
61 #define SF_MULTI 2 /* seen more than once */
64 FILE *ifp; /* ifp and ofp are normally the same */
65 FILE *ofp; /* but sockets need separate streams */
66 #if defined(I_DIRENT) || defined(I_SYSDIR)
67 DIR *dirp; /* for opendir, readdir, etc */
71 long page_len; /* $= */
72 long lines_left; /* $- */
73 char *top_name; /* $^ */
74 STAB *top_stab; /* $^ */
75 char *fmt_name; /* $~ */
76 STAB *fmt_stab; /* $~ */
77 short subprocess; /* -| or |- */
82 #define IOF_ARGV 1 /* this fp iterates over ARGV */
83 #define IOF_START 2 /* check for null ARGV and substitute '-' */
84 #define IOF_FLUSH 4 /* this fp wants a flush after write op */
89 long depth; /* >= 2 indicates recursive call */
93 #define Nullstab Null(STAB*)
95 #define STAB_STR(s) (tmpstab = (s), stab_flags(tmpstab) & SF_VMAGIC ? stab_str(stab_val(tmpstab)->str_magic) : stab_val(tmpstab))
96 #define STAB_GET(s) (tmpstab = (s), str_get(stab_flags(tmpstab) & SF_VMAGIC ? stab_str(tmpstab->str_magic) : stab_val(tmpstab)))
97 #define STAB_GNUM(s) (tmpstab = (s), str_gnum(stab_flags(tmpstab) & SF_VMAGIC ? stab_str(tmpstab->str_magic) : stab_val(tmpstab)))
101 EXT STAB *stab_index[128];
103 EXT unsigned short statusvalue;
105 EXT int delaymagic INIT(0);