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;  }; | 
