PLCnext API Documentation  20.6.0.30321
StandardAttributes.hpp
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 #pragma once
7 #include "Arp/System/Core/Arp.h"
8 #include "Arp/Plc/Commons/Meta/StandardAttribute.hpp"
9 #include <bitset>
10 
11 namespace Arp { namespace Plc { namespace Commons { namespace Meta
12 {
13 
14 
17 {
18 public: // typedefs
19 
20 public: // construction/destruction
24  StandardAttributes(const StandardAttributes& arg) = default;
26  StandardAttributes(StandardAttributes&& arg) = default;
28  StandardAttributes& operator=(const StandardAttributes& arg) = default;
32  ~StandardAttributes(void) = default;
33 
34 public: // static properties
35  static const StandardAttributes None;
36 
37 public: // operators
38  operator StandardAttribute(void)const;
39 
42  size_t GetCacheSize(void)const;
43 
44 public: // setter/getter operations
45  bool IsSet(StandardAttribute flag)const;
46  bool IsAnySet(StandardAttribute flags)const;
47  size_t CountSet() const;
48  StandardAttribute GetValue(void)const;
49 
50 private: // fields
52 };
53 
55 // inline methods of class StandardAttributes
56 
58  : value(value)
59 {
60 }
61 
62 inline StandardAttributes::operator StandardAttribute()const
63 {
64  return this->value;
65 }
66 
67 inline bool StandardAttributes::IsSet(StandardAttribute flag)const
68 {
69  using U = std::underlying_type<StandardAttribute>::type;
70  return (static_cast<U>(flag) & static_cast<U>(this->value)) == static_cast<U>(flag);
71 }
72 
73 inline bool StandardAttributes::IsAnySet(StandardAttribute flags)const
74 {
75  using U = std::underlying_type<StandardAttribute>::type;
76  return (static_cast<U>(flags) & static_cast<U>(this->value)) != 0;
77 }
78 
79 inline size_t StandardAttributes::CountSet() const
80 {
81  using U = std::underlying_type<StandardAttribute>::type;
82  std::bitset<sizeof(U) * 8> bits(static_cast<U>(this->value));
83  return bits.count();
84 }
85 
86 inline StandardAttribute StandardAttributes::GetValue(void)const
87 {
88  return this->value;
89 }
90 
91 inline size_t StandardAttributes::GetCacheSize(void)const
92 {
93  return sizeof(this->value);
94 }
95 
96 }}}} // end of namespace Arp::Plc::Meta
Similar to MetaAttribute.
Definition: StandardAttributes.hpp:16
size_t GetCacheSize(void) const
Get the cache size
Definition: StandardAttributes.hpp:91
~StandardAttributes(void)=default
Destructs this instance and frees all resources.
StandardAttributes & operator=(const StandardAttributes &arg)=default
Copy assignment operator.
Root namespace for the PLCnext API
StandardAttributes(StandardAttribute value=StandardAttribute::None)
Constructs a StandardAttributes instance.
Definition: StandardAttributes.hpp:57
StandardAttribute
Definition: StandardAttribute.hpp:14