Back to Serial Studio

MDF Lib: include/mdf/ichannelarray.h Source File

lib/mdflib/docs/manual/html/ichannelarray_8h_source.html

3.2.726.9 KB
Original Source

| MDF Lib 2.2

Interface against MDF 3/4 files |

Loading...

Searching...

No Matches

ichannelarray.h

Go to the documentation of this file.

1/*

2 * Copyright 2022 Ingemar Hedvall

3 * SPDX-License-Identifier: MIT

4 */

5

15#pragma once

16#include <cstdint>

17#include <vector>

18#include <optional>

19#include "mdf/iblock.h"

20

21namespace mdf {

22

23class IChannel;

24class IChannelConversion;

25class IChannelGroup;

26class IDataGroup;

27

31enum class ArrayType : uint8_t {

32Array = 0,

33ScalingAxis = 1,

34LookUp = 2,

35IntervalAxis = 3,

36ClassificationResult = 4

37};

38

40enum class ArrayStorage : uint8_t {

41CnTemplate = 0,

42CgTemplate = 1,

43DgTemplate = 2

44};

45

47namespace CaFlag {

48constexpr uint32_t DynamicSize = 0x0001;

49constexpr uint32_t InputQuantity = 0x0002;

50constexpr uint32_t OutputQuantity = 0x0004;

51constexpr uint32_t ComparisonQuantity = 0x0008;

52constexpr uint32_t Axis = 0x0010;

53constexpr uint32_t FixedAxis = 0x0020;

54constexpr uint32_t InverseLayout = 0x0040;

55constexpr uint32_t LeftOpenInterval = 0x0080;

56constexpr uint32_t StandardAxis = 0x0100;

57} // namespace CaFlag

58

60struct CaTripleReference {

61const mdf::IDataGroup* DataGroup = nullptr;

62const mdf::IChannelGroup* ChannelGroup = nullptr;

63const mdf::IChannel* Channel = nullptr;

64};

65

66

74class IChannelArray : public IBlock {

75 public:

76

77virtual void Type(ArrayType type) = 0;

78 [[nodiscard]] virtual ArrayType Type() const = 0;

79

80virtual void Storage(ArrayStorage storage) = 0;

81 [[nodiscard]] virtual ArrayStorage Storage() const = 0;

82

83virtual void Flags(uint32_t flags) = 0;

84 [[nodiscard]] virtual uint32_t Flags() const = 0;

85

86 [[nodiscard]] virtual size_t Dimensions() const = 0;

87

93virtual void Shape(const std::vector<uint64_t>& dim_sizes) = 0;

94

99 [[nodiscard]] virtual const std::vector<uint64_t>& Shape() const = 0;

100

102 [[nodiscard]] virtual uint64_t DimensionSize(size_t dimension) const = 0;

103

105 [[nodiscard]] virtual const std::vector<double>& AxisValues() const = 0;

106

108 [[nodiscard]] virtual std::vector<double>& AxisValues() = 0;

109

111 [[nodiscard]] virtual const std::vector<uint64_t>& CycleCounts() const = 0;

112

114 [[nodiscard]] virtual std::vector<uint64_t>& CycleCounts() = 0;

115

120 [[nodiscard]] uint64_t NofArrayValues() const;

121

126 [[nodiscard]] std::string DimensionAsString() const;

127

137virtual void ResizeArrays();

138

140 [[nodiscard]] const std::vector<int64_t>& DataLinks() const {

141return data_links_;

142 }

144 [[nodiscard]] std::vector<int64_t>& DataLinks();

145

147 [[nodiscard]] const std::vector<CaTripleReference>& DynamicSizeList() const {

148return dynamic_size_list_;

149 }

151 [[nodiscard]] std::vector<CaTripleReference>& DynamicSizeList();

152

154 [[nodiscard]] const std::vector<CaTripleReference>& InputQuantityList() const {

155return input_quantity_list_;

156 }

158 [[nodiscard]] std::vector<CaTripleReference>& InputQuantityList();

159

161 [[nodiscard]] const CaTripleReference& OutputQuantity() const {

162return output_quantity_;

163 }

165 [[nodiscard]] CaTripleReference& OutputQuantity() {

166return output_quantity_;

167 }

168

170 [[nodiscard]] const CaTripleReference& ComparisonQuantity() const {

171return comparison_quantity_;

172 }

174 [[nodiscard]] CaTripleReference& ComparisonQuantity() {

175return comparison_quantity_;

176 }

177

179 [[nodiscard]] const std::vector<const IChannelConversion*>& AxisConversionList() const {

180return axis_conversion_list_;

181 }

183 [[nodiscard]] std::vector<const IChannelConversion*>& AxisConversionList();

184

186 [[nodiscard]] const std::vector<CaTripleReference>& AxisList() const {

187return axis_list_;

188 }

190 [[nodiscard]] std::vector<CaTripleReference>& AxisList();

191

198 [[nodiscard]] virtual uint64_t SumOfArray() const = 0;

199

206 [[nodiscard]] virtual uint64_t ProductOfArray() const = 0;

207 protected:

208 std::vector<int64_t> data_links_;

209 std::vector<CaTripleReference> dynamic_size_list_;

210 std::vector<CaTripleReference> input_quantity_list_;

211CaTripleReference output_quantity_;

212CaTripleReference comparison_quantity_;

213 std::vector<const IChannelConversion*> axis_conversion_list_;

214 std::vector<CaTripleReference> axis_list_;

215

216

217};

218

219} // namespace mdf

mdf::IBlock

Base class for all MDF blocks.

Definition iblock.h:19

mdf::IChannelArray

Defines an interface against an array (CA) block.

Definition ichannelarray.h:74

mdf::IChannelArray::OutputQuantity

const CaTripleReference & OutputQuantity() const

Returns the output quantity reference if it exist.

Definition ichannelarray.h:161

mdf::IChannelArray::Flags

virtual void Flags(uint32_t flags)=0

Flags.

mdf::IChannelArray::DimensionAsString

std::string DimensionAsString() const

Returns the array dimensions as string ("N[2][3]")

mdf::IChannelArray::CycleCounts

virtual std::vector< uint64_t > & CycleCounts()=0

Returns a list of cycle counts.

mdf::IChannelArray::OutputQuantity

CaTripleReference & OutputQuantity()

Returns the output quantity reference if it exist.

Definition ichannelarray.h:165

mdf::IChannelArray::Shape

virtual void Shape(const std::vector< uint64_t > &dim_sizes)=0

Sets the dimension and each dimension size.

mdf::IChannelArray::NofArrayValues

uint64_t NofArrayValues() const

Returns the number of values in the array.

mdf::IChannelArray::ProductOfArray

virtual uint64_t ProductOfArray() const =0

Calculates the product of array dimension sizes.

mdf::IChannelArray::dynamic_size_list_

std::vector< CaTripleReference > dynamic_size_list_

Dynamic size list.

Definition ichannelarray.h:209

mdf::IChannelArray::axis_list_

std::vector< CaTripleReference > axis_list_

Axis list.

Definition ichannelarray.h:214

mdf::IChannelArray::CycleCounts

virtual const std::vector< uint64_t > & CycleCounts() const =0

Returns a list of cycle counts.

mdf::IChannelArray::ResizeArrays

virtual void ResizeArrays()

Converts the array link indexes into pointers.

mdf::IChannelArray::comparison_quantity_

CaTripleReference comparison_quantity_

Comparison quantity list.

Definition ichannelarray.h:212

mdf::IChannelArray::data_links_

std::vector< int64_t > data_links_

List of index to data blocks.

Definition ichannelarray.h:208

mdf::IChannelArray::Type

virtual void Type(ArrayType type)=0

Sets the type of array..

mdf::IChannelArray::output_quantity_

CaTripleReference output_quantity_

Output quantity list.

Definition ichannelarray.h:211

mdf::IChannelArray::AxisConversionList

const std::vector< const IChannelConversion * > & AxisConversionList() const

Returns the axis conversion list.

Definition ichannelarray.h:179

mdf::IChannelArray::Dimensions

virtual size_t Dimensions() const =0

Number of dimensions.

mdf::IChannelArray::InputQuantityList

std::vector< CaTripleReference > & InputQuantityList()

Returns the input quantity list.

mdf::IChannelArray::AxisList

std::vector< CaTripleReference > & AxisList()

Returns the axis list.

mdf::IChannelArray::Storage

virtual ArrayStorage Storage() const =0

Storage type.

mdf::IChannelArray::Storage

virtual void Storage(ArrayStorage storage)=0

Storage type.

mdf::IChannelArray::AxisList

const std::vector< CaTripleReference > & AxisList() const

Returns the axis list.

Definition ichannelarray.h:186

mdf::IChannelArray::ComparisonQuantity

CaTripleReference & ComparisonQuantity()

Returns the comparison quantity list.

Definition ichannelarray.h:174

mdf::IChannelArray::InputQuantityList

const std::vector< CaTripleReference > & InputQuantityList() const

Returns the input quantity list.

Definition ichannelarray.h:154

mdf::IChannelArray::AxisValues

virtual const std::vector< double > & AxisValues() const =0

Returns the fixed axis value list for reading only.

mdf::IChannelArray::AxisConversionList

std::vector< const IChannelConversion * > & AxisConversionList()

Returns the axis conversion list.

mdf::IChannelArray::DataLinks

std::vector< int64_t > & DataLinks()

Returns a list of data kink indexes.

mdf::IChannelArray::DynamicSizeList

const std::vector< CaTripleReference > & DynamicSizeList() const

Returns the dynamic size list.

Definition ichannelarray.h:147

mdf::IChannelArray::DimensionSize

virtual uint64_t DimensionSize(size_t dimension) const =0

Returns a dimension size.

mdf::IChannelArray::input_quantity_list_

std::vector< CaTripleReference > input_quantity_list_

Input quantity list.

Definition ichannelarray.h:210

mdf::IChannelArray::Flags

virtual uint32_t Flags() const =0

Flags.

mdf::IChannelArray::Shape

virtual const std::vector< uint64_t > & Shape() const =0

Returns the dimension and each dimension size.

mdf::IChannelArray::AxisValues

virtual std::vector< double > & AxisValues()=0

Returns the fixed axis value list for write.

mdf::IChannelArray::ComparisonQuantity

const CaTripleReference & ComparisonQuantity() const

Returns the comparison quantity list.

Definition ichannelarray.h:170

mdf::IChannelArray::DataLinks

const std::vector< int64_t > & DataLinks() const

Returns a list of data kink indexes.

Definition ichannelarray.h:140

mdf::IChannelArray::Type

virtual ArrayType Type() const =0

Type of array.

mdf::IChannelArray::axis_conversion_list_

std::vector< const IChannelConversion * > axis_conversion_list_

Axis_conversion list.

Definition ichannelarray.h:213

mdf::IChannelArray::DynamicSizeList

std::vector< CaTripleReference > & DynamicSizeList()

Returns the dynamic size list.

mdf::IChannelArray::SumOfArray

virtual uint64_t SumOfArray() const =0

Summation of all array dimensions.

mdf::IChannelGroup

Interface against a channel group (CG) block.

Definition ichannelgroup.h:66

mdf::IChannel

Defines a MDF channel (CN) block.

Definition ichannel.h:126

mdf::IDataGroup

Interface to a data group (DG) block.

Definition idatagroup.h:42

iblock.h

All MDF blocks inherits from the IBlock class. The interface class is used internally in lists....

mdf::CaFlag::InputQuantity

constexpr uint32_t InputQuantity

Input quantity.

Definition ichannelarray.h:49

mdf::CaFlag::ComparisonQuantity

constexpr uint32_t ComparisonQuantity

Comparison quantity.

Definition ichannelarray.h:51

mdf::CaFlag::LeftOpenInterval

constexpr uint32_t LeftOpenInterval

Left-over interval.

Definition ichannelarray.h:55

mdf::CaFlag::StandardAxis

constexpr uint32_t StandardAxis

Standard axis.

Definition ichannelarray.h:56

mdf::CaFlag::DynamicSize

constexpr uint32_t DynamicSize

Dynamic size.

Definition ichannelarray.h:48

mdf::CaFlag::FixedAxis

constexpr uint32_t FixedAxis

Fixed axis.

Definition ichannelarray.h:53

mdf::CaFlag::OutputQuantity

constexpr uint32_t OutputQuantity

Output quantity.

Definition ichannelarray.h:50

mdf::CaFlag::InverseLayout

constexpr uint32_t InverseLayout

Inverse layout.

Definition ichannelarray.h:54

mdf::CaFlag::Axis

constexpr uint32_t Axis

Axis.

Definition ichannelarray.h:52

mdf

Main namespace for the MDF library.

Definition canmessage.h:17

mdf::ArrayType

ArrayType

Type of array.

Definition ichannelarray.h:31

mdf::ArrayType::Array

@ Array

Simple array without attributes.

mdf::ArrayType::IntervalAxis

@ IntervalAxis

Interval axis.

mdf::ArrayType::LookUp

@ LookUp

Lookup array.

mdf::ArrayType::ClassificationResult

@ ClassificationResult

Classification result.

mdf::ArrayType::ScalingAxis

@ ScalingAxis

Scaling axis.

mdf::ArrayStorage

ArrayStorage

Type of storage.

Definition ichannelarray.h:40

mdf::ArrayStorage::DgTemplate

@ DgTemplate

Data group template.

mdf::ArrayStorage::CnTemplate

@ CnTemplate

Channel template.

mdf::ArrayStorage::CgTemplate

@ CgTemplate

Channel group template.

mdf::CaTripleReference

Structure that defines the channel array (CA) blocks references.

Definition ichannelarray.h:60

mdf::CaTripleReference::ChannelGroup

const mdf::IChannelGroup * ChannelGroup

Pointer to the channel group (CG) block.

Definition ichannelarray.h:62

mdf::CaTripleReference::Channel

const mdf::IChannel * Channel

Pointer to the channel (CN) block.

Definition ichannelarray.h:63

mdf::CaTripleReference::DataGroup

const mdf::IDataGroup * DataGroup

Pointer to the data group (DG) block.

Definition ichannelarray.h:61


Generated by 1.12.0