Beispiel #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;
            }
        }
Beispiel #2
0
        void SetRealNumberArrayVariableValue(VariableNameToken variableNameToken, ValueTokenArray indicies, RealValueToken value)
        {
            if (realNumberVariableArray.TryGetValue(variableNameToken.Name, out var numberArray) == false)
            {
                numberArray = CreateRealNumberArrayVariable(variableNameToken,
                                                            ConvertTokensArrayToIntArray(indicies, AdjustDimensionForUndimensionedCreate));
            }

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