]> Shamusworld >> Repos - rmac/blob - symbol.h
Force -fa when user passes -p.
[rmac] / symbol.h
1 //
2 // RMAC - Reboot's Macro Assembler for the Atari Jaguar Console System
3 // SYMBOL.H - Symbol Handling
4 // Copyright (C) 199x Landon Dyer, 2011 Reboot and Friends
5 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
6 // Source utilised with the kind permission of Landon Dyer
7 //
8
9 #ifndef __SYMBOL_H__
10 #define __SYMBOL_H__
11
12 #include <inttypes.h>
13
14 // Line lists
15 struct LineList
16 {
17         struct LineList * next;
18         char * line;
19 };
20
21 // Symbols
22 #define SYM struct _sym
23 SYM
24 {
25         SYM * snext;                                    // * -> Next symbol on hash-chain
26         SYM * sorder;                                   // * -> Next sym in order of reference
27         SYM * sdecl;                                    // * -> Next sym in order of declaration
28         uint8_t stype;                                  // Symbol type 
29         uint16_t sattr;                                 // Attribute bits
30         uint32_t sattre;                                // Extended attribute bits
31         uint16_t senv;                                  // Enviroment number
32         uint32_t svalue;                                // Symbol value
33         char * sname;                                   // * -> Symbol's print-name
34         struct LineList * lineList;             // * -> Macro's linked list of lines
35         struct LineList * last;                 // * -> end of macro linked list
36         uint32_t uid;                                   // Symbol's unique ID
37 };
38
39 // Globals, externals, etc.
40 extern int curenv;
41 extern char subttl[];
42 extern int eject(void);
43
44 // Exported functions
45 SYM * lookup(char *, int, int);
46 void InitSymbolTable(void);
47 SYM * NewSymbol(char *, int, int);
48 void AddToSymbolDeclarationList(SYM *);
49 void ForceUndefinedSymbolsGlobal(void);
50 int symtable(void);
51 int sy_assign(char *, char *(*)());
52 char * GetSymbolNameByUID(uint32_t);
53
54 #endif // __SYMBOL_H__
55