#if !defined CEDITVIEWOUTPUTSTREAM_H_KABASICCLASSES
#define CEDITVIEWOUTPUTSTREAM_H_KABASICCLASSES
#include "EditorOutputStream.h"
namespace kaBasicClasses {
class CEditOutputStreamBuffer: public EditorOutputStreamBuffer {
protected:
const int theBufferSize;
typedef char charType;
typedef std::vector<charType> bufferType;
bufferType theBuffer;
void insertText(charType*);
CEdit* theEditor;
public:
CEditOutputStreamBuffer( CEdit* p );
virtual ~CEditOutputStreamBuffer();
int flush();
int getCursorPosition();
int getMaximalCursorPosition();
void setCursorAtPosition( int );
void setCursorAtBeginning();
void setCursorAtEnd();
void moveCursorBy( int pos );
void set( CEdit* e ) { theEditor=e; }
protected:
virtual int_type overflow( int_type c );
friend class CEditOutputStream;
};
class CEditOutputStream: public EditorOutputStream {
public:
CEditOutputStream( CEdit* e ) : EditorOutputStream(new CEditOutputStreamBuffer(e)) {}
CEditOutputStream() : EditorOutputStream(new CEditOutputStreamBuffer(NULL)) {}
~CEditOutputStream() { delete theBuffer; }
void set( CEdit* e ) { ((CEditOutputStreamBuffer *)theBuffer)->set(e); }
bool isSet() const { return ((CEditOutputStreamBuffer *)theBuffer)->theEditor!=NULL; }
inline virtual int getCursorPosition() { return ((CEditOutputStreamBuffer *)theBuffer)->getCursorPosition(); }
inline virtual int getMaximalCursorPosition() { return ((CEditOutputStreamBuffer *)theBuffer)->getMaximalCursorPosition(); }
inline virtual void setCursorAtPosition( int pos ) { ((CEditOutputStreamBuffer *)theBuffer)->setCursorAtPosition(pos); }
inline virtual void setCursorAtStart() { ((CEditOutputStreamBuffer *)theBuffer)->setCursorAtBeginning(); }
inline virtual void setCursorAtEnd() { ((CEditOutputStreamBuffer *)theBuffer)->setCursorAtEnd(); }
inline virtual void moveCursorBy( int pos ) { ((CEditOutputStreamBuffer *)theBuffer)->moveCursorBy(pos); }
};
}; //kaBasicClasses
#endif //CEDITVIEWOUTPUTSTREAM_H_KABASICCLASSES