Files
redAcore/BufferCore.h
Charl Wentzel 630583bbc6 Minor Update:
- BufferCore: Set BufSize as class constant
- TimingCore: Add new function Timeout()
2016-06-02 09:36:08 +02:00

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_ */