Files
redAcore/BufferCore.h
Charl Wentzel e83c09ecb6 Important Update:
- Converted Select functions into new class CSelectCore
- Move Read/Write code from main() to SelectableCore Read()/Write()
- Pass CSelectCore object to CSelectableCore on create
- Updated SelectCore Read/Write lists directly from SelectableCore
- SelectCore->Test() checks all FDs directly and call Read/Write functions
- Improved checking/validating for methods in SelectableCore
2016-05-24 15:02:51 +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
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 FindChar( char SearchChar, int &FoundPos, int StartPos = 0 );
// Miscellaneous
inline int Size() { return BufSize; };
inline int Len() { return BufLen; };
};
//---------------------------------------------------------------------------
#endif /* REDACORE_BUFFERCORE_H_ */