aboutsummaryrefslogtreecommitdiffstats
path: root/asmmac.h
blob: 732005815c9e4cc93a48a0518450a2509d38204a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
/* asmmac.h  */
/*****************************************************************************/
/* AS-Portierung                                                             */
/*                                                                           */
/* Unterroutinen des Makroprozessors                                         */
/*                                                                           */
/* Historie: 16. 5.1996 Grundsteinlegung                                     */
/*                                                                           */
/*****************************************************************************/

typedef struct _MacroRec
         {
          char *Name;            /* Name des Makros */
          Byte ParamCount;       /* Anzahl Parameter */
          StringList FirstLine;  /* Zeiger auf erste Zeile */
          Boolean Used;          /* wird gerade benutzt-verhindert Rekusion */
          Boolean LocMacExp;     /* Makroexpansion wird aufgelistet */
         } MacroRec,*PMacroRec;

#define BufferArraySize 1024

typedef struct _TInputTag
         {
          struct _TInputTag *Next;
          Boolean IsMacro;
          Integer IfLevel;
          Boolean First;
          Boolean OrigDoLst;
          LongInt StartLine;
          Boolean (*Processor)(
#ifdef __PROTOS__
                               struct _TInputTag *P, char *erg
#endif
                                                              );
          LongInt ParCnt,ParZ;
          StringList Params;
          LongInt LineCnt,LineZ;
          StringRecPtr Lines;
          String SpecName,SaveAttr;
          Boolean IsEmpty;
          FILE *Datei;
          void *Buffer;
          void (*Cleanup)(
#ifdef __PROTOS__
                          struct _TInputTag *P
#endif
                                              );
          void (*Restorer)(
#ifdef __PROTOS__
                           struct _TInputTag *P
#endif
                                               );
          Boolean (*GetPos)(
#ifdef __PROTOS__
                            struct _TInputTag *P, char *Dest
#endif
                                                            );
         } TInputTag,*PInputTag;

typedef struct _TOutputTag
         {
          struct _TOutputTag *Next;
          void (*Processor)(
#ifdef __PROTOS__
void
#endif
);
          Integer NestLevel;
          PInputTag Tag;
          PMacroRec Mac;
          StringList Params;
          LongInt PubSect,GlobSect;
          Boolean DoExport,DoGlobCopy;
          String GName;
         } TOutputTag,*POutputTag;


extern PInputTag FirstInputTag;
extern POutputTag FirstOutputTag;


extern void Preprocess(void);


extern void AddMacro(PMacroRec Neu, LongInt DefSect, Boolean Protest);

extern Boolean FoundMacro(PMacroRec *Erg);

extern void ClearMacroList(void);

extern void ResetMacroDefines(void);

extern void ClearMacroRec(PMacroRec *Alt);

extern void PrintMacroList(void);


extern void PrintDefineList(void);

extern void ClearDefineList(void);

extern void ExpandDefines(char *Line);


extern void asmmac_init(void);