SymEval for POWER: WIP
[dyninst.git] / symEval / rose / conversions.h
1 #if !defined(ROSE_CONVERSIONS_H)
2 #define ROSE_CONVERSIONS_H
3
4 class SgAsmExpression;
5 class SgAsmValueExpression;
6 class SgAsmByteValueExpression;
7 class SgAsmWordValueExpression;
8 class SgAsmDoubleWordValueExpression;
9 class SgAsmQuadWordValueExpression;
10 class SgAsmSingleFloatValueExpression;
11 class SgAsmDoubleFloatValueExpression;
12 class SgAsmVectorValueExpression;
13 class SgAsmBinaryExpression;
14 class SgAsmBinaryAdd;
15 class SgAsmBinarySubtract;
16 class SgAsmBinaryMultiply;
17 class SgAsmBinaryDivide;
18 class SgAsmBinaryMod;
19 class SgAsmBinaryAddPreupdate;
20 class SgAsmBinarySubtractPreupdate;
21 class SgAsmBinaryAddPostupdate;
22 class SgAsmBinarySubtractPostupdate;
23 class SgAsmBinaryLsl;
24 class SgAsmBinaryLsr;
25 class SgAsmBinaryAsr;
26 class SgAsmBinaryRor;
27 class SgAsmUnaryExpression;
28 class SgAsmUnaryPlus;
29 class SgAsmUnaryMinus;
30 class SgAsmUnaryRrx;
31 class SgAsmMemoryReferenceExpression;
32 class SgAsmRegisterReferenceExpression;
33 class SgAsmx86RegisterReferenceExpression;
34 class SgAsmPowerpcRegisterReferenceExpression;
35 class SgAsmInstruction;
36 class SgAsmOperandList;
37 class SgAsmType;
38 class SgAsmTypeByte;
39 class SgAsmTypeWord;
40 class SgAsmTypeDoubleWord;
41 class SgAsmTypeQuadWord;
42 class SgAsmTypeDoubleQuadWord;
43 class SgAsmType80bitFloat;
44 class SgAsmType128bitFloat;
45 class SgAsmTypeSingleFloat;
46 class SgAsmTypeDoubleFloat;
47 class SgAsmTypeVector;
48 class SgAsmx86Instruction;
49 class SgAsmPowerpcInstruction;
50
51 class SageInterface {
52  public:
53     static uint64_t getAsmSignedConstant(SgAsmValueExpression *);
54 };
55
56 SgAsmExpression* isSgAsmExpression( SgNode *s);
57 const SgAsmExpression* isSgAsmExpression( const SgNode * s );
58 SgAsmValueExpression* isSgAsmValueExpression( SgNode *);
59 const SgAsmValueExpression* isSgAsmValueExpression( const SgNode * s );
60 SgAsmByteValueExpression* isSgAsmByteValueExpression( SgNode *);
61 const SgAsmByteValueExpression* isSgAsmByteValueExpression( const SgNode * s );
62 SgAsmWordValueExpression* isSgAsmWordValueExpression( SgNode *);
63 const SgAsmWordValueExpression* isSgAsmWordValueExpression( const SgNode * s );
64 SgAsmDoubleWordValueExpression* isSgAsmDoubleWordValueExpression( SgNode *);
65 const SgAsmDoubleWordValueExpression* isSgAsmDoubleWordValueExpression( const SgNode * s );
66 SgAsmQuadWordValueExpression* isSgAsmQuadWordValueExpression( SgNode *);
67 const SgAsmQuadWordValueExpression* isSgAsmQuadWordValueExpression( const SgNode * s );
68 SgAsmSingleFloatValueExpression* isSgAsmSingleFloatValueExpression( SgNode *);
69 const SgAsmSingleFloatValueExpression* isSgAsmSingleFloatValueExpression( const SgNode * s );
70 SgAsmDoubleFloatValueExpression* isSgAsmDoubleFloatValueExpression( SgNode *);
71 const SgAsmDoubleFloatValueExpression* isSgAsmDoubleFloatValueExpression( const SgNode * s );
72 SgAsmVectorValueExpression* isSgAsmVectorValueExpression( SgNode *);
73 const SgAsmVectorValueExpression* isSgAsmVectorValueExpression( const SgNode * s );
74 SgAsmBinaryExpression* isSgAsmBinaryExpression( SgNode *);
75 const SgAsmBinaryExpression* isSgAsmBinaryExpression( const SgNode * s );
76 SgAsmBinaryAdd* isSgAsmBinaryAdd( SgNode *);
77 const SgAsmBinaryAdd* isSgAsmBinaryAdd( const SgNode * s );
78 SgAsmBinarySubtract* isSgAsmBinarySubtract( SgNode *);
79 const SgAsmBinarySubtract* isSgAsmBinarySubtract( const SgNode * s );
80 SgAsmBinaryMultiply* isSgAsmBinaryMultiply( SgNode *);
81 const SgAsmBinaryMultiply* isSgAsmBinaryMultiply( const SgNode * s );
82 SgAsmBinaryDivide* isSgAsmBinaryDivide( SgNode *);
83 const SgAsmBinaryDivide* isSgAsmBinaryDivide( const SgNode * s );
84 SgAsmBinaryMod* isSgAsmBinaryMod( SgNode *);
85 const SgAsmBinaryMod* isSgAsmBinaryMod( const SgNode * s );
86 SgAsmBinaryAddPreupdate* isSgAsmBinaryAddPreupdate( SgNode *);
87 const SgAsmBinaryAddPreupdate* isSgAsmBinaryAddPreupdate( const SgNode * s );
88 SgAsmBinarySubtractPreupdate* isSgAsmBinarySubtractPreupdate( SgNode *);
89 const SgAsmBinarySubtractPreupdate* isSgAsmBinarySubtractPreupdate( const SgNode * s );
90 SgAsmBinaryAddPostupdate* isSgAsmBinaryAddPostupdate( SgNode *);
91 const SgAsmBinaryAddPostupdate* isSgAsmBinaryAddPostupdate( const SgNode * s );
92 SgAsmBinarySubtractPostupdate* isSgAsmBinarySubtractPostupdate( SgNode *);
93 const SgAsmBinarySubtractPostupdate* isSgAsmBinarySubtractPostupdate( const SgNode * s );
94 SgAsmBinaryLsl* isSgAsmBinaryLsl( SgNode *);
95 const SgAsmBinaryLsl* isSgAsmBinaryLsl( const SgNode * s );
96 SgAsmBinaryLsr* isSgAsmBinaryLsr( SgNode *);
97 const SgAsmBinaryLsr* isSgAsmBinaryLsr( const SgNode * s );
98 SgAsmBinaryAsr* isSgAsmBinaryAsr( SgNode *);
99 const SgAsmBinaryAsr* isSgAsmBinaryAsr( const SgNode * s );
100 SgAsmBinaryRor* isSgAsmBinaryRor( SgNode *);
101 const SgAsmBinaryRor* isSgAsmBinaryRor( const SgNode * s );
102 SgAsmUnaryExpression* isSgAsmUnaryExpression( SgNode *);
103 const SgAsmUnaryExpression* isSgAsmUnaryExpression( const SgNode * s );
104 SgAsmUnaryPlus* isSgAsmUnaryPlus( SgNode *);
105 const SgAsmUnaryPlus* isSgAsmUnaryPlus( const SgNode * s );
106 SgAsmUnaryMinus* isSgAsmUnaryMinus( SgNode *);
107 const SgAsmUnaryMinus* isSgAsmUnaryMinus( const SgNode * s );
108 SgAsmUnaryRrx* isSgAsmUnaryRrx( SgNode *);
109 const SgAsmUnaryRrx* isSgAsmUnaryRrx( const SgNode * s );
110 SgAsmMemoryReferenceExpression* isSgAsmMemoryReferenceExpression( SgNode *);
111 const SgAsmMemoryReferenceExpression* isSgAsmMemoryReferenceExpression( const SgNode * s );
112 SgAsmRegisterReferenceExpression* isSgAsmRegisterReferenceExpression( SgNode *);
113 const SgAsmRegisterReferenceExpression* isSgAsmRegisterReferenceExpression( const SgNode * s );
114 SgAsmx86RegisterReferenceExpression* isSgAsmx86RegisterReferenceExpression( SgNode *);
115 const SgAsmx86RegisterReferenceExpression* isSgAsmx86RegisterReferenceExpression( const SgNode * s );
116 SgAsmPowerpcRegisterReferenceExpression* isSgAsmPowerpcRegisterReferenceExpression( SgNode *);
117 const SgAsmPowerpcRegisterReferenceExpression* isSgAsmPowerpcRegisterReferenceExpression( const SgNode * s );
118 SgAsmInstruction* isSgAsmInstruction( SgNode *);
119 const SgAsmInstruction* isSgAsmInstruction( const SgNode * s );
120 SgAsmOperandList* isSgAsmOperandList( SgNode *);
121 const SgAsmOperandList* isSgAsmOperandList( const SgNode * s );
122 SgAsmType* isSgAsmType( SgNode *);
123 const SgAsmType* isSgAsmType( const SgNode * s );
124 SgAsmTypeByte* isSgAsmTypeByte( SgNode *);
125 const SgAsmTypeByte* isSgAsmTypeByte( const SgNode * s );
126 SgAsmTypeWord* isSgAsmTypeWord( SgNode *);
127 const SgAsmTypeWord* isSgAsmTypeWord( const SgNode * s );
128 SgAsmTypeDoubleWord* isSgAsmTypeDoubleWord( SgNode *);
129 const SgAsmTypeDoubleWord* isSgAsmTypeDoubleWord( const SgNode * s );
130 SgAsmTypeQuadWord* isSgAsmTypeQuadWord( SgNode *);
131 const SgAsmTypeQuadWord* isSgAsmTypeQuadWord( const SgNode * s );
132 SgAsmTypeDoubleQuadWord* isSgAsmTypeDoubleQuadWord( SgNode *);
133 const SgAsmTypeDoubleQuadWord* isSgAsmTypeDoubleQuadWord( const SgNode * s );
134 SgAsmType80bitFloat* isSgAsmType80bitFloat( SgNode *);
135 const SgAsmType80bitFloat* isSgAsmType80bitFloat( const SgNode * s );
136 SgAsmType128bitFloat* isSgAsmType128bitFloat( SgNode *);
137 const SgAsmType128bitFloat* isSgAsmType128bitFloat( const SgNode * s );
138 SgAsmTypeSingleFloat* isSgAsmTypeSingleFloat( SgNode *);
139 const SgAsmTypeSingleFloat* isSgAsmTypeSingleFloat( const SgNode * s );
140 SgAsmTypeDoubleFloat* isSgAsmTypeDoubleFloat( SgNode *);
141 const SgAsmTypeDoubleFloat* isSgAsmTypeDoubleFloat( const SgNode * s );
142 SgAsmTypeVector* isSgAsmTypeVector( SgNode *);
143 const SgAsmTypeVector* isSgAsmTypeVector( const SgNode * s );
144 SgAsmx86Instruction* isSgAsmx86Instruction( SgNode *);
145 const SgAsmx86Instruction* isSgAsmx86Instruction( const SgNode * s );
146 SgAsmPowerpcInstruction* isSgAsmPowerpcInstruction( SgNode *);
147 const SgAsmPowerpcInstruction* isSgAsmPowerpcInstruction( const SgNode * s );
148 #endif