diff options
| author | nyamatongwe <devnull@localhost> | 2000-04-04 09:17:32 +0000 | 
|---|---|---|
| committer | nyamatongwe <devnull@localhost> | 2000-04-04 09:17:32 +0000 | 
| commit | 3032c371bd9231f097226869e80bf56543ae2cab (patch) | |
| tree | 5438281b06996314dfc3c8250769b1604b413728 /include/Accessor.h | |
| parent | 943cf3a48da52953c1f2377d9e412ae81b79b5e0 (diff) | |
| download | scintilla-mirror-3032c371bd9231f097226869e80bf56543ae2cab.tar.gz | |
Split a Document based Accessor (DocumentAccessor) off from
the old accessor which is now called WindowAccessor.
Accessor.h defines a common interface which is the type consumed
by the lexers.
Diffstat (limited to 'include/Accessor.h')
| -rw-r--r-- | include/Accessor.h | 102 | 
1 files changed, 26 insertions, 76 deletions
| diff --git a/include/Accessor.h b/include/Accessor.h index 031ad7a91..fc67f07c0 100644 --- a/include/Accessor.h +++ b/include/Accessor.h @@ -5,84 +5,34 @@  enum { wsSpace = 1, wsTab = 2, wsSpaceTab = 4, wsInconsistent=8}; -class Accessor { -protected: -	// bufferSize is a trade off between time taken to copy the characters and SendMessage overhead -	// slopSize positions the buffer before the desired position in case there is some backtracking -	enum {bufferSize=4000, slopSize=bufferSize/8}; -	char buf[bufferSize+1]; -	WindowID id; -	PropSet &props; -	int startPos; -	int endPos; -	int lenDoc; -	int offset;	// Optional but including an offset makes GCC generate better code  -	int codePage;	 -	bool InternalIsLeadByte(char ch); -	void Fill(int position); -public: -	Accessor(WindowID id_, PropSet &props_, int offset_=0) :  -			id(id_), props(props_), startPos(0x7FFFFFFF), endPos(0),  -			lenDoc(-1), offset(offset_), codePage(0) { -	} -	void SetCodePage(int codePage_) { codePage = codePage_; } -	char operator[](int position) { -		position += offset; -		if (position < startPos || position >= endPos) { -			Fill(position); -		} -		return buf[position - startPos]; -	} -	char SafeGetCharAt(int position, char chDefault=' ') { -		// Safe version of operator[], returning a defined value for invalid position  -		position += offset; -		if (position < startPos || position >= endPos) { -			Fill(position); -			if (position < startPos || position >= endPos) { -				// Position is outside range of document  -				return chDefault; -			} -		} -		return buf[position - startPos]; -	} -	bool IsLeadByte(char ch) { -		return codePage && InternalIsLeadByte(ch); -	} -	char StyleAt(int position); -	int GetLine(int position); -	int LineStart(int line); -	int LevelAt(int line); -	int Length(); -	void Flush() { -		startPos = 0x7FFFFFFF; -		lenDoc = -1; -	} -	int GetLineState(int line); -	int SetLineState(int line, int state); -	PropSet &GetPropSet() { return props; } -}; +class BufferAccess; -class StylingContext; +typedef bool (*PFNIsCommentLeader)(BufferAccess &styler, int pos, int len); -typedef bool (*PFNIsCommentLeader)(StylingContext &styler, int pos, int len); - -class StylingContext : public Accessor { -	char styleBuf[bufferSize]; -	int validLen; -	char chFlags; -	char chWhile; -	unsigned int startSeg; +// Interface to data in a Scintilla +class BufferAccess {  public: -	StylingContext(WindowID id_, PropSet &props_, int offset_=0) :  -		Accessor(id_,props_,offset_), validLen(0), chFlags(0) {} -	void StartAt(unsigned int start, char chMask=31); -	void SetFlags(char chFlags_, char chWhile_) {chFlags = chFlags_; chWhile = chWhile_; }; -	unsigned int GetStartSegment() { return startSeg; } -	void StartSegment(unsigned int pos); -	void ColourTo(unsigned int pos, int chAttr); -	int GetLine(int position); -	void SetLevel(int line, int level); -	void Flush(); -	int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0); +	virtual void SetCodePage(int codePage_)=0; +	virtual char operator[](int position)=0; +	virtual char SafeGetCharAt(int position, char chDefault=' ')=0; +	virtual bool IsLeadByte(char ch)=0; +	virtual char StyleAt(int position)=0; +	virtual int GetLine(int position)=0; +	virtual int LineStart(int line)=0; +	virtual int LevelAt(int line)=0; +	virtual int Length()=0; +	virtual void Flush()=0; +	virtual int GetLineState(int line)=0; +	virtual int SetLineState(int line, int state)=0; +	virtual PropSet &GetPropSet()=0; + +	// Style setting +	virtual void StartAt(unsigned int start, char chMask=31)=0; +	virtual void SetFlags(char chFlags_, char chWhile_)=0; +	virtual unsigned int GetStartSegment()=0; +	virtual void StartSegment(unsigned int pos)=0; +	virtual void ColourTo(unsigned int pos, int chAttr)=0; +	virtual void SetLevel(int line, int level)=0; +	virtual int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0)=0;  }; | 
