Annotation of researchv9/jtools/src/pi/symtab.h, revision 1.1

1.1     ! root        1: #ifndef SYMTAB_H
        !             2: #define SYMTAB_H
        !             3: #ifndef UNIV_H
        !             4: #include "univ.h"
        !             5: #endif
        !             6: 
        !             7: #include "mip.h"
        !             8: extern int FunctionGathered, UTypeGathered, FunctionStubs, UTypeStubs;
        !             9: extern int IdToSymCalls, StrCmpCalls;
        !            10: 
        !            11: class SSet {
        !            12:        friend  SymTab; friend LookupCache;
        !            13:        char    v[8];
        !            14: public:
        !            15:                SSet(char=0);
        !            16:                SSet(char,char,char=0,char=0,char=0,char=0,char=0);
        !            17: };
        !            18: 
        !            19: class LookupCache {
        !            20:        SSet    set;
        !            21:        Symbol  *sym;
        !            22:        long    loc;
        !            23:        char    *id;
        !            24: public:
        !            25:                LookupCache() {}
        !            26:        Symbol  *match(SSet, long);
        !            27:        void    save(SSet, long, Symbol*);
        !            28: };
        !            29: 
        !            30: class SymTab : public PadRcv {
        !            31:        friend Ed8SymTab;
        !            32:        friend BsdSymTab; friend BsdType;
        !            33:        friend Core;
        !            34: >pub
        !            35:        char    pub_filler[3338];
        !            36: >pri
        !            37:        Pad     *_pad;
        !            38:        int     fd;
        !            39:        char    *strings;
        !            40:        long    strsize;
        !            41:        long    entries;
        !            42:        long    _magic;
        !            43:        long    relocation;
        !            44: #define HASH           101 /* prime */
        !            45:        Symbol  *hashtable[TOSYM+1][HASH];
        !            46:        Core    *_core;
        !            47:        char    *stabpath();
        !            48:        Source  *_root;
        !            49:        Block   *fakeblk();
        !            50:        char    *dump();
        !            51:        Block   *_blk;
        !            52:        char    *_warn;
        !            53:        Index   castix[UNDEF];  // only [STRTY] [ENUMTY] used
        !            54:        UType   *utype;
        !            55:        SymTab  *inherit;
        !            56:        Var     *globregs(Block*, int);
        !            57:        void    uncfront(Var *, char*);
        !            58:        void    showutype(UType*);
        !            59:        LookupCache
        !            60:                loctosymcache;
        !            61: >
        !            62: virtual        char    *gethdr()               { return "SymTab.gethdr"; }
        !            63: virtual        Source  *tree()                 { return 0; }
        !            64: PUBLIC(SymTab,U_SYMTAB)
        !            65:                SymTab(Core*,int,SymTab* =0,long=0);
        !            66: virtual                ~SymTab();
        !            67:        void    read();
        !            68:        void    enter(Symbol*);
        !            69:        Symbol  *idtosym(SSet,char*,int=1);
        !            70:        Symbol  *loctosym(SSet,long,int=1);
        !            71:        Pad     *pad();
        !            72:        Core    *core();
        !            73:        char    *symaddr(long);
        !            74:        Source  *root();
        !            75:        long    modtime();
        !            76:        Block   *blk();
        !            77:        char    *warn();
        !            78:        Index   utypecarte(short);
        !            79:        long    magic();
        !            80:        UType   *utypelist();
        !            81:        void    banner();
        !            82: virtual        Block   *gatherfunc(Func*);
        !            83: virtual        Var     *gatherutype(UType*);
        !            84:        void    opentypes();
        !            85: };
        !            86: >pri
        !            87: struct nlist; struct exec; struct mlist;
        !            88: 
        !            89: #ifdef V9
        !            90: class Ed8SymTab : public SymTab {
        !            91:        exec    *hdr;
        !            92:        nlist   *base;
        !            93:        nlist   *symoff;
        !            94:        DType   gatherdtype(nlist *);
        !            95:        DType   chain(int, nlist *);
        !            96:        void    gathervar(nlist*, Var**, Block*, UDisc);
        !            97:        int     isastring(char*);
        !            98:        char    *gettbl();
        !            99:        nlist   *nlistvector(long,long);
        !           100:        Source  *tree();
        !           101:        char    *gethdr();
        !           102: public:
        !           103:                Ed8SymTab(Core*,int,SymTab* =0);
        !           104:                ~Ed8SymTab();
        !           105:        Block   *gatherfunc(Func*);
        !           106:        Var     *gatherutype(UType*);
        !           107: };
        !           108: #else
        !           109: class BsdSymTab : public SymTab {
        !           110:        exec    *hdr;
        !           111:        nlist   *base;
        !           112:        nlist   *symoff;
        !           113:        DType   gatherdtype(nlist *);
        !           114:        DType   chain(int, nlist *);
        !           115:        void    gathervar(nlist*, Var**, Block*, UDisc);
        !           116:        void    gathervar(nlist*, Var**, Block*, UDisc, class BsdType *);
        !           117:        int     isastring(char*);
        !           118:        char    *gettbl();
        !           119:        nlist   *nlistvector(long,long);
        !           120:        Source  *tree();
        !           121:        char    *gethdr();
        !           122:        BsdTShare *bsdshare;
        !           123: public:
        !           124:                BsdSymTab(Core*,int,SymTab* =0,long=0);
        !           125:                ~BsdSymTab();
        !           126:        Block   *gatherfunc(Func*);
        !           127:        Var     *gatherutype(UType*);
        !           128:        int     endtext();
        !           129: };
        !           130: #endif V9
        !           131: >
        !           132: char *DiscName(UDisc);
        !           133: #endif

unix.superglobalmegacorp.com

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