X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9ce192d417eb9eb614bcf8510e91dac318706249..2fe212b0336512aac9eace69fab09ce856b0bf4b:/src/stc/scintilla/include/Accessor.h?ds=inline diff --git a/src/stc/scintilla/include/Accessor.h b/src/stc/scintilla/include/Accessor.h index 1bba4af55e..17c9510672 100644 --- a/src/stc/scintilla/include/Accessor.h +++ b/src/stc/scintilla/include/Accessor.h @@ -1,36 +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 - void Fill(int position); + int codePage; + + 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_) { - } + 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) { @@ -40,37 +50,28 @@ public: } return buf[position - startPos]; } - char StyleAt(int position); - int GetLine(int position); - int LineStart(int line); - int LevelAt(int line); - int Length(); - void Flush() { - startPos = 0x7FFFFFFF; - lenDoc = -1; + bool IsLeadByte(char ch) { + return codePage && InternalIsLeadByte(ch); } - int GetLineState(int line); - int SetLineState(int line, int state); - PropSet &GetPropSet() { return props; } -}; + void SetCodePage(int codePage_) { codePage = codePage_; } -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_; }; - void ColourSegment(unsigned int start, unsigned int end, int chAttr); - 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(); -}; + 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; + // 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; +};