// COMEMU.H
//
// Copyright (c) 1995-1999 Symbian Ltd.  All rights reserved.
//
//	Terminal emulator base class
//
#ifndef __COMEMU_H__
#define __COMEMU_H__
#include <e32cons.h>

typedef TBuf<32> TEmulatorName;

class CCommsExecutor;

class CEmulator : public CBase
	{
public:
	IMPORT_C CEmulator(CConsoleBase& aConsole,CCommsExecutor* aExecutor);
	IMPORT_C virtual void ConstructL();
	IMPORT_C virtual TPtrC Name() const=0;
	//
    IMPORT_C virtual TInt SetSizeInChars(TSize aSize);
    IMPORT_C virtual TInt MinMaxSizeInChars(TSize& aMinSize,TSize& aMaxSize);
	//
	IMPORT_C virtual void ClearScr();
	IMPORT_C virtual void DrawCursor();
	//
	IMPORT_C virtual TPtrC InterpretKeyCode(TInt aKeyCode);	// returns empty buffer to ignore keypress
	IMPORT_C virtual void IncomingBytes(const TDesC8& aString); // char sequences
	IMPORT_C virtual void IncomingByte(const TChar& aByte);
	IMPORT_C virtual void PrintText(const TDesC8& aString); // plain text
	IMPORT_C virtual void PrintChar(const TChar& aChar);
    IMPORT_C TBool IncomingLineFeeds() const;
    IMPORT_C TBool OutgoingLineFeeds() const;
    IMPORT_C void SetIncomingLineFeeds(TBool aIncomingLineFeeds);
    IMPORT_C void SetOutgoingLineFeeds(TBool aOutgoingLineFeeds);
	IMPORT_C void SetLocalEcho(TBool aState);
	IMPORT_C TInt SendToRemote(const TDesC& aBuffer);
	IMPORT_C TBool LocalEcho() const;
protected:
	inline TDes& KeyCodeBuffer();
	inline CConsoleBase* ConsoleBase() const;
private:
	inline CCommsExecutor* Executor() const;
private:
	TBuf<16> iKeyCodeBuffer;
	CConsoleBase* iConsole;
	CCommsExecutor* iExecutor;
	};

//	class CEmulator
inline TDes& CEmulator::KeyCodeBuffer()
	{
	return(iKeyCodeBuffer);
	}
inline CConsoleBase* CEmulator::ConsoleBase() const
	{
	return(iConsole);
	}
inline CCommsExecutor* CEmulator::Executor() const
	{
	return(iExecutor);
	}
#endif
