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; } }
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); }