tempNode->setLine(getLine());
return tempNode;
-
+ case EOpMax:
+ tempConstArray = new ConstantUnion[objectSize];
+ {// support MSVC++6.0
+ for (int i = 0; i < objectSize; i++)
+ tempConstArray[i] = unionArray[i] > rightUnionArray[i] ? unionArray[i] : rightUnionArray[i];
+ }
+ break;
+ case EOpMin:
+ tempConstArray = new ConstantUnion[objectSize];
+ {// support MSVC++6.0
+ for (int i = 0; i < objectSize; i++)
+ tempConstArray[i] = unionArray[i] < rightUnionArray[i] ? unionArray[i] : rightUnionArray[i];
+ }
+ break;
default:
return 0;
}
functionCallLValueErrorCheck(fnCandidate, aggregate);
callNode = aggregate;
+
+ if(fnCandidate->getParamCount() == 2)
+ {
+ TIntermSequence ¶meters = paramNode->getAsAggregate()->getSequence();
+ TIntermTyped *left = parameters[0]->getAsTyped();
+ TIntermTyped *right = parameters[1]->getAsTyped();
+
+ TIntermConstantUnion *leftTempConstant = left->getAsConstantUnion();
+ TIntermConstantUnion *rightTempConstant = right->getAsConstantUnion();
+ if (leftTempConstant && rightTempConstant)
+ {
+ TIntermTyped *typedReturnNode = leftTempConstant->fold(op, rightTempConstant, infoSink());
+
+ if(typedReturnNode)
+ {
+ callNode = typedReturnNode;
+ }
+ }
+ }
}
}
else