a "replacement" for awk and sed
[perl.git] / stab.h
1 /* $Header: stab.h,v 1.0 87/12/18 13:06:18 root Exp $
2  *
3  * $Log:        stab.h,v $
4  * Revision 1.0  87/12/18  13:06:18  root
5  * Initial revision
6  * 
7  */
8
9 struct stab {
10     struct stab *stab_next;
11     char        *stab_name;
12     STR         *stab_val;
13     struct stio *stab_io;
14     FCMD        *stab_form;
15     ARRAY       *stab_array;
16     HASH        *stab_hash;
17     CMD         *stab_sub;
18     char        stab_flags;
19 };
20
21 #define SF_VMAGIC 1             /* call routine to dereference STR val */
22
23 struct stio {
24     FILE        *fp;
25     long        lines;
26     long        page;
27     long        page_len;
28     long        lines_left;
29     char        *top_name;
30     STAB        *top_stab;
31     char        *fmt_name;
32     STAB        *fmt_stab;
33     char        type;
34     char        flags;
35 };
36
37 #define IOF_ARGV 1      /* this fp iterates over ARGV */
38 #define IOF_START 2     /* check for null ARGV and substitute '-' */
39 #define IOF_FLUSH 4     /* this fp wants a flush after write op */
40
41 #define Nullstab Null(STAB*)
42
43 #define STAB_STR(s) (tmpstab = (s), tmpstab->stab_flags & SF_VMAGIC ? stab_str(tmpstab) : tmpstab->stab_val)
44 #define STAB_GET(s) (tmpstab = (s), str_get(tmpstab->stab_flags & SF_VMAGIC ? stab_str(tmpstab) : tmpstab->stab_val))
45 #define STAB_GNUM(s) (tmpstab = (s), str_gnum(tmpstab->stab_flags & SF_VMAGIC ? stab_str(tmpstab) : tmpstab->stab_val))
46
47 EXT STAB *tmpstab;
48
49 EXT STAB *stab_index[128];
50
51 EXT char *envname;      /* place for ENV name being assigned--gross cheat */
52 EXT char *signame;      /* place for SIG name being assigned--gross cheat */
53
54 EXT int statusvalue;
55 EXT int subsvalue;
56
57 STAB *aadd();
58 STAB *hadd();