Exemplo n.º 1
0
        void SetArrayVariableValue(VariableNameToken variableNameToken, ValueTokenArray indicies, ValueToken value)
        {
            switch (variableNameToken.VariableType)
            {
            case VariableValueType.String:
                var stringValueToken = (StringValueToken)value;
                SetStringArrayVariableValue(variableNameToken, indicies, stringValueToken);
                break;

            case VariableValueType.RealNumber:
                if (value is IntegerValueToken integerValueToken)
                {
                    value = new RealValueToken(integerValueToken.RealValue);
                }

                SetRealNumberArrayVariableValue(variableNameToken, indicies, (RealValueToken)value);
                break;

            case VariableValueType.IntegerNumber:
                if (value is RealValueToken realValueToken)
                {
                    IntegerValueToken.CheckValueBounds(realValueToken.RealValue);
                    value = new IntegerValueToken((Int16)realValueToken.IntValue);
                }
                SetIntegerNumberArrayVariableValue(variableNameToken, indicies, (IntegerValueToken)value);
                break;
            }
        }
Exemplo n.º 2
0
        void SetIntegerNumberValue(VariableNameToken nameToken, ValueToken valueToken)
        {
            if (valueToken is StringValueToken)
            {
                throw new Exceptions.TypeMismatchException();
            }

            var numberToken = (NumericValueToken)valueToken;

            if (numberToken is IntegerValueToken integerToken)
            {
                integerVariables[nameToken.Name] = integerToken;
                return;
            }

            var realToken = (RealValueToken)valueToken;

            IntegerValueToken.CheckValueBounds(realToken.Value);

            integerVariables[nameToken.Name] = new IntegerValueToken((Int16)realToken.Value);
        }
Exemplo n.º 3
0
        void SetIntegerNumberArrayVariableValue(VariableNameToken variableNameToken, ValueTokenArray indicies, IntegerValueToken value)
        {
            if (integerVariableArray.TryGetValue(variableNameToken.Name, out var numberArray) == false)
            {
                numberArray = CreateIntegerNumberArrayVariable(variableNameToken,
                                                               ConvertTokensArrayToIntArray(indicies, AdjustDimensionForUndimensionedCreate));
            }

            numberArray.SetValue(ConvertTokensArrayToIntArray(indicies), value);
        }