コード例 #1
0
ファイル: Semantics.cs プロジェクト: samplet/CreamCheese
        EvaluateComplexOperation(IToken x, IToken y, Tokens o)
        {
            Variable   vx = ConvertTokenToVariable(x);
            Variable   vy = ConvertTokenToVariable(y);
            Variable   vr;
            string     vname;
            Constraint c;

            switch (o)
            {
            case Tokens.EQ:
                return(new ConstraintToken(new Equals(_network, vx, vy)));

            case Tokens.NEQ:
                return(new ConstraintToken(new NotEquals(_network, vx, vy)));

            case Tokens.GT:
                c = new IntComparison(_network, IntComparison.Gt, vx, vy);
                return(new ConstraintToken(c));

            case Tokens.GEQ:
                c = new IntComparison(_network, IntComparison.Ge, vx, vy);
                return(new ConstraintToken(c));

            case Tokens.LT:
                c = new IntComparison(_network, IntComparison.Lt, vx, vy);
                return(new ConstraintToken(c));

            case Tokens.LEQ:
                c = new IntComparison(_network, IntComparison.Le, vx, vy);
                return(new ConstraintToken(c));

            case Tokens.PLUS:
                vname = "(" + vx.ToString() + " + " + vy.ToString() + ")";
                vr    = new IntVariable(_network, vname);
                new IntArith(_network, IntArith.Add, vr, vx, vy);
                return(new VariableToken(vr));

            case Tokens.MINUS:
                vname = "(" + vx.ToString() + " - " + vy.ToString() + ")";
                vr    = new IntVariable(_network, vname);
                new IntArith(_network, IntArith.Subtract, vr, vx, vy);
                return(new VariableToken(vr));

            case Tokens.MULT:
                vname = "(" + vx.ToString() + " * " + vy.ToString() + ")";
                vr    = new IntVariable(_network, vname);
                new IntArith(_network, IntArith.MULTIPLY, vr, vx, vy);
                return(new VariableToken(vr));

            default:
                throw new ArgumentException();
            }
        }
コード例 #2
0
        // Takes all loadables and displays loadable panels
        public void DrawLoadablePanels()
        {
            LoadablePanels.Children.Clear();
            LoadParser level = GameState.GetLevel();

            if (level is null)
            {
                return;
            }

            IntComparison.QSort(level.Loadables);

            foreach (Loadable loadable in level.Loadables)
            {
                LoadablePanels.Children.Add((UIElement)loadable.GetLoadablePanel());
            }
        }