Bugfixes for slicing and general compile fixes for SymEval component
[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 SgAsmInstruction;
35 class SgAsmOperandList;
36 class SgAsmType;
37 class SgAsmTypeByte;
38 class SgAsmTypeWord;
39 class SgAsmTypeDoubleWord;
40 class SgAsmTypeQuadWord;
41 class SgAsmTypeDoubleQuadWord;
42 class SgAsmType80bitFloat;
43 class SgAsmType128bitFloat;
44 class SgAsmTypeSingleFloat;
45 class SgAsmTypeDoubleFloat;
46 class SgAsmTypeVector;
47 class SgAsmx86Instruction;
48
49 class SageInterface {
50  public:
51     static uint64_t getAsmSignedConstant(SgAsmValueExpression *);
52 };
53
54 SgAsmExpression* isSgAsmExpression( SgNode *s);
55 const SgAsmExpression* isSgAsmExpression( const SgNode * s );
56 SgAsmValueExpression* isSgAsmValueExpression( SgNode *);
57 const SgAsmValueExpression* isSgAsmValueExpression( const SgNode * s );
58 SgAsmByteValueExpression* isSgAsmByteValueExpression( SgNode *);
59 const SgAsmByteValueExpression* isSgAsmByteValueExpression( const SgNode * s );
60 SgAsmWordValueExpression* isSgAsmWordValueExpression( SgNode *);
61 const SgAsmWordValueExpression* isSgAsmWordValueExpression( const SgNode * s );
62 SgAsmDoubleWordValueExpression* isSgAsmDoubleWordValueExpression( SgNode *);
63 const SgAsmDoubleWordValueExpression* isSgAsmDoubleWordValueExpression( const SgNode * s );
64 SgAsmQuadWordValueExpression* isSgAsmQuadWordValueExpression( SgNode *);
65 const SgAsmQuadWordValueExpression* isSgAsmQuadWordValueExpression( const SgNode * s );
66 SgAsmSingleFloatValueExpression* isSgAsmSingleFloatValueExpression( SgNode *);
67 const SgAsmSingleFloatValueExpression* isSgAsmSingleFloatValueExpression( const SgNode * s );
68 SgAsmDoubleFloatValueExpression* isSgAsmDoubleFloatValueExpression( SgNode *);
69 const SgAsmDoubleFloatValueExpression* isSgAsmDoubleFloatValueExpression( const SgNode * s );
70 SgAsmVectorValueExpression* isSgAsmVectorValueExpression( SgNode *);
71 const SgAsmVectorValueExpression* isSgAsmVectorValueExpression( const SgNode * s );
72 SgAsmBinaryExpression* isSgAsmBinaryExpression( SgNode *);
73 const SgAsmBinaryExpression* isSgAsmBinaryExpression( const SgNode * s );
74 SgAsmBinaryAdd* isSgAsmBinaryAdd( SgNode *);
75 const SgAsmBinaryAdd* isSgAsmBinaryAdd( const SgNode * s );
76 SgAsmBinarySubtract* isSgAsmBinarySubtract( SgNode *);
77 const SgAsmBinarySubtract* isSgAsmBinarySubtract( const SgNode * s );
78 SgAsmBinaryMultiply* isSgAsmBinaryMultiply( SgNode *);
79 const SgAsmBinaryMultiply* isSgAsmBinaryMultiply( const SgNode * s );
80 SgAsmBinaryDivide* isSgAsmBinaryDivide( SgNode *);
81 const SgAsmBinaryDivide* isSgAsmBinaryDivide( const SgNode * s );
82 SgAsmBinaryMod* isSgAsmBinaryMod( SgNode *);
83 const SgAsmBinaryMod* isSgAsmBinaryMod( const SgNode * s );
84 SgAsmBinaryAddPreupdate* isSgAsmBinaryAddPreupdate( SgNode *);
85 const SgAsmBinaryAddPreupdate* isSgAsmBinaryAddPreupdate( const SgNode * s );
86 SgAsmBinarySubtractPreupdate* isSgAsmBinarySubtractPreupdate( SgNode *);
87 const SgAsmBinarySubtractPreupdate* isSgAsmBinarySubtractPreupdate( const SgNode * s );
88 SgAsmBinaryAddPostupdate* isSgAsmBinaryAddPostupdate( SgNode *);
89 const SgAsmBinaryAddPostupdate* isSgAsmBinaryAddPostupdate( const SgNode * s );
90 SgAsmBinarySubtractPostupdate* isSgAsmBinarySubtractPostupdate( SgNode *);
91 const SgAsmBinarySubtractPostupdate* isSgAsmBinarySubtractPostupdate( const SgNode * s );
92 SgAsmBinaryLsl* isSgAsmBinaryLsl( SgNode *);
93 const SgAsmBinaryLsl* isSgAsmBinaryLsl( const SgNode * s );
94 SgAsmBinaryLsr* isSgAsmBinaryLsr( SgNode *);
95 const SgAsmBinaryLsr* isSgAsmBinaryLsr( const SgNode * s );
96 SgAsmBinaryAsr* isSgAsmBinaryAsr( SgNode *);
97 const SgAsmBinaryAsr* isSgAsmBinaryAsr( const SgNode * s );
98 SgAsmBinaryRor* isSgAsmBinaryRor( SgNode *);
99 const SgAsmBinaryRor* isSgAsmBinaryRor( const SgNode * s );
100 SgAsmUnaryExpression* isSgAsmUnaryExpression( SgNode *);
101 const SgAsmUnaryExpression* isSgAsmUnaryExpression( const SgNode * s );
102 SgAsmUnaryPlus* isSgAsmUnaryPlus( SgNode *);
103 const SgAsmUnaryPlus* isSgAsmUnaryPlus( const SgNode * s );
104 SgAsmUnaryMinus* isSgAsmUnaryMinus( SgNode *);
105 const SgAsmUnaryMinus* isSgAsmUnaryMinus( const SgNode * s );
106 SgAsmUnaryRrx* isSgAsmUnaryRrx( SgNode *);
107 const SgAsmUnaryRrx* isSgAsmUnaryRrx( const SgNode * s );
108 SgAsmMemoryReferenceExpression* isSgAsmMemoryReferenceExpression( SgNode *);
109 const SgAsmMemoryReferenceExpression* isSgAsmMemoryReferenceExpression( const SgNode * s );
110 SgAsmRegisterReferenceExpression* isSgAsmRegisterReferenceExpression( SgNode *);
111 const SgAsmRegisterReferenceExpression* isSgAsmRegisterReferenceExpression( const SgNode * s );
112 SgAsmx86RegisterReferenceExpression* isSgAsmx86RegisterReferenceExpression( SgNode *);
113 const SgAsmx86RegisterReferenceExpression* isSgAsmx86RegisterReferenceExpression( const SgNode * s );
114 SgAsmInstruction* isSgAsmInstruction( SgNode *);
115 const SgAsmInstruction* isSgAsmInstruction( const SgNode * s );
116 SgAsmOperandList* isSgAsmOperandList( SgNode *);
117 const SgAsmOperandList* isSgAsmOperandList( const SgNode * s );
118 SgAsmType* isSgAsmType( SgNode *);
119 const SgAsmType* isSgAsmType( const SgNode * s );
120 SgAsmTypeByte* isSgAsmTypeByte( SgNode *);
121 const SgAsmTypeByte* isSgAsmTypeByte( const SgNode * s );
122 SgAsmTypeWord* isSgAsmTypeWord( SgNode *);
123 const SgAsmTypeWord* isSgAsmTypeWord( const SgNode * s );
124 SgAsmTypeDoubleWord* isSgAsmTypeDoubleWord( SgNode *);
125 const SgAsmTypeDoubleWord* isSgAsmTypeDoubleWord( const SgNode * s );
126 SgAsmTypeQuadWord* isSgAsmTypeQuadWord( SgNode *);
127 const SgAsmTypeQuadWord* isSgAsmTypeQuadWord( const SgNode * s );
128 SgAsmTypeDoubleQuadWord* isSgAsmTypeDoubleQuadWord( SgNode *);
129 const SgAsmTypeDoubleQuadWord* isSgAsmTypeDoubleQuadWord( const SgNode * s );
130 SgAsmType80bitFloat* isSgAsmType80bitFloat( SgNode *);
131 const SgAsmType80bitFloat* isSgAsmType80bitFloat( const SgNode * s );
132 SgAsmType128bitFloat* isSgAsmType128bitFloat( SgNode *);
133 const SgAsmType128bitFloat* isSgAsmType128bitFloat( const SgNode * s );
134 SgAsmTypeSingleFloat* isSgAsmTypeSingleFloat( SgNode *);
135 const SgAsmTypeSingleFloat* isSgAsmTypeSingleFloat( const SgNode * s );
136 SgAsmTypeDoubleFloat* isSgAsmTypeDoubleFloat( SgNode *);
137 const SgAsmTypeDoubleFloat* isSgAsmTypeDoubleFloat( const SgNode * s );
138 SgAsmTypeVector* isSgAsmTypeVector( SgNode *);
139 const SgAsmTypeVector* isSgAsmTypeVector( const SgNode * s );
140 SgAsmx86Instruction* isSgAsmx86Instruction( SgNode *);
141 const SgAsmx86Instruction* isSgAsmx86Instruction( const SgNode * s );
142 #endif