diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/Accessor.h | 39 | ||||
| -rw-r--r-- | include/WindowAccessor.h | 31 | 
2 files changed, 36 insertions, 34 deletions
| diff --git a/include/Accessor.h b/include/Accessor.h index b420397e2..aa3ba8e3b 100644 --- a/include/Accessor.h +++ b/include/Accessor.h @@ -11,11 +11,42 @@ typedef bool (*PFNIsCommentLeader)(Accessor &styler, int pos, int len);  // Interface to data in a Scintilla  class Accessor { +protected: +	enum {extremePosition=0x7FFFFFFF}; +	// bufferSize is a trade off between time taken to copy the characters and retrieval 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]; +	int startPos; +	int endPos; +	int codePage;	 + +	virtual bool InternalIsLeadByte(char ch)=0; +	virtual void Fill(int position)=0;  public: -	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; +	Accessor() : startPos(extremePosition), endPos(0), codePage(0) { } +	char operator[](int position) { +		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  +		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); +	} +	void SetCodePage(int codePage_) { codePage = codePage_; } +  	virtual char StyleAt(int position)=0;  	virtual int GetLine(int position)=0;  	virtual int LineStart(int line)=0; diff --git a/include/WindowAccessor.h b/include/WindowAccessor.h index a24ef9fa3..9f1750d52 100644 --- a/include/WindowAccessor.h +++ b/include/WindowAccessor.h @@ -4,16 +4,9 @@  class WindowAccessor : public 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 codePage;	  	char styleBuf[bufferSize];  	int validLen; @@ -25,29 +18,7 @@ protected:  	void Fill(int position);  public:  	WindowAccessor(WindowID id_, PropSet &props_) :  -			id(id_), props(props_), startPos(0x7FFFFFFF), endPos(0),  -			lenDoc(-1), codePage(0), validLen(0), chFlags(0) { -	} -	void SetCodePage(int codePage_) { codePage = codePage_; } -	char operator[](int position) { -		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  -		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); +		id(id_), props(props_), lenDoc(-1), validLen(0), chFlags(0) {  	}  	char StyleAt(int position);  	int GetLine(int position); | 
