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