]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/stc/scintilla/include/Accessor.h
added the keyboard sample
[wxWidgets.git] / contrib / src / stc / scintilla / include / Accessor.h
index 1bba4af55e91f47b1197ea6b109f786657ca57ce..17c951067221fa0b246dab36e7ee9194da39d462 100644 (file)
@@ -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 <neilh@scintilla.org>
+// Scintilla source code edit control
+/** @file Accessor.h
+ ** Rapid easy access to contents of a Scintilla.
+ **/
+// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>
 // The License.txt file describes the conditions under which this software may be distributed.
 
 // 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:
 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];
        enum {bufferSize=4000, slopSize=bufferSize/8};
        char buf[bufferSize+1];
-       WindowID id;
-       PropSet &props;
        int startPos;
        int endPos;
        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:
 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) {
        char operator[](int position) {
-               position += offset;
                if (position < startPos || position >= endPos) {
                        Fill(position);
                }
                return buf[position - startPos];
        }
                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=' ') {
        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) {
                if (position < startPos || position >= endPos) {
                        Fill(position);
                        if (position < startPos || position >= endPos) {
@@ -40,37 +50,28 @@ public:
                }
                return buf[position - startPos];
        }
                }
                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;
+};