| 663 | m_isSet = false; |
| 664 | } |
| 665 | void HLSLCompiler::translateUnaryExpression(M4::HLSLUnaryExpression* expr) |
| 666 | { |
| 667 | // check if pre or post increment/decrement |
| 668 | bool pre = true, isIncDec = false; |
| 669 | switch (expr->unaryOp) |
| 670 | { |
| 671 | case M4::HLSLUnaryOp_PostIncrement: isIncDec = true; pre = false; break; |
| 672 | case M4::HLSLUnaryOp_PostDecrement: isIncDec = true; pre = false; break; |
| 673 | case M4::HLSLUnaryOp_PreIncrement: isIncDec = true; break; |
| 674 | case M4::HLSLUnaryOp_PreDecrement: isIncDec = true; break; |
| 675 | } |
| 676 | |
| 677 | if (isIncDec && pre) |
| 678 | m_usePointer = true; |
| 679 | translateExpression(expr->expression); |
| 680 | m_usePointer = false; |
| 681 | |
| 682 | // add the pointer |
| 683 | if (isIncDec && !pre) { |
| 684 | m_usePointer = true; |
| 685 | translateExpression(expr->expression); |
| 686 | m_usePointer = false; |
| 687 | } |
| 688 | |
| 689 | switch (expr->unaryOp) |
| 690 | { |
| 691 | case M4::HLSLUnaryOp_Negative: m_gen.Function.Negate(); break; |
| 692 | case M4::HLSLUnaryOp_Positive: break; // hmm.. do nothing? |
| 693 | case M4::HLSLUnaryOp_Not: m_gen.Function.Not(); break; |
| 694 | case M4::HLSLUnaryOp_PostIncrement: |
| 695 | case M4::HLSLUnaryOp_PreIncrement: m_gen.Function.Increment(); break; |
| 696 | case M4::HLSLUnaryOp_PostDecrement: |
| 697 | case M4::HLSLUnaryOp_PreDecrement: m_gen.Function.Decrement(); break; |
| 698 | case M4::HLSLUnaryOp_BitNot: m_gen.Function.BitNot(); break; |
| 699 | } |
| 700 | |
| 701 | // add the incremented/dec value to the stack again |
| 702 | if (isIncDec && pre) |
| 703 | translateExpression(expr->expression); |
| 704 | |
| 705 | // remove the pointer in the post increment/dec |
| 706 | if (isIncDec && !pre) |
| 707 | m_gen.Function.PopStack(); |
| 708 | } |
| 709 | void HLSLCompiler::translateIdentifierExpression(M4::HLSLIdentifierExpression* expression) |
| 710 | { |
| 711 | const std::string vname = std::string(expression->name); |
nothing calls this directly
no outgoing calls
no test coverage detected