PLCnext API Documentation 25.0.2.69
BitSize.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Base/Core/PimplPtr.hxx"
9
11{
12
15class ARP_EXPORT BitSize
16{
17public: // Impl forward declaration
18 class Impl;
19
20public: // construction/destruction/assignment
21 explicit BitSize(uint32 bytes = 0, uint32 bits = 0);
22 BitSize(const BitSize& arg);
23 BitSize(BitSize&& arg)noexcept;
25 BitSize& operator=(BitSize&& arg)noexcept;
26 ~BitSize(void);
27
28public: // operators
29 BitSize& operator+=(const BitSize& rhs);
30
31public: // setter/getter operations
32 uint32 GetByteSize() const;
33 uint32 GetBitSize() const;
34 uint64 GetTotalBitSize(void)const;
35 size_t GetFullByteSize(void)const;
36
37public: // static fields
38 static const BitSize& GetNull(void);
39 static const BitSize& GetBit(void);
40
41public: // internal operations
42 Impl& GetImpl(void);
43 const Impl& GetImpl(void)const;
44
45private: // Impl usings
47
48private: // Impl fields
49 Pimpl pimpl;
50};
51
52ARP_EXPORT bool operator==(const BitSize& lhs, const BitSize& rhs);
53ARP_EXPORT bool operator<(const BitSize& lhs, const BitSize& rhs);
54ARP_EXPORT BitSize operator+(const BitSize& lhs, const BitSize& rhs);
55ARP_EXPORT std::ostream& operator<<(std::ostream& os, const BitSize& value);
56ARP_EXPORT std::istream& operator>>(std::istream& is, BitSize& value);
57
58} // end of namespace Arp::Plc::Meta::Commons
59
61template<> struct fmt::formatter<Arp::Plc::Meta::Commons::BitSize> : public fmt::ostream_formatter
62{
63};
Adapter class to implement PImpl idiom.
Definition: PimplPtr.hxx:15
This class represents a size of a variable
Definition: BitSize.hpp:16
BitSize & operator=(BitSize &&arg) noexcept
The default move-assignment operator.
~BitSize(void)
The default destructor.
BitSize & operator=(const BitSize &arg)
The default copy-assignment operator.
BitSize(BitSize &&arg) noexcept
The default move constructor.
BitSize(const BitSize &arg)
The default copy constructor.
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:33
std::uint64_t uint64
The Arp unsigned integer type of 8 byte size.
Definition: PrimitiveTypes.hpp:37
Namespace for interface types of the Meta component
BitSize operator+(const BitSize &lhs, const BitSize &rhs)
Adds the rhs to lhs .
Definition: BitSize.cpp:131
std::istream & operator>>(std::istream &is, BitSize &value)
Reads the bit size in format XXXX.Y from an input stream with X as byte size and y as bit size.
Definition: BitSize.cpp:153
bool operator==(const BitSize &lhs, const BitSize &rhs)
Equality comparison of ByteSize
Definition: BitSize.cpp:112
ARP_EXPORT bool operator<(const BitSize &lhs, const BitSize &rhs)
Compares two BitSize objects on less-than.
Definition: BitSize.cpp:122
std::ostream & operator<<(std::ostream &os, const BitSize &value)
Format to ostream
Definition: BitSize.cpp:141
Root namespace for the PLCnext API