SDL  2.0
hid_buffer_pool Class Reference
+ Collaboration diagram for hid_buffer_pool:

Data Structures

struct  hid_buffer_entry
 

Public Member Functions

 hid_buffer_pool ()
 
 ~hid_buffer_pool ()
 
size_t size () const
 
const hid_bufferfront () const
 
void pop_front ()
 
void emplace_back (const uint8_t *pData, size_t nSize)
 
void clear ()
 

Private Attributes

size_t m_nSize
 
hid_buffer_entrym_pHead
 
hid_buffer_entrym_pTail
 
hid_buffer_entrym_pFree
 

Detailed Description

Definition at line 181 of file hid.cpp.

Constructor & Destructor Documentation

◆ hid_buffer_pool()

hid_buffer_pool::hid_buffer_pool ( )
inline

Definition at line 184 of file hid.cpp.

184  : m_nSize( 0 ), m_pHead( nullptr ), m_pTail( nullptr ), m_pFree( nullptr )
185  {
186  }
hid_buffer_entry * m_pHead
Definition: hid.cpp:265
hid_buffer_entry * m_pTail
Definition: hid.cpp:266
hid_buffer_entry * m_pFree
Definition: hid.cpp:267
size_t m_nSize
Definition: hid.cpp:264

◆ ~hid_buffer_pool()

hid_buffer_pool::~hid_buffer_pool ( )
inline

Definition at line 188 of file hid.cpp.

References hid_buffer_pool::hid_buffer_entry::m_pNext.

189  {
190  clear();
191 
192  while ( m_pFree )
193  {
194  hid_buffer_entry *pEntry = m_pFree;
196  delete pEntry;
197  }
198  }
hid_buffer_entry * m_pNext
Definition: hid.cpp:261
void clear()
Definition: hid.cpp:249
hid_buffer_entry * m_pFree
Definition: hid.cpp:267

Member Function Documentation

◆ clear()

void hid_buffer_pool::clear ( )
inline

Definition at line 249 of file hid.cpp.

250  {
251  while ( size() > 0 )
252  {
253  pop_front();
254  }
255  }
size_t size() const
Definition: hid.cpp:200
void pop_front()
Definition: hid.cpp:204

◆ emplace_back()

void hid_buffer_pool::emplace_back ( const uint8_t pData,
size_t  nSize 
)
inline

Definition at line 220 of file hid.cpp.

References hid_buffer::assign(), hid_buffer_pool::hid_buffer_entry::m_buffer, and hid_buffer_pool::hid_buffer_entry::m_pNext.

221  {
222  hid_buffer_entry *pEntry;
223 
224  if ( m_pFree )
225  {
226  pEntry = m_pFree;
228  }
229  else
230  {
231  pEntry = new hid_buffer_entry;
232  }
233  pEntry->m_pNext = nullptr;
234 
235  if ( m_pTail )
236  {
237  m_pTail->m_pNext = pEntry;
238  }
239  else
240  {
241  m_pHead = pEntry;
242  }
243  m_pTail = pEntry;
244 
245  pEntry->m_buffer.assign( pData, nSize );
246  ++m_nSize;
247  }
void assign(const uint8_t *pData, size_t nSize)
Definition: hid.cpp:147
hid_buffer m_buffer
Definition: hid.cpp:260
hid_buffer_entry * m_pHead
Definition: hid.cpp:265
hid_buffer_entry * m_pTail
Definition: hid.cpp:266
hid_buffer_entry * m_pNext
Definition: hid.cpp:261
hid_buffer_entry * m_pFree
Definition: hid.cpp:267
size_t m_nSize
Definition: hid.cpp:264

◆ front()

const hid_buffer& hid_buffer_pool::front ( ) const
inline

Definition at line 202 of file hid.cpp.

202 { return m_pHead->m_buffer; }
hid_buffer m_buffer
Definition: hid.cpp:260
hid_buffer_entry * m_pHead
Definition: hid.cpp:265

◆ pop_front()

void hid_buffer_pool::pop_front ( )
inline

Definition at line 204 of file hid.cpp.

References hid_buffer_pool::hid_buffer_entry::m_pNext.

205  {
206  hid_buffer_entry *pEntry = m_pHead;
207  if ( pEntry )
208  {
209  m_pHead = pEntry->m_pNext;
210  if ( !m_pHead )
211  {
212  m_pTail = nullptr;
213  }
214  pEntry->m_pNext = m_pFree;
215  m_pFree = pEntry;
216  --m_nSize;
217  }
218  }
hid_buffer_entry * m_pHead
Definition: hid.cpp:265
hid_buffer_entry * m_pTail
Definition: hid.cpp:266
hid_buffer_entry * m_pNext
Definition: hid.cpp:261
hid_buffer_entry * m_pFree
Definition: hid.cpp:267
size_t m_nSize
Definition: hid.cpp:264

◆ size()

size_t hid_buffer_pool::size ( ) const
inline

Definition at line 200 of file hid.cpp.

200 { return m_nSize; }
size_t m_nSize
Definition: hid.cpp:264

Field Documentation

◆ m_nSize

size_t hid_buffer_pool::m_nSize
private

Definition at line 264 of file hid.cpp.

◆ m_pFree

hid_buffer_entry* hid_buffer_pool::m_pFree
private

Definition at line 267 of file hid.cpp.

◆ m_pHead

hid_buffer_entry* hid_buffer_pool::m_pHead
private

Definition at line 265 of file hid.cpp.

◆ m_pTail

hid_buffer_entry* hid_buffer_pool::m_pTail
private

Definition at line 266 of file hid.cpp.


The documentation for this class was generated from the following file: