diff options
Diffstat (limited to 'src/Document.h')
-rw-r--r-- | src/Document.h | 231 |
1 files changed, 112 insertions, 119 deletions
diff --git a/src/Document.h b/src/Document.h index a76c97141..c56177487 100644 --- a/src/Document.h +++ b/src/Document.h @@ -12,13 +12,6 @@ namespace Scintilla { #endif -/** - * A Position is a position within a document between two characters or at the beginning or end. - * Sometimes used as a character index where it identifies the character after the position. - */ -typedef int Position; -const Position invalidPosition = -1; - enum EncodingFamily { efEightBit, efUnicode, efDBCS }; /** @@ -29,13 +22,13 @@ enum EncodingFamily { efEightBit, efUnicode, efDBCS }; */ class Range { public: - Position start; - Position end; + Sci::Position start; + Sci::Position end; - explicit Range(Position pos=0) : + explicit Range(Sci::Position pos=0) : start(pos), end(pos) { } - Range(Position start_, Position end_) : + Range(Sci::Position start_, Sci::Position end_) : start(start_), end(end_) { } @@ -44,19 +37,19 @@ public: } bool Valid() const { - return (start != invalidPosition) && (end != invalidPosition); + return (start != Sci::invalidPosition) && (end != Sci::invalidPosition); } - Position First() const { + Sci::Position First() const { return (start <= end) ? start : end; } - Position Last() const { + Sci::Position Last() const { return (start > end) ? start : end; } // Is the position within the range? - bool Contains(Position pos) const { + bool Contains(Sci::Position pos) const { if (start < end) { return (pos >= start && pos <= end); } else { @@ -65,7 +58,7 @@ public: } // Is the character after pos within the range? - bool ContainsCharacter(Position pos) const { + bool ContainsCharacter(Sci::Position pos) const { if (start < end) { return (pos >= start && pos < end); } else { @@ -97,11 +90,11 @@ class RegexSearchBase { public: virtual ~RegexSearchBase() {} - virtual long FindText(Document *doc, int minPos, int maxPos, const char *s, - bool caseSensitive, bool word, bool wordStart, int flags, int *length) = 0; + virtual long FindText(Document *doc, Sci::Position minPos, Sci::Position maxPos, const char *s, + bool caseSensitive, bool word, bool wordStart, int flags, Sci::Position *length) = 0; ///@return String with the substitutions, must remain valid until the next call or destruction - virtual const char *SubstituteByPosition(Document *doc, const char *text, int *length) = 0; + virtual const char *SubstituteByPosition(Document *doc, const char *text, Sci::Position *length) = 0; }; /// Factory function for RegexSearchBase @@ -142,30 +135,30 @@ public: firstChangeableLineAfter = -1; } - bool NeedsDrawing(int line) const { + bool NeedsDrawing(Sci::Line line) const { return isEnabled && (line <= firstChangeableLineBefore || line >= firstChangeableLineAfter); } - bool IsFoldBlockHighlighted(int line) const { + bool IsFoldBlockHighlighted(Sci::Line line) const { return isEnabled && beginFoldBlock != -1 && beginFoldBlock <= line && line <= endFoldBlock; } - bool IsHeadOfFoldBlock(int line) const { + bool IsHeadOfFoldBlock(Sci::Line line) const { return beginFoldBlock == line && line < endFoldBlock; } - bool IsBodyOfFoldBlock(int line) const { + bool IsBodyOfFoldBlock(Sci::Line line) const { return beginFoldBlock != -1 && beginFoldBlock < line && line < endFoldBlock; } - bool IsTailOfFoldBlock(int line) const { + bool IsTailOfFoldBlock(Sci::Line line) const { return beginFoldBlock != -1 && beginFoldBlock < line && line == endFoldBlock; } - int beginFoldBlock; // Begin of current fold block - int endFoldBlock; // End of current fold block - int firstChangeableLineBefore; // First line that triggers repaint before starting line that determined current fold block - int firstChangeableLineAfter; // First line that triggers repaint after starting line that determined current fold block + Sci::Line beginFoldBlock; // Begin of current fold block + Sci::Line endFoldBlock; // End of current fold block + Sci::Line firstChangeableLineBefore; // First line that triggers repaint before starting line that determined current fold block + Sci::Line firstChangeableLineAfter; // First line that triggers repaint after starting line that determined current fold block bool isEnabled; }; @@ -185,7 +178,7 @@ public: } virtual ~LexInterface() { } - void Colourise(int start, int end); + void Colourise(Sci::Position start, Sci::Position end); int LineEndTypesSupported(); bool UseContainerLexing() const { return instance == 0; @@ -218,7 +211,7 @@ private: CellBuffer cb; CharClassify charClass; CaseFolder *pcf; - int endStyled; + Sci::Position endStyled; int styleClock; int enteredModification; int enteredStyling; @@ -278,8 +271,8 @@ public: int GetLineEndTypesAllowed() const { return cb.GetLineEndTypes(); } bool SetLineEndTypesAllowed(int lineEndBitSet_); int GetLineEndTypesActive() const { return cb.GetLineEndTypes(); } - virtual void InsertLine(int line); - virtual void RemoveLine(int line); + virtual void InsertLine(Sci::Line line); + virtual void RemoveLine(Sci::Line line); int SCI_METHOD Version() const { return dvLineEnd; @@ -288,18 +281,18 @@ public: void SCI_METHOD SetErrorStatus(int status); Sci_Position SCI_METHOD LineFromPosition(Sci_Position pos) const; - int ClampPositionIntoDocument(int pos) const; - bool ContainsLineEnd(const char *s, int length) const { return cb.ContainsLineEnd(s, length); } - bool IsCrLf(int pos) const; - int LenChar(int pos); - bool InGoodUTF8(int pos, int &start, int &end) const; - int MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true) const; - int NextPosition(int pos, int moveDir) const; - bool NextCharacter(int &pos, int moveDir) const; // Returns true if pos changed - Document::CharacterExtracted CharacterAfter(int position) const; - Document::CharacterExtracted CharacterBefore(int position) const; + Sci::Position ClampPositionIntoDocument(Sci::Position pos) const; + bool ContainsLineEnd(const char *s, Sci::Position length) const { return cb.ContainsLineEnd(s, length); } + bool IsCrLf(Sci::Position pos) const; + int LenChar(Sci::Position pos); + bool InGoodUTF8(Sci::Position pos, Sci::Position &start, Sci::Position &end) const; + Sci::Position MovePositionOutsideChar(Sci::Position pos, Sci::Position moveDir, bool checkLineEnd=true) const; + Sci::Position NextPosition(Sci::Position pos, int moveDir) const; + bool NextCharacter(Sci::Position &pos, int moveDir) const; // Returns true if pos changed + Document::CharacterExtracted CharacterAfter(Sci::Position position) const; + Document::CharacterExtracted CharacterBefore(Sci::Position position) const; Sci_Position SCI_METHOD GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const; - int GetRelativePositionUTF16(int positionStart, int characterOffset) const; + Sci::Position GetRelativePositionUTF16(Sci::Position positionStart, Sci::Position characterOffset) const; int SCI_METHOD GetCharacterAndWidth(Sci_Position position, Sci_Position *pWidth) const; int SCI_METHOD CodePage() const; bool SCI_METHOD IsDBCSLeadByte(char ch) const; @@ -307,15 +300,15 @@ public: EncodingFamily CodePageFamily() const; // Gateways to modifying document - void ModifiedAt(int pos); + void ModifiedAt(Sci::Position pos); void CheckReadOnly(); - bool DeleteChars(int pos, int len); - int InsertString(int position, const char *s, int insertLength); - void ChangeInsertion(const char *s, int length); + bool DeleteChars(Sci::Position pos, Sci::Position len); + Sci::Position InsertString(Sci::Position position, const char *s, Sci::Position insertLength); + void ChangeInsertion(const char *s, Sci::Position length); int SCI_METHOD AddData(char *data, Sci_Position length); void * SCI_METHOD ConvertToDocument(); - int Undo(); - int Redo(); + Sci::Position Undo(); + Sci::Position Redo(); bool CanUndo() const { return cb.CanUndo(); } bool CanRedo() const { return cb.CanRedo(); } void DeleteUndoHistory() { cb.DeleteUndoHistory(); } @@ -325,7 +318,7 @@ public: bool IsCollectingUndo() const { return cb.IsCollectingUndo(); } void BeginUndoAction() { cb.BeginUndoAction(); } void EndUndoAction() { cb.EndUndoAction(); } - void AddUndoAction(int token, bool mayCoalesce) { cb.AddUndoAction(token, mayCoalesce); } + void AddUndoAction(Sci::Position token, bool mayCoalesce) { cb.AddUndoAction(token, mayCoalesce); } void SetSavePoint(); bool IsSavePoint() const { return cb.IsSavePoint(); } @@ -335,76 +328,76 @@ public: bool TentativeActive() const { return cb.TentativeActive(); } const char * SCI_METHOD BufferPointer() { return cb.BufferPointer(); } - const char *RangePointer(int position, int rangeLength) { return cb.RangePointer(position, rangeLength); } - int GapPosition() const { return cb.GapPosition(); } + const char *RangePointer(Sci::Position position, Sci::Position rangeLength) { return cb.RangePointer(position, rangeLength); } + Sci::Position GapPosition() const { return cb.GapPosition(); } int SCI_METHOD GetLineIndentation(Sci_Position line); - int SetLineIndentation(int line, int indent); - int GetLineIndentPosition(int line) const; - int GetColumn(int position); - int CountCharacters(int startPos, int endPos) const; - int CountUTF16(int startPos, int endPos) const; - int FindColumn(int line, int column); - void Indent(bool forwards, int lineBottom, int lineTop); + Sci::Position SetLineIndentation(Sci::Line line, Sci::Position indent); + Sci::Position GetLineIndentPosition(Sci::Line line) const; + Sci::Position GetColumn(Sci::Position position); + Sci::Position CountCharacters(Sci::Position startPos, Sci::Position endPos) const; + Sci::Position CountUTF16(Sci::Position startPos, Sci::Position endPos) const; + Sci::Position FindColumn(Sci::Line line, Sci::Position column); + void Indent(bool forwards, Sci::Line lineBottom, Sci::Line lineTop); static std::string TransformLineEnds(const char *s, size_t len, int eolModeWanted); void ConvertLineEnds(int eolModeSet); void SetReadOnly(bool set) { cb.SetReadOnly(set); } bool IsReadOnly() const { return cb.IsReadOnly(); } - void DelChar(int pos); - void DelCharBack(int pos); + void DelChar(Sci::Position pos); + void DelCharBack(Sci::Position pos); - char CharAt(int position) const { return cb.CharAt(position); } + char CharAt(Sci::Position position) const { return cb.CharAt(position); } void SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const { cb.GetCharRange(buffer, position, lengthRetrieve); } char SCI_METHOD StyleAt(Sci_Position position) const { return cb.StyleAt(position); } int StyleIndexAt(Sci_Position position) const { return static_cast<unsigned char>(cb.StyleAt(position)); } - void GetStyleRange(unsigned char *buffer, int position, int lengthRetrieve) const { + void GetStyleRange(unsigned char *buffer, Sci::Position position, Sci::Position lengthRetrieve) const { cb.GetStyleRange(buffer, position, lengthRetrieve); } - int GetMark(int line); - int MarkerNext(int lineStart, int mask) const; - int AddMark(int line, int markerNum); - void AddMarkSet(int line, int valueSet); - void DeleteMark(int line, int markerNum); + int GetMark(Sci::Line line); + Sci::Line MarkerNext(Sci::Line lineStart, int mask) const; + int AddMark(Sci::Line line, int markerNum); + void AddMarkSet(Sci::Line line, int valueSet); + void DeleteMark(Sci::Line line, int markerNum); void DeleteMarkFromHandle(int markerHandle); void DeleteAllMarks(int markerNum); - int LineFromHandle(int markerHandle); + Sci::Line LineFromHandle(int markerHandle); Sci_Position SCI_METHOD LineStart(Sci_Position line) const; - bool IsLineStartPosition(int position) const; + bool IsLineStartPosition(Sci::Position position) const; Sci_Position SCI_METHOD LineEnd(Sci_Position line) const; - int LineEndPosition(int position) const; - bool IsLineEndPosition(int position) const; - bool IsPositionInLineEnd(int position) const; - int VCHomePosition(int position) const; + Sci::Position LineEndPosition(Sci::Position position) const; + bool IsLineEndPosition(Sci::Position position) const; + bool IsPositionInLineEnd(Sci::Position position) const; + Sci::Position VCHomePosition(Sci::Position position) const; int SCI_METHOD SetLevel(Sci_Position line, int level); int SCI_METHOD GetLevel(Sci_Position line) const; void ClearLevels(); - int GetLastChild(int lineParent, int level=-1, int lastLine=-1); - int GetFoldParent(int line) const; - void GetHighlightDelimiters(HighlightDelimiter &hDelimiter, int line, int lastLine); + Sci::Line GetLastChild(Sci::Line lineParent, int level=-1, Sci::Line lastLine=-1); + Sci::Line GetFoldParent(Sci::Line line) const; + void GetHighlightDelimiters(HighlightDelimiter &hDelimiter, Sci::Line line, Sci::Line lastLine); void Indent(bool forwards); - int ExtendWordSelect(int pos, int delta, bool onlyWordCharacters=false) const; - int NextWordStart(int pos, int delta) const; - int NextWordEnd(int pos, int delta) const; + Sci::Position ExtendWordSelect(Sci::Position pos, int delta, bool onlyWordCharacters=false) const; + Sci::Position NextWordStart(Sci::Position pos, int delta) const; + Sci::Position NextWordEnd(Sci::Position pos, int delta) const; Sci_Position SCI_METHOD Length() const { return cb.Length(); } - void Allocate(int newSize) { cb.Allocate(newSize); } + void Allocate(Sci::Position newSize) { cb.Allocate(newSize); } - CharacterExtracted ExtractCharacter(int position) const; + CharacterExtracted ExtractCharacter(Sci::Position position) const; - bool IsWordStartAt(int pos) const; - bool IsWordEndAt(int pos) const; - bool IsWordAt(int start, int end) const; + bool IsWordStartAt(Sci::Position pos) const; + bool IsWordEndAt(Sci::Position pos) const; + bool IsWordAt(Sci::Position start, Sci::Position end) const; - bool MatchesWordOptions(bool word, bool wordStart, int pos, int length) const; + bool MatchesWordOptions(bool word, bool wordStart, Sci::Position pos, Sci::Position length) const; bool HasCaseFolder() const; void SetCaseFolder(CaseFolder *pcf_); - long FindText(int minPos, int maxPos, const char *search, int flags, int *length); - const char *SubstituteByPosition(const char *text, int *length); - int LinesTotal() const; + long FindText(Sci::Position minPos, Sci::Position maxPos, const char *search, int flags, Sci::Position *length); + const char *SubstituteByPosition(const char *text, Sci::Position *length); + Sci::Line LinesTotal() const; void SetDefaultCharClasses(bool includeWordClass); void SetCharClasses(const unsigned char *chars, CharClassify::cc newCharClass); @@ -412,9 +405,9 @@ public: void SCI_METHOD StartStyling(Sci_Position position, char mask); bool SCI_METHOD SetStyleFor(Sci_Position length, char style); bool SCI_METHOD SetStyles(Sci_Position length, const char *styles); - int GetEndStyled() const { return endStyled; } - void EnsureStyledTo(int pos); - void StyleToAdjustingLineDuration(int pos); + Sci::Position GetEndStyled() const { return endStyled; } + void EnsureStyledTo(Sci::Position pos); + void StyleToAdjustingLineDuration(Sci::Position pos); void LexerChanged(); int GetStyleClock() const { return styleClock; } void IncrementStyleClock(); @@ -425,20 +418,20 @@ public: int SCI_METHOD SetLineState(Sci_Position line, int state); int SCI_METHOD GetLineState(Sci_Position line) const; - int GetMaxLineState(); + Sci::Line GetMaxLineState(); void SCI_METHOD ChangeLexerState(Sci_Position start, Sci_Position end); - StyledText MarginStyledText(int line) const; - void MarginSetStyle(int line, int style); - void MarginSetStyles(int line, const unsigned char *styles); - void MarginSetText(int line, const char *text); + StyledText MarginStyledText(Sci::Line line) const; + void MarginSetStyle(Sci::Line line, int style); + void MarginSetStyles(Sci::Line line, const unsigned char *styles); + void MarginSetText(Sci::Line line, const char *text); void MarginClearAll(); - StyledText AnnotationStyledText(int line) const; - void AnnotationSetText(int line, const char *text); - void AnnotationSetStyle(int line, int style); - void AnnotationSetStyles(int line, const unsigned char *styles); - int AnnotationLines(int line) const; + StyledText AnnotationStyledText(Sci::Line line) const; + void AnnotationSetText(Sci::Line line, const char *text); + void AnnotationSetStyle(Sci::Line line, int style); + void AnnotationSetStyles(Sci::Line line, const unsigned char *styles); + int AnnotationLines(Sci::Line line) const; void AnnotationClearAll(); bool AddWatcher(DocWatcher *watcher, void *userData); @@ -447,14 +440,14 @@ public: bool IsASCIIWordByte(unsigned char ch) const; CharClassify::cc WordCharacterClass(unsigned int ch) const; bool IsWordPartSeparator(unsigned int ch) const; - int WordPartLeft(int pos) const; - int WordPartRight(int pos) const; - int ExtendStyleRange(int pos, int delta, bool singleLine = false); - bool IsWhiteLine(int line) const; - int ParaUp(int pos) const; - int ParaDown(int pos) const; + Sci::Position WordPartLeft(Sci::Position pos) const; + Sci::Position WordPartRight(Sci::Position pos) const; + Sci::Position ExtendStyleRange(Sci::Position pos, int delta, bool singleLine = false); + bool IsWhiteLine(Sci::Line line) const; + Sci::Position ParaUp(Sci::Position pos) const; + Sci::Position ParaDown(Sci::Position pos) const; int IndentSize() const { return actualIndentInChars; } - int BraceMatch(int position, int maxReStyle); + Sci::Position BraceMatch(Sci::Position position, Sci::Position maxReStyle); private: void NotifyModifyAttempt(); @@ -491,18 +484,18 @@ public: class DocModification { public: int modificationType; - int position; - int length; - int linesAdded; /**< Negative if lines deleted. */ + Sci::Position position; + Sci::Position length; + Sci::Line linesAdded; /**< Negative if lines deleted. */ const char *text; /**< Only valid for changes to text, not for changes to style. */ - int line; + Sci::Line line; int foldLevelNow; int foldLevelPrev; - int annotationLinesAdded; - int token; + Sci::Line annotationLinesAdded; + Sci::Position token; - DocModification(int modificationType_, int position_=0, int length_=0, - int linesAdded_=0, const char *text_=0, int line_=0) : + DocModification(int modificationType_, Sci::Position position_=0, Sci::Position length_=0, + Sci::Line linesAdded_=0, const char *text_=0, Sci::Line line_=0) : modificationType(modificationType_), position(position_), length(length_), @@ -514,7 +507,7 @@ public: annotationLinesAdded(0), token(0) {} - DocModification(int modificationType_, const Action &act, int linesAdded_=0) : + DocModification(int modificationType_, const Action &act, Sci::Line linesAdded_=0) : modificationType(modificationType_), position(act.position), length(act.lenData), @@ -539,7 +532,7 @@ public: virtual void NotifySavePoint(Document *doc, void *userData, bool atSavePoint) = 0; virtual void NotifyModified(Document *doc, DocModification mh, void *userData) = 0; virtual void NotifyDeleted(Document *doc, void *userData) = 0; - virtual void NotifyStyleNeeded(Document *doc, void *userData, int endPos) = 0; + virtual void NotifyStyleNeeded(Document *doc, void *userData, Sci::Position endPos) = 0; virtual void NotifyLexerChanged(Document *doc, void *userData) = 0; virtual void NotifyErrorOccurred(Document *doc, void *userData, int status) = 0; }; |