X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/64a3ee5fd2926c3e5341af2e4d62925fddb90c43..c0ad3d42d5eb619556a3905df22338360b1f6fcc:/src/stc/scintilla/include/Accessor.h diff --git a/src/stc/scintilla/include/Accessor.h b/src/stc/scintilla/include/Accessor.h index 031ad7a914..17c9510672 100644 --- a/src/stc/scintilla/include/Accessor.h +++ b/src/stc/scintilla/include/Accessor.h @@ -1,41 +1,46 @@ -// SciTE - Scintilla based Text Editor -// Accessor.h - rapid easy access to contents of a Scintilla -// Copyright 1998-2000 by Neil Hodgson +// Scintilla source code edit control +/** @file Accessor.h + ** Rapid easy access to contents of a Scintilla. + **/ +// Copyright 1998-2001 by Neil Hodgson // The License.txt file describes the conditions under which this software may be distributed. enum { wsSpace = 1, wsTab = 2, wsSpaceTab = 4, wsInconsistent=8}; +class Accessor; + +typedef bool (*PFNIsCommentLeader)(Accessor &styler, int pos, int len); + +/** + * Interface to data in a Scintilla. + */ 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 {extremePosition=0x7FFFFFFF}; + /** @a bufferSize is a trade off between time taken to copy the characters + * and retrieval overhead. + * @a 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); + + virtual bool InternalIsLeadByte(char ch)=0; + virtual void Fill(int position)=0; + 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_; } + Accessor() : startPos(extremePosition), endPos(0), codePage(0) {} + virtual ~Accessor() {} char operator[](int position) { - position += offset; if (position < startPos || position >= endPos) { Fill(position); } return buf[position - startPos]; } + /** Safe version of operator[], returning a defined value for invalid position. */ 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) { @@ -48,41 +53,25 @@ public: 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 StylingContext; + void SetCodePage(int codePage_) { codePage = codePage_; } -typedef bool (*PFNIsCommentLeader)(StylingContext &styler, int pos, int len); + 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 int GetPropertyInt(const char *key, int defaultValue=0)=0; + virtual char *GetProperties()=0; -class StylingContext : public Accessor { - char styleBuf[bufferSize]; - int validLen; - char chFlags; - char chWhile; - unsigned int startSeg; -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); + // 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; }; -