version 1.14, 2008/02/08 19:24:22
|
version 1.15, 2008/08/07 18:04:01
|
|
|
| |
for (Uint32 i = 0, n = _operations.size(); i < n; i++) | for (Uint32 i = 0, n = _operations.size(); i < n; i++) |
{ | { |
WQLOperation op = _operations[i]; |
WQLOperation operation = _operations[i]; |
| |
switch (op) |
switch (operation) |
{ | { |
case WQL_OR: | case WQL_OR: |
{ | { |
PEGASUS_ASSERT(stack.size() >= 2); | PEGASUS_ASSERT(stack.size() >= 2); |
| |
Boolean op1 = stack.top(); |
Boolean operand1 = stack.top(); |
stack.pop(); | stack.pop(); |
| |
Boolean op2 = stack.top(); |
Boolean operand2 = stack.top(); |
| |
stack.top() = op1 || op2; |
stack.top() = operand1 || operand2; |
break; | break; |
} | } |
| |
|
|
{ | { |
PEGASUS_ASSERT(stack.size() >= 2); | PEGASUS_ASSERT(stack.size() >= 2); |
| |
Boolean op1 = stack.top(); |
Boolean operand1 = stack.top(); |
stack.pop(); | stack.pop(); |
| |
Boolean op2 = stack.top(); |
Boolean operand2 = stack.top(); |
| |
stack.top() = op1 && op2; |
stack.top() = operand1 && operand2; |
break; | break; |
} | } |
| |
|
|
{ | { |
PEGASUS_ASSERT(stack.size() >= 1); | PEGASUS_ASSERT(stack.size() >= 1); |
| |
Boolean op = stack.top(); |
Boolean operand = stack.top(); |
stack.top() = !op; |
stack.top() = !operand; |
break; | break; |
} | } |
| |
|
|
// operation: | // operation: |
// | // |
| |
stack.push(_Evaluate(lhs, rhs, op)); |
stack.push(_Evaluate(lhs, rhs, operation)); |
break; | break; |
} | } |
| |
|
|
{ | { |
Array<WQLOperand> whereOperands(_operands); | Array<WQLOperand> whereOperands(_operands); |
PEGASUS_ASSERT(whereOperands.size() >= 1); | PEGASUS_ASSERT(whereOperands.size() >= 1); |
WQLOperand& op = whereOperands[j++]; |
WQLOperand& operand = whereOperands[j++]; |
_ResolveProperty(op, source); |
_ResolveProperty(operand, source); |
stack.push(op.getType() == WQLOperand::NULL_VALUE); |
stack.push(operand.getType() == WQLOperand::NULL_VALUE); |
break; | break; |
} | } |
| |
|
|
{ | { |
Array<WQLOperand> whereOperands(_operands); | Array<WQLOperand> whereOperands(_operands); |
PEGASUS_ASSERT(whereOperands.size() >= 1); | PEGASUS_ASSERT(whereOperands.size() >= 1); |
WQLOperand& op = whereOperands[j++]; |
WQLOperand& operand = whereOperands[j++]; |
_ResolveProperty(op, source); |
_ResolveProperty(operand, source); |
stack.push(op.getType() != WQLOperand::NULL_VALUE); |
stack.push(operand.getType() != WQLOperand::NULL_VALUE); |
break; | break; |
} | } |
} | } |