65 lines
1.7 KiB
C++
65 lines
1.7 KiB
C++
/*
|
|
* BufferCore.h
|
|
*
|
|
* Created on: 18 May 2016
|
|
* Author: wentzelc
|
|
*/
|
|
|
|
#ifndef REDACORE_BUFFERCORE_H_
|
|
#define REDACORE_BUFFERCORE_H_
|
|
|
|
// redA Libraries
|
|
/* none */
|
|
|
|
// Standard C/C++ Libraries
|
|
/* none */
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
class CBuffer
|
|
{
|
|
private:
|
|
// Buffer Definition
|
|
char * Buffer; // Memory allocated to buffer
|
|
const int BufSize; // Size of allocated buffer
|
|
|
|
// Buffer pointers
|
|
int BufStart; // First unread characters on buffer
|
|
int BufEnd; // Next write position for new data (End of unread data + 1)
|
|
int BufLen; // Total unread characters on buffer
|
|
|
|
// Temporary output buffer
|
|
char * OutBuffer; // Temporary output buffer for "stitched" (rollover) data
|
|
|
|
public:
|
|
// Life Cycle
|
|
CBuffer( int BufferSize );
|
|
~CBuffer();
|
|
|
|
// Direct Operations
|
|
int Reset();
|
|
int Set( const char * Data, int Len = -1 );
|
|
int Peek( char ** Data, int PeekPos = 0, int MaxLen = -1 );
|
|
int Clear( int ClearLen = -1 );
|
|
|
|
// FiFo operations
|
|
int Push( const char * Data, int Len = -1 );
|
|
int Pop( char ** Data, int MaxLen = -1 );
|
|
|
|
// File operations
|
|
int ReadFromFD( int Handle, int MaxRead = -1 );
|
|
int WriteToFD( int Handle, int MaxWrite = -1 );
|
|
|
|
// Character Operations
|
|
char PeekChar( int Pos = 0, bool ClearChar = false );
|
|
bool FindStr( const char * SearchStr, int SearchLen, int &FoundPos, int StartPos = 0 );
|
|
|
|
// Miscellaneous
|
|
inline int Size() { return BufSize; };
|
|
inline int Len() { return BufLen; };
|
|
};
|
|
|
|
//---------------------------------------------------------------------------
|
|
|
|
#endif /* REDACORE_BUFFERCORE_H_ */
|