AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
WorldPackets::CompactArray< T > Class Template Reference

#include "PacketUtilities.h"

Public Member Functions

 CompactArray ()
 
 CompactArray (CompactArray const &right)
 
 CompactArray (CompactArray &&right)
 
CompactArrayoperator= (CompactArray const &right)
 
CompactArrayoperator= (CompactArray &&right)
 
uint32 GetMask () const
 
T const & operator[] (std::size_t index) const
 
std::size_t GetSize () const
 
void Insert (std::size_t index, T const &value)
 
void Clear ()
 
bool operator== (CompactArray const &r) const
 
bool operator!= (CompactArray const &r) const
 

Private Attributes

uint32 _mask
 
std::vector< T > _contents
 

Detailed Description

template<typename T>
class WorldPackets::CompactArray< T >

Constructor & Destructor Documentation

◆ CompactArray() [1/3]

template<typename T >
WorldPackets::CompactArray< T >::CompactArray ( )
inline
196: _mask(0) { }
uint32 _mask
Definition: PacketUtilities.h:259

◆ CompactArray() [2/3]

template<typename T >
WorldPackets::CompactArray< T >::CompactArray ( CompactArray< T > const &  right)
inline
199 : _mask(right._mask), _contents(right._contents) { }
std::vector< T > _contents
Definition: PacketUtilities.h:260

◆ CompactArray() [3/3]

template<typename T >
WorldPackets::CompactArray< T >::CompactArray ( CompactArray< T > &&  right)
inline
202 : _mask(right._mask), _contents(std::move(right._contents))
203 {
204 right._mask = 0;
205 }

Member Function Documentation

◆ Clear()

template<typename T >
void WorldPackets::CompactArray< T >::Clear ( )
inline

◆ GetMask()

template<typename T >
uint32 WorldPackets::CompactArray< T >::GetMask ( ) const
inline
222{ return _mask; }

References WorldPackets::CompactArray< T >::_mask.

Referenced by WorldPackets::operator<<().

◆ GetSize()

template<typename T >
std::size_t WorldPackets::CompactArray< T >::GetSize ( ) const
inline
224{ return _contents.size(); }

References WorldPackets::CompactArray< T >::_contents.

Referenced by WorldPackets::operator<<().

◆ Insert()

template<typename T >
void WorldPackets::CompactArray< T >::Insert ( std::size_t  index,
T const &  value 
)
inline
227 {
228 CheckCompactArrayMaskOverflow(index, sizeof(_mask) * 8);
229
230 _mask |= 1 << index;
231
232 if (_contents.size() <= index)
233 {
234 _contents.resize(index + 1);
235 }
236
237 _contents[index] = value;
238 }
void CheckCompactArrayMaskOverflow(std::size_t index, std::size_t limit)
Definition: PacketUtilities.cpp:67

References WorldPackets::CompactArray< T >::_contents, WorldPackets::CompactArray< T >::_mask, and WorldPackets::CheckCompactArrayMaskOverflow().

Referenced by WorldPackets::operator>>().

◆ operator!=()

template<typename T >
bool WorldPackets::CompactArray< T >::operator!= ( CompactArray< T > const &  r) const
inline
256{ return !(*this == r); }

◆ operator=() [1/2]

template<typename T >
CompactArray & WorldPackets::CompactArray< T >::operator= ( CompactArray< T > &&  right)
inline
215 {
216 _mask = right._mask;
217 right._mask = 0;
218 _contents = std::move(right._contents);
219 return *this;
220 }

References WorldPackets::CompactArray< T >::_contents, and WorldPackets::CompactArray< T >::_mask.

◆ operator=() [2/2]

template<typename T >
CompactArray & WorldPackets::CompactArray< T >::operator= ( CompactArray< T > const &  right)
inline
208 {
209 _mask = right._mask;
210 _contents = right._contents;
211 return *this;
212 }

References WorldPackets::CompactArray< T >::_contents, and WorldPackets::CompactArray< T >::_mask.

◆ operator==()

template<typename T >
bool WorldPackets::CompactArray< T >::operator== ( CompactArray< T > const &  r) const
inline
247 {
248 if (_mask != r._mask)
249 {
250 return false;
251 }
252
253 return _contents == r._contents;
254 }

References WorldPackets::CompactArray< T >::_contents, and WorldPackets::CompactArray< T >::_mask.

◆ operator[]()

template<typename T >
T const & WorldPackets::CompactArray< T >::operator[] ( std::size_t  index) const
inline
223{ return _contents.at(index); }

References WorldPackets::CompactArray< T >::_contents.

Member Data Documentation

◆ _contents

◆ _mask