zenilib: zenilib/jni/external/angle/src/compiler/ConstantUnion.h Source File

zenilib 0.5.3.0

- Main Page
- Modules
- Namespaces
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ConstantUnion.h
Go to the documentation of this file.
1 //
2 // Copyright (c) 2002-2013 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6
7 #ifndef _CONSTANT_UNION_INCLUDED_
8 #define _CONSTANT_UNION_INCLUDED_
9
10 #include <assert.h>
11
12 class ConstantUnion {
13 public:
14 POOL_ALLOCATOR_NEW_DELETE();
15 ConstantUnion()
16 {
17 iConst = 0;
18 type = EbtVoid;
19 }
20
21 void setIConst(int i) {iConst = i; type = EbtInt; }
22 void setFConst(float f) {fConst = f; type = EbtFloat; }
23 void setBConst(bool b) {bConst = b; type = EbtBool; }
24
25 int getIConst() { return iConst; }
26 float getFConst() { return fConst; }
27 bool getBConst() { return bConst; }
28 int getIConst() const { return iConst; }
29 float getFConst() const { return fConst; }
30 bool getBConst() const { return bConst; }
31
32 bool operator==(const int i) const
33 {
34 return i == iConst;
35 }
36
37 bool operator==(const float f) const
38 {
39 return f == fConst;
40 }
41
42 bool operator==(const bool b) const
43 {
44 return b == bConst;
45 }
46
47 bool operator==(const ConstantUnion& constant) const
48 {
49 if (constant.type != type)
50 return false;
51
52 switch (type) {
53 case EbtInt:
54 return constant.iConst == iConst;
55 case EbtFloat:
56 return constant.fConst == fConst;
57 case EbtBool:
58 return constant.bConst == bConst;
59 default:
60 return false;
61 }
62 }
63
64 bool operator!=(const int i) const
65 {
66 return !operator==(i);
67 }
68
69 bool operator!=(const float f) const
70 {
71 return !operator==(f);
72 }
73
74 bool operator!=(const bool b) const
75 {
76 return !operator==(b);
77 }
78
79 bool operator!=(const ConstantUnion& constant) const
80 {
81 return !operator==(constant);
82 }
83
84 bool operator>(const ConstantUnion& constant) const
85 {
86 assert(type == constant.type);
87 switch (type) {
88 case EbtInt:
89 return iConst > constant.iConst;
90 case EbtFloat:
91 return fConst > constant.fConst;
92 default:
93 return false; // Invalid operation, handled at semantic analysis
94 }
95 }
96
97 bool operator<(const ConstantUnion& constant) const
98 {
99 assert(type == constant.type);
100 switch (type) {
101 case EbtInt:
102 return iConst < constant.iConst;
103 case EbtFloat:
104 return fConst < constant.fConst;
105 default:
106 return false; // Invalid operation, handled at semantic analysis
107 }
108 }
109
110 ConstantUnion operator+(const ConstantUnion& constant) const
111 {
112 ConstantUnion returnValue;
113 assert(type == constant.type);
114 switch (type) {
115 case EbtInt: returnValue.setIConst(iConst + constant.iConst); break;
116 case EbtFloat: returnValue.setFConst(fConst + constant.fConst); break;
117 default: assert(false && "Default missing");
118 }
119
120 return returnValue;
121 }
122
123 ConstantUnion operator-(const ConstantUnion& constant) const
124 {
125 ConstantUnion returnValue;
126 assert(type == constant.type);
127 switch (type) {
128 case EbtInt: returnValue.setIConst(iConst - constant.iConst); break;
129 case EbtFloat: returnValue.setFConst(fConst - constant.fConst); break;
130 default: assert(false && "Default missing");
131 }
132
133 return returnValue;
134 }
135
136 ConstantUnion operator*(const ConstantUnion& constant) const
137 {
138 ConstantUnion returnValue;
139 assert(type == constant.type);
140 switch (type) {
141 case EbtInt: returnValue.setIConst(iConst * constant.iConst); break;
142 case EbtFloat: returnValue.setFConst(fConst * constant.fConst); break;
143 default: assert(false && "Default missing");
144 }
145
146 return returnValue;
147 }
148
149 ConstantUnion operator%(const ConstantUnion& constant) const
150 {
151 ConstantUnion returnValue;
152 assert(type == constant.type);
153 switch (type) {
154 case EbtInt: returnValue.setIConst(iConst % constant.iConst); break;
155 default: assert(false && "Default missing");
156 }
157
158 return returnValue;
159 }
160
161 ConstantUnion operator>>(const ConstantUnion& constant) const
162 {
163 ConstantUnion returnValue;
164 assert(type == constant.type);
165 switch (type) {
166 case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break;
167 default: assert(false && "Default missing");
168 }
169
170 return returnValue;
171 }
172
173 ConstantUnion operator<<(const ConstantUnion& constant) const
174 {
175 ConstantUnion returnValue;
176 assert(type == constant.type);
177 switch (type) {
178 case EbtInt: returnValue.setIConst(iConst << constant.iConst); break;
179 default: assert(false && "Default missing");
180 }
181
182 return returnValue;
183 }
184
185 ConstantUnion operator&(const ConstantUnion& constant) const
186 {
187 ConstantUnion returnValue;
188 assert(type == constant.type);
189 switch (type) {
190 case EbtInt: returnValue.setIConst(iConst & constant.iConst); break;
191 default: assert(false && "Default missing");
192 }
193
194 return returnValue;
195 }
196
197 ConstantUnion operator|(const ConstantUnion& constant) const
198 {
199 ConstantUnion returnValue;
200 assert(type == constant.type);
201 switch (type) {
202 case EbtInt: returnValue.setIConst(iConst | constant.iConst); break;
203 default: assert(false && "Default missing");
204 }
205
206 return returnValue;
207 }
208
209 ConstantUnion operator^(const ConstantUnion& constant) const
210 {
211 ConstantUnion returnValue;
212 assert(type == constant.type);
213 switch (type) {
214 case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break;
215 default: assert(false && "Default missing");
216 }
217
218 return returnValue;
219 }
220
221 ConstantUnion operator&&(const ConstantUnion& constant) const
222 {
223 ConstantUnion returnValue;
224 assert(type == constant.type);
225 switch (type) {
226 case EbtBool: returnValue.setBConst(bConst && constant.bConst); break;
227 default: assert(false && "Default missing");
228 }
229
230 return returnValue;
231 }
232
233 ConstantUnion operator||(const ConstantUnion& constant) const
234 {
235 ConstantUnion returnValue;
236 assert(type == constant.type);
237 switch (type) {
238 case EbtBool: returnValue.setBConst(bConst || constant.bConst); break;
239 default: assert(false && "Default missing");
240 }
241
242 return returnValue;
243 }
244
245 TBasicType getType() const { return type; }
246 private:
247
248 union {
249 int iConst; // used for ivec, scalar ints
250 bool bConst; // used for bvec, scalar bools
251 float fConst; // used for vec, mat, scalar floats
252 } ;
253
254 TBasicType type;
255 };
256
257 #endif // _CONSTANT_UNION_INCLUDED_
ConstantUnion::operator==
bool operator==(const int i) const
Definition: ConstantUnion.h:32
ConstantUnion::getBConst
bool getBConst()
Definition: ConstantUnion.h:27
EbtVoid
Definition: BaseTypes.h:38
type
GLint GLenum GLsizei GLsizei GLsizei GLint GLenum GLenum type
Definition: gl2ext.h:845
ConstantUnion::operator!=
bool operator!=(const int i) const
Definition: ConstantUnion.h:64
ConstantUnion::getIConst
int getIConst()
Definition: ConstantUnion.h:25
f
GLclampf f
Definition: glew.h:3390
ConstantUnion::operator<
bool operator<(const ConstantUnion &constant) const
Definition: ConstantUnion.h:97
ConstantUnion::getBConst
bool getBConst() const
Definition: ConstantUnion.h:30
ConstantUnion::operator-
ConstantUnion operator-(const ConstantUnion &constant) const
Definition: ConstantUnion.h:123
ConstantUnion::fConst
float fConst
Definition: ConstantUnion.h:251
ConstantUnion::operator!=
bool operator!=(const ConstantUnion &constant) const
Definition: ConstantUnion.h:79
ConstantUnion::getFConst
float getFConst() const
Definition: ConstantUnion.h:29
assert
#define assert(x)
Definition: SDL_malloc.c:1234
EbtInt
Definition: BaseTypes.h:40
ConstantUnion::operator||
ConstantUnion operator||(const ConstantUnion &constant) const
Definition: ConstantUnion.h:233
EbtFloat
Definition: BaseTypes.h:39
ConstantUnion::operator%
ConstantUnion operator%(const ConstantUnion &constant) const
Definition: ConstantUnion.h:149
ConstantUnion::operator&
ConstantUnion operator&(const ConstantUnion &constant) const
Definition: ConstantUnion.h:185
ConstantUnion::setFConst
void setFConst(float f)
Definition: ConstantUnion.h:22
ConstantUnion::getFConst
float getFConst()
Definition: ConstantUnion.h:26
ConstantUnion::iConst
int iConst
Definition: ConstantUnion.h:249
ConstantUnion::operator|
ConstantUnion operator|(const ConstantUnion &constant) const
Definition: ConstantUnion.h:197
EbtBool
Definition: BaseTypes.h:41
ConstantUnion::setIConst
void setIConst(int i)
Definition: ConstantUnion.h:21
ConstantUnion::setBConst
void setBConst(bool b)
Definition: ConstantUnion.h:23
ConstantUnion::getIConst
int getIConst() const
Definition: ConstantUnion.h:28
ConstantUnion::operator!=
bool operator!=(const bool b) const
Definition: ConstantUnion.h:74
ConstantUnion::operator>>
ConstantUnion operator>>(const ConstantUnion &constant) const
Definition: ConstantUnion.h:161
ConstantUnion::POOL_ALLOCATOR_NEW_DELETE
POOL_ALLOCATOR_NEW_DELETE()
ConstantUnion::getType
TBasicType getType() const
Definition: ConstantUnion.h:245
ConstantUnion::operator+
ConstantUnion operator+(const ConstantUnion &constant) const
Definition: ConstantUnion.h:110
ConstantUnion
Definition: ConstantUnion.h:12
TBasicType
TBasicType
Definition: BaseTypes.h:36
ConstantUnion::operator==
bool operator==(const bool b) const
Definition: ConstantUnion.h:42
ConstantUnion::operator*
ConstantUnion operator*(const ConstantUnion &constant) const
Definition: ConstantUnion.h:136
ConstantUnion::operator!=
bool operator!=(const float f) const
Definition: ConstantUnion.h:69
ConstantUnion::operator&&
ConstantUnion operator&&(const ConstantUnion &constant) const
Definition: ConstantUnion.h:221
ConstantUnion::operator==
bool operator==(const ConstantUnion &constant) const
Definition: ConstantUnion.h:47
b
GLdouble GLdouble GLdouble b
Definition: glew.h:8383
ConstantUnion::operator==
bool operator==(const float f) const
Definition: ConstantUnion.h:37
i
int i
Definition: pngrutil.c:1377
ConstantUnion::bConst
bool bConst
Definition: ConstantUnion.h:250
ConstantUnion::operator<<
ConstantUnion operator<<(const ConstantUnion &constant) const
Definition: ConstantUnion.h:173
ConstantUnion::operator^
ConstantUnion operator^(const ConstantUnion &constant) const
Definition: ConstantUnion.h:209
ConstantUnion::operator>
bool operator>(const ConstantUnion &constant) const
Definition: ConstantUnion.h:84
ConstantUnion::ConstantUnion
ConstantUnion()
Definition: ConstantUnion.h:15