Mass++ Common Libraries v2.7.5
 All Classes Namespaces Files Functions Variables Enumerations Macros
Buffer.cpp
Go to the documentation of this file.
1 
12 #include "stdafx.h"
13 #include "Buffer.h"
14 
15 
16 using namespace kome::core;
17 
18 
19 #include <crtdbg.h>
20 #ifdef _DEBUG
21  #define new new( _NORMAL_BLOCK, __FILE__, __LINE__ )
22  #define malloc( s ) _malloc_dbg( s, _NORMAL_BLOCK, __FILE__, __LINE__ )
23 #endif // _DEBUG
24 
25 
26 
27 // constructor
29  m_pos = 0;
30 }
31 
32 // destructor
34 }
35 
36 // clear buffer
37 void Buffer::clear() {
38  m_buffer.clear();
39  m_pos = 0;
40 }
41 
42 // get buffer
44  if( m_buffer.size() > 0 ) {
45  return &( m_buffer[ 0 ] );
46  }
47  return NULL;
48 }
49 
50 // get buffer length
51 unsigned int Buffer::getLength() {
52  return m_buffer.size();
53 }
54 
55 // set position
56 void Buffer::setPosition( const unsigned int pos ) {
57  m_pos = std::min( pos, (unsigned int)m_buffer.size() );
58 }
59 
60 // get position
61 unsigned int Buffer::getPosition() {
62  return m_pos;
63 }
64 
65 // rewind position
67  setPosition( 0 );
68 }
69 
70 // write size
71 int Buffer::write( void* addr, int size ) {
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 }
96 
97 // read
98 int Buffer::read( void* addr, int size ) {
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 }
unsigned int getPosition()
gets reading position
Definition: Buffer.cpp:61
virtual ~Buffer()
destructor
Definition: Buffer.cpp:33
virtual int write(void *addr, int size)
writes data (override method)
Definition: Buffer.cpp:71
void setPosition(const unsigned int pos)
sets reading position
Definition: Buffer.cpp:56
void rewind()
rewinds reading position
Definition: Buffer.cpp:66
std::vector< unsigned char > m_buffer
Definition: Buffer.h:44
Buffer()
constructor
Definition: Buffer.cpp:28
#define NULL
Definition: CoreMacros.h:18
virtual int read(void *addr, int size)
reads data (override method)
Definition: Buffer.cpp:98
void * getBuffer()
gets buffer
Definition: Buffer.cpp:43
unsigned long m_pos
Definition: Buffer.h:47
void clear()
clears buffer
Definition: Buffer.cpp:37
interfarces of Buffer class
unsigned int getLength()
gets buffer size
Definition: Buffer.cpp:51