|
|
1.1 root 1: /* $Header: sym.c,v 1.1 86/03/24 16:19:22 rcs Exp $ */
2: /* (C) Copyright 1985 Third Eye Software, Inc. - All Rights Reserved */
3:
4: #include "tes42.h"
5:
6:
7: /* I S Y M F S Y M */
8:
9: export int IsymFSym (sym)
10: pSYMR sym;
11: {
12: return (sym - vrgSym);
13: } /* IsymFSym */
14:
15:
16: /* S Y M F I S Y M */
17:
18: export pSYMR SymFIsym (isym)
19: int isym;
20: {
21: return (vrgSym + isym);
22: } /* SymFIsym */
23:
24:
25:
26: /* S Y M F I N S E R T */
27:
28: export pSYMR SymFInsert ()
29: {
30: register pSYMR sym;
31: static SYMR asymZeroes;
32:
33: if (visymMac >= visymMax)
34: panic ("symbol overrrun");
35: visym = visymMac++;
36: sym = vrgSym + visym;
37:
38: *sym = asymZeroes;
39:
40: return (sym);
41: } /* SymFInsert */
42:
43:
44: /* D E L E T E S Y M */
45:
46: export void DeleteSym (sym)
47: pSYMR sym;
48: {
49: long isym;
50:
51: if (sym >= vrgSym + visymMac)
52: panic ("illegal symbol delete");
53:
54: visymMac--;
55: for (isym = IsymFSym(sym); isym < visymMac; isym++)
56: vrgSym[isym] = vrgSym[isym+1];
57: } /* DeleteSym */
58:
59:
60: /* S Y M F G L O B A L */
61:
62: export pSYMR SymFGlobal()
63: {
64: pSYMR sym;
65: static SYMR asymZeroes;
66:
67: if (visymGlMac >= visymGlMax)
68: panic("sym table overrun");
69:
70: visymGlobal = visymGlMac++;
71: sym = vrgSymGlobal + visymGlobal;
72:
73: *sym = asymZeroes;
74:
75: return(sym);
76: } /* SymFGlobal */
77:
78:
79: /* E X I S T I N G S Y M F S B P R O C */
80:
81: export pSYMR ExistingSymFSbProc (iss)
82: register int iss;
83: {
84: register pPDR pd= vrgPd + vipd;
85: register pPDR pd0= vrgPd;
86: register pSYMR rgSym= vrgSym;
87:
88: while (pd >= pd0 && rgSym [pd->isym].iss != iss)
89: pd--;
90:
91: return (pd >= pd0 ? (rgSym + pd->isym) : symNil);
92:
93: } /* ExistingSymFSbProc */
94:
95:
96: /* E X I S T I N G S Y M F G L O B A L */
97:
98: export pSYMR ExistingSymFGlobal (sym)
99: pSYMR sym;
100: {
101: register pSYMR sym1;
102:
103: for (sym1 = vrgSymGlobal+visymGlMac;
104: (sym1 >= vrgSymGlobal) && (sym1->iss != sym->iss); sym1--)
105: ;
106:
107: return( (sym1 >= vrgSymGlobal) ? sym1 : symNil);
108: } /* ExistingSymFGlobal */
109:
110:
111: /* E X I S T I N G F D S Y M F I S S */
112:
113: export pSYMR ExistingFdSymFIss (iss)
114: register int iss;
115: {
116: register pSYMR sym1 = vrgSym + visym;
117: register pSYMR symFile = vsymFile;
118:
119: while ( (sym1 > symFile) && (sym1->iss != iss))
120: sym1--;
121:
122: return( (sym1 > symFile) ? sym1 : symNil);
123: } /* ExistingFdSymFIss */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.