Annotation of researchv9/jtools/src/pi/symbol.h, revision 1.1.1.1

1.1       root        1: #ifndef SYMBOL_H
                      2: #define SYMBOL_H
                      3: #ifndef UNIV_H
                      4: #include "univ.h"
                      5: #endif
                      6: 
                      7: #include "dtype.pub"
                      8: 
                      9: class Stmt; class SrcText;
                     10: 
                     11: struct Range {
                     12:        long    lo;
                     13:        long    hi;
                     14: };
                     15: 
                     16: class Symbol : public PadRcv {                         // Symbol
                     17:        friend  SymTab;
                     18:        friend  Ed8SymTab;
                     19:        friend  BsdSymTab;
                     20:        Symbol  *hashlink;
                     21: public:
                     22:        int     disc();
                     23:        int     ok();
                     24:                Symbol(Symbol*,Symbol*,char*);
                     25:        Symbol  *parent;
                     26:        Symbol  *child;
                     27:        Symbol  *rsib;
                     28:        Symbol  *lsib;
                     29:        char    *_text;
                     30: virtual        char    *text(long=0);
                     31:        Range   range;
                     32:        char    *dump();
                     33:        Source  *source();
                     34: };
                     35: 
                     36: const LEAVE = 0, SHOW = 1, HIDE = 2;
                     37: 
                     38: class Var : public Symbol {                            // Var
                     39:        friend  Expr;
                     40:        friend  UType;
                     41:        short   _disc;
                     42:        short   showorhide;
                     43:        Index   carte();
                     44:        void    reformat(long);
                     45:        char    *fmtlist();
                     46:        void    showutype(UType*);
                     47: public:
                     48:                Var(class SymTab*,class Block*,Var*,UDisc,char*);
                     49:                ~Var();
                     50:        int     disc();
                     51:        int     ok();
                     52:        DType   type;
                     53:        void    show(int=LEAVE, Attrib=0);
                     54: };
                     55: 
                     56: class BlkVars : public PadRcv {                                        // BlkVars
                     57: class  Block   *b;             // next block
                     58:        Var     *v;             // prev variable
                     59: PUBLIC(BlockVars,U_BLKVARS)
                     60:        Var     *gen();
                     61:                BlkVars(Block*i);
                     62: };
                     63: 
                     64: class Block : public Symbol {                          // Block
                     65:        friend  BlkVars;
                     66:        friend  SymTab;
                     67:        friend  Ed8SymTab;
                     68:        friend  BsdSymTab;
                     69:        Var     *var;
                     70: PUBLIC(Block,U_BLOCK)
                     71:                Block(SymTab*,Symbol*,Block*,char*);
                     72:                ~Block();
                     73: class  Stmt    *stmt;
                     74: };     
                     75: 
                     76: class Source : public Symbol {                         // Source
                     77:        friend  Ed8SymTab;
                     78:        friend  BsdSymTab;
                     79:        Func    *linefunc;
                     80:        Stmt    *linestmt;
                     81: PUBLIC(Source,U_SOURCE)
                     82:                Source(SymTab*,Source*,char*,long);
                     83:                ~Source();
                     84:        SrcText *srctext;
                     85:        SymTab  *symtab;
                     86:        Block   *blk;
                     87:        Stmt    *stmtafter(int);
                     88:        char    *text(long=0);
                     89: #ifndef V9
                     90:        class   BsdType *bsdp;
                     91: #endif
                     92: };
                     93:        
                     94: class Func : public Symbol {                           // Func
                     95:        friend  Ed8SymTab;
                     96:        friend  BsdSymTab;
                     97:        long    begin;
                     98:        long    size;
                     99:        long    lnnoptr;                                // coff
                    100:        long    regsave;                                // mac32 - goes away
                    101:        Block   *_blk;
                    102:        void    gather();
                    103: PUBLIC(Func,U_FUNC)
                    104:                Func(SymTab*,Source*,Func*,long,char*);
                    105:                ~Func();
                    106:        Block   *blk();
                    107:        Block   *blk(long);
                    108:        DType   type;
                    109:        Range   lines;
                    110:        Stmt    *stmt(long);    
                    111:        char    *text(long=0);
                    112:        Var     *argument(int);
                    113:        int     regused(int);
                    114: };
                    115: 
                    116: #define Q_BPT   ((Expr*)1)     
                    117: class Stmt : public Symbol {                           // Stmt
                    118:        friend  Ed8SymTab;
                    119:        friend  BsdSymTab;
                    120:        friend  Instr;
                    121: class  Process *process;
                    122: class  Pad     *srcpad();
                    123:        void    error(char*);
                    124:        char    *contextsearch(char*,int);
                    125: PUBLIC(Stmt,U_STMT)
                    126:                Stmt(SymTab*,Block*,Stmt*);
                    127:                ~Stmt();
                    128:        void    asmblr();
                    129:        void    select(long=0);
                    130:        char    *text(long=0);
                    131:        short   lineno;
                    132:        short   hits;
                    133: class  Expr    *condition;
                    134:        Bls     *condtext;
                    135:        void    dobpt(int);
                    136:        void    settrace();
                    137:        void    openframe();
                    138:        char    *kbd(char*);
                    139:        char    *help();
                    140:        void    conditional(Expr*);
                    141:        char    *srcline();
                    142:        Func    *func();
                    143:        char    *journal(Bls&);
                    144: };
                    145: 
                    146: class UType : public Symbol {                          // UType
                    147:        friend  Ed8SymTab;
                    148:        friend  BsdSymTab; friend BsdType;
                    149:        friend  TypMems;
                    150:        friend  Var;            // for symtab
                    151:        SymTab  *symtab;
                    152:        long    begin;
                    153:        short   size;
                    154:        char    *canspecial;
                    155:        Var     *mem;
                    156: #ifndef V9
                    157:        BsdType *bsdp;
                    158:        char    *encode;
                    159: #endif
                    160:        void    gather();
                    161:        void    display();
                    162: PUBLIC(UType,U_UTYPE)
                    163:                UType(SymTab*,long,long,char*);
                    164: #ifndef V9
                    165:                UType(SymTab*,char*,char*, BsdType*);
                    166: #endif
                    167:                ~UType();
                    168:        DType   type;
                    169:        Index   carte(enum Op);
                    170:        void    show(int=LEAVE, Attrib=0);
                    171: };
                    172: 
                    173: class TypMems : public PadRcv {                                // TypMems
                    174:        char    pub_filler[8];
                    175:        UType   *ut;
                    176:        Var     *v;                     // prev
                    177: PUBLIC(TypMems,U_TYPMEMS)
                    178:                TypMems(UType *);
                    179:        Var     *gen();
                    180: };
                    181: 
                    182: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.