PLCnext API Documentation 25.0.2.69
ArrayDimensions.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Plc/Commons/Meta/ArrayDimension.hpp"
9#include <vector>
10#include <algorithm>
11#include <initializer_list>
12
13namespace Arp { namespace Plc { namespace Commons { namespace Meta
14{
15
18{
19 friend class ArrayNavigator;
20
21public: // typedefs
22 using Values = std::vector<ArrayDimension>;
23
24public: // construction/destruction
26 ArrayDimensions(void) = default;
27 explicit ArrayDimensions(size_t count);
28 ArrayDimensions(const ArrayDimension& entry);
29 ArrayDimensions(const Values& values);
30 ArrayDimensions(const std::initializer_list<int>& dimensions);
31 ArrayDimensions(const std::initializer_list<ArrayDimension>& entries);
33 ArrayDimensions(const ArrayDimensions& arg) = default;
35 ArrayDimensions(ArrayDimensions&& arg) noexcept = default;
39 ArrayDimensions& operator=(ArrayDimensions&& arg) noexcept = default;
41 ~ArrayDimensions(void) noexcept = default;
42
43public: // static properties
44 static const ArrayDimensions Empty;
45
46public: // operators
47 ArrayDimension& operator[](size_t index);
48 const ArrayDimension& operator[](size_t index)const;
49
50public: // setter/getter operations
51 bool IsEmpty(void)const;
52
53
54 size_t GetCount(void)const;
55 const Values& GetValues(void)const;
56 size_t GetCacheSize(void)const;
57 size_t GetDimensionsProduct(void)const;
58
59public: // operations
60 void Append(const ArrayDimension& dimension);
61
62protected: // setter/getter operations
63 void EraseFrontDimension(void);
64
65private: // fields
66 Values values;
67};
68
69bool operator==(const ArrayDimensions& lhs, const ArrayDimensions& rhs);
70bool operator!= (const ArrayDimensions& lhs, const ArrayDimensions& rhs);
71std::ostream& operator<<(std::ostream& os, const ArrayDimensions& rhs);
72
73
74}}}} // end of namespace Arp::Plc::Commons::Meta
75
77// template specialization of ArrayDimensions formatter
78template<> struct fmt::formatter<Arp::Plc::Commons::Meta::ArrayDimensions>: public fmt::ostream_formatter {};
Provide array information.
Definition: ArrayDimension.hpp:19
Provide array information.
Definition: ArrayDimensions.hpp:18
ArrayDimensions(const ArrayDimensions &arg)=default
Copy constructor.
ArrayDimensions & operator=(const ArrayDimensions &arg)=default
Copy assignment operator.
ArrayDimensions & operator=(ArrayDimensions &&arg) noexcept=default
Move assignment operator.
size_t GetCacheSize(void) const
Get the cache size
Definition: ArrayDimensions.cpp:105
size_t GetCount(void) const
Get the number of array dimensions for this vector element.
Definition: ArrayDimensions.cpp:80
ArrayDimensions(void)=default
Constructs an ArrayDimension instance.
~ArrayDimensions(void) noexcept=default
Destructs this instance and frees all resources.
ArrayDimensions(ArrayDimensions &&arg) noexcept=default
Move constructor.
size_t GetDimensionsProduct(void) const
Gets the element count total.
Definition: ArrayDimensions.cpp:36
Root namespace for the PLCnext API