aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/Accessor.h39
-rw-r--r--include/WindowAccessor.h31
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);