File: TAddress.hh

package info (click to toggle)
faust 2.14.4~repack2-1
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 276,136 kB
  • sloc: cpp: 231,578; ansic: 15,403; sh: 10,871; java: 6,917; objc: 4,085; makefile: 3,002; cs: 1,077; ruby: 951; python: 885; xml: 550; yacc: 516; lex: 233; lisp: 201
file content (104 lines) | stat: -rw-r--r-- 2,642 bytes parent folder | download
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
#ifndef __TAddress__
#define __TAddress__

#include "TPrintable.hh"
#include "TType.hh"
#include "TIndex.hh"

#include <list>

struct TAddress : public TPrintable {

    virtual ~TAddress() {}

    virtual TType* getType() = 0;
    virtual TAddress* rewriteAddress(list<TAddress*>& address_list) = 0;
    virtual TAddress* linearizeAddress(list<TAddress*>& address_list) = 0;
};

#ifdef ALT_VECTOR

struct TVectorAddress : public TAddress
{
    TType* fType;
    int fSize;
    string fName;

    TVectorAddress(const string& name, TType* type, int size):fName(name), fType(type), fSize(size){}

    virtual ~TVectorAddress() {}

    virtual void generate(ostream* dst, int n);
    virtual void generateCPP(ostream* dst, int n);
    virtual void generateCPPNoAlias(ostream* dst, int n);
    virtual TType* getType();
    virtual TAddress* rewriteAddress(list<TAddress*>& address_list);
    virtual TAddress* linearizeAddress(list<TAddress*>& address_list);

};

#else

struct TNamedAddress : public TAddress
{
    TType* fType;
    string fName;

    TNamedAddress(const string& name, TType* type):fName(name), fType(type)
    {
        assert(dynamic_cast<TVectorType*>(type));
    }

    virtual ~TNamedAddress() {}

    virtual void generate(ostream* dst, int n);
    virtual void generateCPP(ostream* dst, int n);
    virtual void generateCPPNoAlias(ostream* dst, int n);
    virtual TType* getType();
    virtual TAddress* rewriteAddress(list<TAddress*>& address_list);
    virtual TAddress* linearizeAddress(list<TAddress*>& address_list);

};

#endif

struct TCastAddress : public TAddress
{
    TAddress* fAddress;
    TType* fType;

    TCastAddress(TAddress* address, TType* type):fAddress(address), fType(type)
    {}

    virtual ~TCastAddress() {}

    virtual void generate(ostream* dst, int n);
    virtual void generateCPP(ostream* dst, int n);
    virtual void generateCPPNoAlias(ostream* dst, int n);
    virtual TType* getType();
    virtual TAddress* rewriteAddress(list<TAddress*>& address_list);
    virtual TAddress* linearizeAddress(list<TAddress*>& address_list);

};

struct TIndexAddress : public TAddress
{
    TAddress* fAddress;
    TIndex* fIndex;

    TIndexAddress(TAddress* address, TIndex* index):fAddress(address), fIndex(index){}

    virtual ~TIndexAddress() {}

    virtual void generate(ostream* dst, int n);
    virtual void generateCPP(ostream* dst, int n);
    virtual void generateCPPNoAlias(ostream* dst, int n);
    virtual TType* getType();
    virtual TAddress* rewriteAddress(list<TAddress*>& address_list);
    virtual TAddress* linearizeAddress(list<TAddress*>& address_list);

};

#endif