UFO: Alien Invasion
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
dbuffer Class Reference

#include <dbuffer.h>

Public Member Functions

 dbuffer (int reserve=512)
 
 dbuffer (const dbuffer &other)
 
virtual ~dbuffer ()
 
void add (const char *, size_t)
 
size_t get (char *, size_t) const
 Read data from a dbuffer. More...
 
size_t getAt (size_t, char *, size_t) const
 Read data from a dbuffer. More...
 
size_t remove (size_t)
 Deletes data from a dbuffer. More...
 
size_t extract (char *, size_t)
 Read and delete data from a dbuffer. More...
 
size_t length () const
 

Private Attributes

size_t _length
 
std::vector< char > _data
 

Detailed Description

Definition at line 19 of file dbuffer.h.

Constructor & Destructor Documentation

dbuffer::dbuffer ( int  reserve = 512)

Definition at line 27 of file dbuffer.cpp.

References _data.

dbuffer::dbuffer ( const dbuffer other)

Definition at line 32 of file dbuffer.cpp.

References _data, and _length.

dbuffer::~dbuffer ( )
virtual

Definition at line 38 of file dbuffer.cpp.

Member Function Documentation

size_t dbuffer::extract ( char *  data,
size_t  len 
)

Read and delete data from a dbuffer.

Parameters
[out]datapointer to where the data should be copied
[in]lenmaximum number of bytes to copy
Returns
number of bytes copied
Copies up to len bytes into data, and removes them from the dbuffer
If the buffer does not contain at least len bytes, then as many bytes as are present will be copied.
However many bytes are copied, exactly that many will be removed from the start of the dbuffer.

Definition at line 136 of file dbuffer.cpp.

References len.

Referenced by NET_ReadByte(), NET_ReadChar(), NET_ReadLong(), NET_ReadShort(), NET_StreamDequeue(), NET_WriteMsg(), and TEST_F().

size_t dbuffer::get ( char *  data,
size_t  len 
) const

Read data from a dbuffer.

Parameters
[out]datapointer to where the data should be copied
[in]lenmaximum number of bytes to copy
Returns
number of bytes copied
Copies up to len bytes into data
If the buffer does not contain at least len bytes, then as many bytes as are present will be copied.

Definition at line 61 of file dbuffer.cpp.

References _data, _length, and len.

Referenced by NET_PeekByte(), NET_PeekLong(), NET_PeekShort(), NET_StreamPeek(), NET_Wait(), and TEST_F().

size_t dbuffer::getAt ( size_t  offset,
char *  data,
size_t  len 
) const

Read data from a dbuffer.

Parameters
[in]offsetthe offset in the source buffer where data should be copied from
[out]datapointer to where the data should be copied
[in]lenmaximum number of bytes to copy
Returns
number of bytes copied
Copies up to len bytes into data
If the buffer does not contain at least len bytes after offset, then as many bytes as are present will be copied.

Definition at line 86 of file dbuffer.cpp.

References _data, _length, and len.

Referenced by NET_WriteConstMsg().

size_t dbuffer::length ( ) const
inline

Definition at line 48 of file dbuffer.h.

References _length.

Referenced by NET_WriteConstMsg(), NET_WriteMsg(), and TEST_F().

size_t dbuffer::remove ( size_t  len)

Deletes data from a dbuffer.

Parameters
[in]lennumber of bytes to delete Deletes the given number of bytes from the start of the dbuffer

Definition at line 104 of file dbuffer.cpp.

References _data, _length, and len.

Referenced by NET_Wait().

Field Documentation

std::vector<char> dbuffer::_data
private

Definition at line 25 of file dbuffer.h.

Referenced by add(), dbuffer(), get(), getAt(), and remove().

size_t dbuffer::_length
private

this is the length of the entries in the buffer, not the allocated size of the buffer

Definition at line 24 of file dbuffer.h.

Referenced by add(), dbuffer(), get(), getAt(), length(), and remove().


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