47 stream <<
size <<
"X" <<
size <<
" matrix of ";
49 stream << size <<
"-component vector of ";
65 for (i = 0; i <
depth; ++
i)
92 switch (node->
getOp()) {
93 case EOpAssign: out <<
"move second child to first child";
break;
94 case EOpInitialize: out <<
"initialize first child with second child";
break;
95 case EOpAddAssign: out <<
"add second child into first child";
break;
96 case EOpSubAssign: out <<
"subtract second child into first child";
break;
97 case EOpMulAssign: out <<
"multiply second child into first child";
break;
102 case EOpDivAssign: out <<
"divide second child into first child";
break;
108 case EOpAdd: out <<
"add";
break;
109 case EOpSub: out <<
"subtract";
break;
110 case EOpMul: out <<
"component-wise multiply";
break;
111 case EOpDiv: out <<
"divide";
break;
112 case EOpEqual: out <<
"Compare Equal";
break;
113 case EOpNotEqual: out <<
"Compare Not Equal";
break;
114 case EOpLessThan: out <<
"Compare Less Than";
break;
128 default: out <<
"<unknown op>";
144 switch (node->
getOp()) {
163 case EOpSin: out <<
"sine";
break;
164 case EOpCos: out <<
"cosine";
break;
165 case EOpTan: out <<
"tangent";
break;
166 case EOpAsin: out <<
"arc sine";
break;
167 case EOpAcos: out <<
"arc cosine";
break;
168 case EOpAtan: out <<
"arc tangent";
break;
170 case EOpExp: out <<
"exp";
break;
171 case EOpLog: out <<
"log";
break;
172 case EOpExp2: out <<
"exp2";
break;
173 case EOpLog2: out <<
"log2";
break;
174 case EOpSqrt: out <<
"sqrt";
break;
177 case EOpAbs: out <<
"Absolute value";
break;
178 case EOpSign: out <<
"Sign";
break;
179 case EOpFloor: out <<
"Floor";
break;
180 case EOpCeil: out <<
"Ceiling";
break;
181 case EOpFract: out <<
"Fraction";
break;
189 case EOpAny: out <<
"any";
break;
190 case EOpAll: out <<
"all";
break;
194 out <<
"Bad unary op";
210 out <<
"node is still EOpNull!";
216 switch (node->
getOp()) {
217 case EOpSequence: out <<
"Sequence\n";
return true;
218 case EOpComma: out <<
"Comma\n";
return true;
240 case EOpLessThan: out <<
"Compare Less Than";
break;
247 case EOpMod: out <<
"mod";
break;
248 case EOpPow: out <<
"pow";
break;
250 case EOpAtan: out <<
"arc tangent";
break;
252 case EOpMin: out <<
"min";
break;
253 case EOpMax: out <<
"max";
break;
254 case EOpClamp: out <<
"clamp";
break;
255 case EOpMix: out <<
"mix";
break;
256 case EOpStep: out <<
"step";
break;
260 case EOpDot: out <<
"dot-product";
break;
261 case EOpCross: out <<
"cross-product";
break;
265 case EOpMul: out <<
"component-wise multiply";
break;
271 out <<
"Bad aggregation op";
288 out <<
"Test condition and select";
294 out <<
"Condition\n";
299 out <<
"true case\n";
302 out <<
"true case is null\n";
306 out <<
"false case\n";
321 for (
size_t i = 0;
i <
size;
i++) {
330 out <<
" (" <<
"const bool" <<
")";
335 out <<
" (const float)\n";
339 out <<
" (const int)\n";
354 out <<
"Loop with condition ";
357 out <<
"tested first\n";
363 out <<
"Loop Condition\n";
366 out <<
"No loop condition\n";
370 out <<
"Loop Body\n";
373 out <<
"No loop body\n";
377 out <<
"Loop Terminal Expression\n";
393 case EOpKill: out <<
"Branch: Kill";
break;
394 case EOpBreak: out <<
"Branch: Break";
break;
395 case EOpContinue: out <<
"Branch: Continue";
break;
396 case EOpReturn: out <<
"Branch: Return";
break;
397 default: out <<
"Branch: Unknown Branch";
break;
401 out <<
" with expression\n";
421 TOutputTraverser it(infoSink.
info);
GLsizei GLenum GLboolean sink
void message(TPrefixType p, const TSourceLoc &loc, const char *m)
virtual bool visitAggregate(Visit visit, TIntermAggregate *)
TIntermNode * getTrueBlock() const
TIntermTyped * getCondition()
TString getCompleteString() const
TIntermNode * getFalseBlock() const
const char * getQualifierString() const
virtual bool visitBranch(Visit visit, TIntermBranch *)
const char * getPrecisionString() const
virtual bool visitUnary(Visit visit, TIntermUnary *)
void OutputTreeText(TInfoSinkBase &sink, TIntermNode *node, const int depth)
virtual void visitSymbol(TIntermSymbol *)
virtual bool visitBinary(Visit visit, TIntermBinary *)
std::basic_ostringstream< char, std::char_traits< char >, TStringAllocator > TStringStream
virtual void traverse(TIntermTraverser *)=0
TIntermNode * getCondition() const
const TSourceLoc & getLine() const
const TType & getType() const
ConstantUnion * getUnionArrayPointer() const
TBasicType getType() const
TIntermTyped * getExpression()
const TString & getName() const
GLint GLenum GLsizei GLsizei GLsizei depth
std::basic_string< char, std::char_traits< char >, TStringAllocator > TString
virtual bool visitLoop(Visit visit, TIntermLoop *)
virtual bool visitSelection(Visit visit, TIntermSelection *)
virtual void visitConstantUnion(TIntermConstantUnion *)
TIntermTyped * getExpression()
TString getCompleteString() const
size_t getObjectSize() const
const char * getBasicString() const
const TString & getSymbol() const
void location(int file, int line)
void prefix(TPrefixType p)
TLoopType getType() const