Example #1
0
        public void RelationalTypeCMP(RelationalType type, string label)
        {
            switch (type)
            {
            case RelationalType.Equal:
                assembly.JE(label);

                break;

            case RelationalType.NotEqualOrUnordered:
                assembly.JNE(label);

                break;

            case RelationalType.LessThan:
                assembly.JL(label);

                break;

            case RelationalType.LessThanOrEqual:
                assembly.JLE(label);

                break;

            case RelationalType.GreaterThan:
                assembly.JG(label);

                break;

            case RelationalType.GreaterThanOrEqual:
                assembly.JGE(label);

                break;

            case RelationalType.LessThanUnsignedOrUnordered:
                assembly.JB(label);

                break;

            case RelationalType.LessThanOrEqualUnsignedOrUnordered:
                assembly.JBE(label);

                break;

            case RelationalType.GreaterThanUnsignedOrUnordered:
                assembly.JA(label);

                break;

            case RelationalType.GreaterThanOrEqualUnsignedOrUnordered:
                assembly.JAE(label);

                break;

            default:
                throw new NotImplementedEngineException("'" + type + "' is not supported.");
            }
        }
Example #2
0
        public RelationalType MakeRelational(RelationalOperator op, ArithmeticExpression lhs, ArithmeticExpression rhs)
        {
            RelationalType newRelational = new RelationalType();

            newRelational.AddLHSArithmeticExpression(lhs);
            newRelational.AddRelationalOperator(op);
            newRelational.AddRHSArithmeticExpression(rhs);

            return(newRelational);
        }
Example #3
0
        public LogicalExpression MakeRelationalExperssion(string op, ArithmeticExpression lhs, ArithmeticExpression rhs)
        {
            RelationalOperator relationalOp = new RelationalOperator();

            if (op == "==")
            {
                relationalOp.AddEquals(new Altova.Types.SchemaString("Equals"));
            }
            else if (op == "!=")
            {
                relationalOp.AddNotEquals(new Altova.Types.SchemaString("NotEquals"));
            }
            else if (op == "<")
            {
                relationalOp.AddLessThan(new Altova.Types.SchemaString("LessThan"));
            }
            else if (op == "<=")
            {
                relationalOp.AddLessThanOrEquals(new Altova.Types.SchemaString("LessThanOrEquals"));
            }
            else if (op == ">")
            {
                relationalOp.AddGreaterThan(new Altova.Types.SchemaString("GreaterThan"));
            }
            else if (op == "<=")
            {
                relationalOp.AddGreaterThanOrEquals(new Altova.Types.SchemaString("GreaterThanOrEquals"));
            }

            RelationalType relationalExpression = MakeRelational(relationalOp, lhs, rhs);

            LogicalExpression newLogical = new LogicalExpression();

            newLogical.AddRelational(relationalExpression);

            return(newLogical);
        }
 public ExpressionOperatorRelational(RelationalType type)
 {
     Type = type;
 }
Example #5
0
        private void RelationalTypeCMP(RelationalType type, string okLabel, string errorLabel)
        {
            switch (type)
            {
            case RelationalType.Equal:
                assembly.JNE(errorLabel);

                break;

            case RelationalType.NotEqualOrUnordered:
                assembly.JNE(okLabel);

                break;

            case RelationalType.LessThan:
                assembly.JG(errorLabel);

                assembly.JL(okLabel);

                break;

            case RelationalType.LessThanUnsignedOrUnordered:
                assembly.JA(errorLabel);

                assembly.JB(okLabel);

                break;

            case RelationalType.LessThanOrEqual:
                assembly.JG(errorLabel);

                assembly.JL(okLabel);

                break;

            case RelationalType.LessThanOrEqualUnsignedOrUnordered:
                assembly.JA(errorLabel);

                assembly.JB(okLabel);

                break;

            case RelationalType.GreaterThan:
                assembly.JL(errorLabel);

                assembly.JG(okLabel);

                break;

            case RelationalType.GreaterThanUnsignedOrUnordered:
                assembly.JB(errorLabel);

                assembly.JA(okLabel);

                break;

            case RelationalType.GreaterThanOrEqual:
                assembly.JL(errorLabel);

                assembly.JG(okLabel);

                break;

            case RelationalType.GreaterThanOrEqualUnsignedOrUnordered:
                assembly.JB(errorLabel);

                assembly.JA(okLabel);

                break;

            default:
                throw new NotImplementedEngineException("'" + type + "' is not supported.");
            }
        }
Example #6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ConditionCheck"/> class.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="result">The result.</param>
 /// <param name="first">The first.</param>
 /// <param name="second">The second.</param>
 public ConditionCheck(RelationalType type, Register result, Register first, Register second)
     : base("ConditionCheck", result, new Operand [] { first, second })
 {
     this.type = type;
 }
Example #7
0
		/// <summary>
		/// Initializes a new instance of the <see cref="ConditionCheck"/> class.
		/// </summary>
		/// <param name="type">The type.</param>
		/// <param name="result">The result.</param>
		/// <param name="first">The first.</param>
		/// <param name="second">The second.</param>
		public ConditionCheck (RelationalType type, Register result, Register first, Register second)
			: base ("ConditionCheck", result, new Operand [] { first, second })
		{
			this.type = type;
		}
Example #8
0
		/// <summary>
		/// Initializes a new instance of the <see cref="Branch"/> class.
		/// </summary>
		/// <param name="type">The type.</param>
		/// <param name="first">The first.</param>
		/// <param name="second">The second.</param>
		public Branch (RelationalType type, Register first, Register second)
			: base ("Branch", null, new Operand [] { first, second })
		{
			this.type = type;
		}
Example #9
0
 /// <summary>
 /// Initializes a new instance of the <see cref="Branch"/> class.
 /// </summary>
 /// <param name="type">The type.</param>
 /// <param name="first">The first.</param>
 /// <param name="second">The second.</param>
 public Branch(RelationalType type, Register first, Register second)
     : base("Branch", null, new Operand [] { first, second })
 {
     this.type = type;
 }