#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

Hosted by www.Geocities.ws

1