OpenCores
URL https://opencores.org/ocsvn/thor/thor/trunk

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v5/] [software/] [AS64/] [source/] [types.h] - Blame information for rev 54

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 48 robfinch
#ifndef _TYPES_H
2
#define _TYPES_H
3
 
4
class Arg
5
{
6
public:
7 54 robfinch
        std::string text;
8 48 robfinch
public:
9
        void Get();
10
        void Clear();
11
};
12
 
13
class Arglist
14
{
15
public:
16
        int count;
17 54 robfinch
        Arg args[20];
18 48 robfinch
public:
19
        void Get();
20
};
21
 
22
class Macro
23
{
24
public:
25
        static int inst;
26
        char *body;     // template for macro body
27 54 robfinch
        Arglist parms;
28 48 robfinch
public:
29 54 robfinch
        char *SubArgs(Arglist *al);
30
        //char *GetArg();
31
        char *GetBody();
32
        int GetParmList();
33
        static void Substitute(char *, int);
34 48 robfinch
};
35
 
36 54 robfinch
class FileInfo
37
{
38
public:
39
        std::string name;
40
        int lineno;
41
};
42
 
43
class FilenameStack
44
{
45
public:
46
        FileInfo stack[21];
47
        int sp;
48
public:
49
        FilenameStack() { sp = 0; };
50
        void Push(std::string nm, int ln) {
51
                if (sp > 20) {
52
                        printf("Too many nested files.\n");
53
                        return;
54
                }
55
                stack[sp].name = nm;
56
                stack[sp].lineno = ln;
57
                sp++;
58
        }
59
        void Pop(std::string *nm, int *ln) {
60
                if (sp == 0) {
61
                        printf("Filename stack underflow.\n");
62
                        return;
63
                }
64
                --sp;
65
                *nm = stack[sp].name;
66
                *ln = stack[sp].lineno;
67
        }
68
        FileInfo *GetTos() {
69
                return (&stack[sp - 1]);
70
        }
71
};
72
 
73 48 robfinch
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.