1
|
1
|
|
2 // Compiler implementation of the D programming language
|
|
3 // Copyright (c) 1999-2006 by Digital Mars
|
|
4 // All Rights Reserved
|
|
5 // written by Walter Bright
|
|
6 // http://www.digitalmars.com
|
|
7 // License for redistribution is by either the Artistic License
|
|
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
|
|
9 // See the included readme.txt for details.
|
|
10
|
|
11 #ifndef DMD_MACRO_H
|
|
12 #define DMD_MACRO_H 1
|
|
13
|
|
14 #include <stdio.h>
|
|
15 #include <string.h>
|
|
16 #include <time.h>
|
|
17 #include <ctype.h>
|
|
18
|
|
19 #include "root.h"
|
|
20
|
|
21
|
|
22 class Macro
|
|
23 {
|
|
24 Macro *next; // next in list
|
|
25
|
|
26 unsigned char *name; // macro name
|
|
27 size_t namelen; // length of macro name
|
|
28
|
|
29 unsigned char *text; // macro replacement text
|
|
30 size_t textlen; // length of replacement text
|
|
31
|
|
32 int inuse; // macro is in use (don't expand)
|
|
33
|
|
34 Macro(unsigned char *name, size_t namelen, unsigned char *text, size_t textlen);
|
|
35 Macro *search(unsigned char *name, size_t namelen);
|
|
36
|
|
37 public:
|
|
38 static Macro *define(Macro **ptable, unsigned char *name, size_t namelen, unsigned char *text, size_t textlen);
|
|
39
|
|
40 void expand(OutBuffer *buf, unsigned start, unsigned *pend,
|
|
41 unsigned char *arg, unsigned arglen);
|
|
42 };
|
|
43
|
|
44 #endif
|