All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines
Public Member Functions
QGpCoreTools::DynamicBuffer Class Reference

#include <DynamicBuffer.h>

List of all members.

Public Member Functions

void add (const char *data, int byteCount)
int availableBytes () const
void clear ()
const char * data ()
 DynamicBuffer ()
void release (int byteCount)
 ~DynamicBuffer ()

Constructor & Destructor Documentation

Description of constructor still missing

References TRACE.

{
  TRACE;
  _bufferCapacity=64;
  _buffer=(char *)malloc(_bufferCapacity);
  _bufferIn=0;
  _bufferOut=0;
}

Description of destructor still missing

References TRACE.

{
  TRACE;
  free(_buffer);
}

Member Function Documentation

void QGpCoreTools::DynamicBuffer::add ( const char *  data,
int  byteCount 
)

References TRACE.

{
  TRACE;
  //printf("before %i %i %i - add %i\n",_bufferOut, _bufferIn, _bufferCapacity, byteCount);
  int nextBufferIn=_bufferIn+byteCount;
  int neededBytes=nextBufferIn-_bufferCapacity;
  if(neededBytes>0) {
    // Shift already read bytes
    if(_bufferOut>0) {
      memmove(_buffer,_buffer+_bufferOut, _bufferIn-_bufferOut);
      _bufferIn-=_bufferOut;
      nextBufferIn-=_bufferOut;
      _bufferOut=0;
    }
    if(nextBufferIn>_bufferCapacity) {
      do {
        _bufferCapacity=_bufferCapacity << 1;
      } while(nextBufferIn>_bufferCapacity);
      _buffer=(char *)realloc(_buffer, _bufferCapacity);
    }
  }
  memcpy(_buffer+_bufferIn, data, byteCount);
  _bufferIn=nextBufferIn;
  //printf("after %i %i %i\n",_bufferOut, _bufferIn, _bufferCapacity);
  /*for(int i=0;i<32;i++) {
    printf("%02hhX ",_buffer[_bufferOut+i]);
  }
  printf("\n");*/
}
{return _bufferIn-_bufferOut;}

References TRACE.

{
  TRACE;
  if(_bufferCapacity>64) {
    free(_buffer);
    _bufferCapacity=64;
    _buffer=(char *)malloc(_bufferCapacity);
  }
  _bufferIn=0;
  _bufferOut=0;
}
const char* QGpCoreTools::DynamicBuffer::data ( ) [inline]
{return _buffer+_bufferOut;}
void QGpCoreTools::DynamicBuffer::release ( int  byteCount)
{
  _bufferOut+=byteCount;
  ASSERT(_bufferOut<=_bufferIn);
}

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines