Mass++ Common Libraries v2.7.5
 All Classes Namespaces Files Functions Variables Enumerations Macros
Public Member Functions | Protected Attributes | List of all members
kome::core::Buffer Class Reference

memory buffer management class More...

#include <Buffer.h>

Inheritance diagram for kome::core::Buffer:
Inheritance graph
[legend]
Collaboration diagram for kome::core::Buffer:
Collaboration graph
[legend]

Public Member Functions

 Buffer ()
 constructor
 
virtual ~Buffer ()
 destructor
 
void clear ()
 clears buffer
 
void * getBuffer ()
 gets buffer More...
 
unsigned int getLength ()
 gets buffer size More...
 
void setPosition (const unsigned int pos)
 sets reading position More...
 
unsigned int getPosition ()
 gets reading position More...
 
void rewind ()
 rewinds reading position
 
virtual int write (void *addr, int size)
 writes data (override method) More...
 
virtual int read (void *addr, int size)
 reads data (override method) More...
 
- Public Member Functions inherited from kome::core::DataAccessor
 DataAccessor ()
 constructor
 
virtual ~DataAccessor ()
 destructor
 

Protected Attributes

std::vector< unsigned char > m_buffer
 
unsigned long m_pos
 

Detailed Description

memory buffer management class

Definition at line 28 of file Buffer.h.

Member Function Documentation

void * kome::core::Buffer::getBuffer ( )

gets buffer

Returns
the pointer to the buffer

Definition at line 43 of file Buffer.cpp.

43  {
44  if( m_buffer.size() > 0 ) {
45  return &( m_buffer[ 0 ] );
46  }
47  return NULL;
48 }
std::vector< unsigned char > m_buffer
Definition: Buffer.h:44
#define NULL
Definition: CoreMacros.h:18
unsigned int kome::core::Buffer::getLength ( )

gets buffer size

Returns
the size of the buffer

Definition at line 51 of file Buffer.cpp.

51  {
52  return m_buffer.size();
53 }
std::vector< unsigned char > m_buffer
Definition: Buffer.h:44
unsigned int kome::core::Buffer::getPosition ( )

gets reading position

Returns
reading position

Definition at line 61 of file Buffer.cpp.

61  {
62  return m_pos;
63 }
unsigned long m_pos
Definition: Buffer.h:47
int kome::core::Buffer::read ( void *  addr,
int  size 
)
virtual

reads data (override method)

Parameters
[out]addrthe pointer to store data
[in]sizeread size
Returns
actually reading size

Implements kome::core::DataAccessor.

Definition at line 98 of file Buffer.cpp.

98  {
99  // check the parameters
100  if( size <= 0 || addr == NULL ) {
101  return 0;
102  }
103 
104  // size
105  int restSize = (int)m_buffer.size() - m_pos;
106  if( restSize < size ) {
107  size = restSize;
108  }
109  if( size <= 0 ) {
110  return 0;
111  }
112 
113  // read
114  memcpy( addr, &( m_buffer[ m_pos ] ), size );
115  m_pos = m_pos + size;
116 
117  return size;
118 }
std::vector< unsigned char > m_buffer
Definition: Buffer.h:44
#define NULL
Definition: CoreMacros.h:18
unsigned long m_pos
Definition: Buffer.h:47
void kome::core::Buffer::setPosition ( const unsigned int  pos)

sets reading position

Parameters
[in]posreading position

Definition at line 56 of file Buffer.cpp.

56  {
57  m_pos = std::min( pos, (unsigned int)m_buffer.size() );
58 }
std::vector< unsigned char > m_buffer
Definition: Buffer.h:44
unsigned long m_pos
Definition: Buffer.h:47
int kome::core::Buffer::write ( void *  addr,
int  size 
)
virtual

writes data (override method)

Parameters
[in]addrthe pointer to data
[in]sizedata size
Returns
actually writing size

Implements kome::core::DataAccessor.

Definition at line 71 of file Buffer.cpp.

71  {
72  // check the parameters
73  if( size <= 0 || addr == NULL ) {
74  return 0;
75  }
76 
77  // new size
78  unsigned long pos = m_buffer.size();
79  unsigned long newSize = pos + size;
80  if( newSize > m_buffer.max_size() ) {
81  newSize = m_buffer.max_size();
82  }
83  size = newSize - pos;
84  if( size <= 0 ) {
85  return 0;
86  }
87 
88  // resize buffer
89  m_buffer.resize( newSize );
90 
91  // copy data
92  memcpy( &( m_buffer[ pos ] ), addr, size );
93 
94  return size;
95 }
std::vector< unsigned char > m_buffer
Definition: Buffer.h:44
#define NULL
Definition: CoreMacros.h:18

Member Data Documentation

std::vector< unsigned char > kome::core::Buffer::m_buffer
protected

buffer

Definition at line 44 of file Buffer.h.

unsigned long kome::core::Buffer::m_pos
protected

position

Definition at line 47 of file Buffer.h.


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