// Copyright Keysight Technologies 2012-2019 // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, you can obtain one at http://mozilla.org/MPL/2.0/. using System; namespace OpenTap { /// /// Identifies that units should be assigned to a property. /// [AttributeUsage(AttributeTargets.Property)] public class UnitAttribute : Attribute, IAnnotation, IParameter { /// /// The unit e.g "Hz". /// public string Unit { get; protected set; } /// /// Whether to use engineering prefix. E.g 1000000 Hz -> 1 MHz /// public bool UseEngineeringPrefix { get; protected set; } /// /// Pre scaling of values. /// public double PreScaling { get; protected set; } /// /// The format argument to string.Format. /// public string StringFormat { get; protected set; } /// /// Whether to use ranges to show arrays of numbers. For example, show 1, 2, 3, 4 as 1 : 4. /// public bool UseRanges { get; protected set; } /// Constructor for . /// The unit e.g "Hz". /// Whether to use engineering prefix. E.g 1000000 Hz -> 1 MHz. /// The format argument to string.Format. /// Whether to use ranges to show arrays of numbers. For example, show 1, 2, 3, 4 as 1 : 4. /// Pre scaling of values. public UnitAttribute(string Unit, bool UseEngineeringPrefix = false, string StringFormat = "", bool UseRanges = true, double PreScaling = 1.0) { this.Unit = Unit; this.UseEngineeringPrefix = UseEngineeringPrefix; this.PreScaling = PreScaling; this.StringFormat = StringFormat; this.UseRanges = UseRanges; } string IAttributedObject.ObjectType => "OpenTap.Unit"; string IParameter.Group => ""; IConvertible IParameter.Value => Unit; string IAttributedObject.Name => "Unit"; } }