15#ifndef UTPACKMESSAGE_HPP
16#define UTPACKMESSAGE_HPP
48 using iterator =
typename std::vector<T>::iterator;
52 const T&
operator[](
size_t aIndex)
const {
return mVector[aIndex]; }
53 void push_back(
const T& aValue) { mVector.push_back(aValue); }
54 void push_back(T&& aValue) { mVector.push_back(std::move(aValue)); }
55 const T&
back()
const {
return mVector.back(); }
56 T&
back() {
return mVector.back(); }
57 const T&
front()
const {
return mVector.front(); }
58 T&
front() {
return mVector.front(); }
64 size_t size()
const {
return mVector.size(); }
65 bool empty()
const {
return mVector.empty(); }
67 int GetSize()
const override {
return (
int)mVector.size(); }
68 void Resize(
int aSize)
override {
return mVector.resize(aSize); }
69 void*
GetPtr()
override {
return mVector.empty() ? nullptr : &mVector[0]; }
72 std::vector<T> mVector;
76template<
int BYTE_COUNT>
79 static constexpr int cBITS_PER_WORD = 32;
80 static constexpr int cWORD_COUNT = (BYTE_COUNT + 3) / 4;
89 memcpy(mWords, aRhs.mWords, cWORD_COUNT * 4);
92 void set(
int aBitIndex,
bool aValue)
94 const int cWORD_INDEX = aBitIndex / cBITS_PER_WORD;
95 const int cBIT = (1u << (aBitIndex % cBITS_PER_WORD));
98 mWords[cWORD_INDEX] |= cBIT;
102 mWords[cWORD_INDEX] &= ~cBIT;
105 void wordOr(
unsigned int aMask) { mWords[0] |= aMask; }
106 void wordAnd(
unsigned int aMask) { mWords[0] &= aMask; }
107 void wordXor(
unsigned int aMask) { mWords[0] ^= aMask; }
110 return 0 != (mWords[aBitIndex / cBITS_PER_WORD] & (1u << (aBitIndex % cBITS_PER_WORD)));
114 unsigned int mWords[cWORD_COUNT];
UtPackBitset()
Definition UtPackMessage.hpp:83
UtPackBitset(const UtPackBitset< BYTE_COUNT > &aSrc)
Definition UtPackMessage.hpp:85
bool test(int aBitIndex) const
Definition UtPackMessage.hpp:108
void wordXor(unsigned int aMask)
Definition UtPackMessage.hpp:107
void set(int aBitIndex, bool aValue)
Definition UtPackMessage.hpp:92
void wordAnd(unsigned int aMask)
Definition UtPackMessage.hpp:106
void wordOr(unsigned int aMask)
Definition UtPackMessage.hpp:105
UtPackBitset< BYTE_COUNT > & operator=(const UtPackBitset< BYTE_COUNT > &aRhs)
Definition UtPackMessage.hpp:87
Definition UtPackMessage.hpp:30
virtual ~UtPackListInterface()=default
virtual void * GetPtr()=0
virtual int GetSize() const =0
virtual void Resize(int aSize)=0
Definition UtPackMessage.hpp:41
size_t size() const
Definition UtPackMessage.hpp:64
bool empty() const
Definition UtPackMessage.hpp:65
typename std::vector< T >::iterator iterator
Definition UtPackMessage.hpp:48
T & back()
Definition UtPackMessage.hpp:56
typename std::vector< T >::value_type value_type
Definition UtPackMessage.hpp:50
~UtPackList() override=default
std::vector< T > & GetVector()
Definition UtPackMessage.hpp:45
typename std::vector< T >::const_iterator const_iterator
Definition UtPackMessage.hpp:49
iterator end()
Definition UtPackMessage.hpp:61
const T & back() const
Definition UtPackMessage.hpp:55
const_iterator end() const
Definition UtPackMessage.hpp:62
iterator begin()
Definition UtPackMessage.hpp:59
void Resize(int aSize) override
Definition UtPackMessage.hpp:68
const_iterator begin() const
Definition UtPackMessage.hpp:60
void push_back(const T &aValue)
Definition UtPackMessage.hpp:53
const T & operator[](size_t aIndex) const
Definition UtPackMessage.hpp:52
T & front()
Definition UtPackMessage.hpp:58
iterator insert(const_iterator aWhere, T &aValue)
Definition UtPackMessage.hpp:63
void * GetPtr() override
Definition UtPackMessage.hpp:69
int GetSize() const override
Definition UtPackMessage.hpp:67
T & operator[](size_t aIndex)
Definition UtPackMessage.hpp:51
void push_back(T &&aValue)
Definition UtPackMessage.hpp:54
const T & front() const
Definition UtPackMessage.hpp:57
Definition UtPackMessage.hpp:119
virtual UtPackMessage * Clone() const =0
virtual ~UtPackMessage()=default
virtual int GetMessageId() const =0
virtual const char * GetMessageName() const =0
Definition UtPackReflect.hpp:30