using System.Runtime.InteropServices;
using QC.QsprTestObjects.Parameters;

namespace QC.QSPRSchedulerWrapper;

[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
[ProgId("QSPR.ParameterInfo")]
public class ParameterInfo : IParameterInfo
{
	private string parameterName;

	private string parameterValue;

	private string unit;

	private string upperLimit;

	private string lowerLimit;

	private string dataType;

	private string paramMode;

	public string ParameterName => parameterName;

	public string ParameterValue => parameterValue;

	public string Unit => unit;

	public string UpperLimit => upperLimit;

	public string LowerLimit => lowerLimit;

	public string DataType => dataType;

	public string ParamMode => paramMode;

	public ParameterInfo(string parameterName, string parameterValue, string unit, string upperLimit, string lowerLimit, string dataType, string paramMode)
	{
		this.parameterName = parameterName;
		this.parameterValue = parameterValue;
		this.unit = unit;
		this.upperLimit = upperLimit;
		this.lowerLimit = lowerLimit;
		this.dataType = dataType;
		this.paramMode = paramMode;
	}

	public ParameterInfo(ParameterCls param)
	{
		parameterName = param.Name;
		unit = param.Unit;
		dataType = param.DataTypeAsString;
		paramMode = param.IOTypeAsString;
		parameterValue = param.Value;
		upperLimit = param.UpperLimit;
		lowerLimit = param.LowerLimit;
	}
}
