//******************************************************************************************************
// IChannelValue.cs - Gbtc
//
// Copyright © 2012, Grid Protection Alliance. All Rights Reserved.
//
// Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
// the NOTICE file distributed with this work for additional information regarding copyright ownership.
// The GPA licenses this file to you under the MIT License (MIT), the "License"; you may
// not use this file except in compliance with the License. You may obtain a copy of the License at:
//
// http://www.opensource.org/licenses/MIT
//
// Unless agreed to in writing, the subject software distributed under the License is distributed on an
// "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
// License for the specific language governing permissions and limitations.
//
// Code Modification History:
// ----------------------------------------------------------------------------------------------------
// 02/18/2005 - J. Ritchie Carroll
// Generated original version of source code.
// 08/07/2009 - Josh L. Patterson
// Edited Comments.
// 09/15/2009 - Stephen C. Wills
// Added new header and license agreement.
// 12/17/2012 - Starlynn Danyelle Gilliam
// Modified Header.
//
//******************************************************************************************************
using System.Runtime.Serialization;
using GSF.TimeSeries;
namespace GSF.PhasorProtocols
{
///
/// Represents a protocol independent interface representation any kind of data value.
///
///
/// Each instance of will have a more specific derived implementation (e.g., and ),
/// these specific implementations of will be referenced children of a .
/// The uses the specified type to define its properties.
///
/// Specific type that represents the definition.
public interface IChannelValue : IChannel, ISerializable where T : IChannelDefinition
{
///
/// Gets the parent of this .
///
IDataCell Parent { get; set; }
///
/// Gets the associated with this .
///
T Definition { get; set; }
///
/// Gets the of this typically derived from .
///
DataFormat DataFormat { get; }
///
/// Gets text based label of this typically derived from .
///
string Label { get; }
///
/// Gets boolean value that determines if none of the composite values of have been assigned a value.
///
/// True, if no composite values have been assigned a value; otherwise, false.
bool IsEmpty { get; }
///
/// Gets the composite values of this as an array of values.
///
IMeasurement[] Measurements { get; }
///
/// Gets total number of composite values that this provides.
///
int CompositeValueCount { get; }
///
/// Gets the specified composite value of this .
///
/// Index of composite value to retrieve.
/// A representing the composite value.
double GetCompositeValue(int index);
}
}