updated Scintilla to 2.29
[TortoiseGit.git] / ext / scintilla / src / PerLine.h
blob42081a862decce4cf647c495d72986d551f22bc2
1 // Scintilla source code edit control
2 /** @file PerLine.h
3 ** Manages data associated with each line of the document
4 **/
5 // Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
8 #ifndef PERLINE_H
9 #define PERLINE_H
11 #ifdef SCI_NAMESPACE
12 namespace Scintilla {
13 #endif
15 /**
16 * This holds the marker identifier and the marker type to display.
17 * MarkerHandleNumbers are members of lists.
19 struct MarkerHandleNumber {
20 int handle;
21 int number;
22 MarkerHandleNumber *next;
25 /**
26 * A marker handle set contains any number of MarkerHandleNumbers.
28 class MarkerHandleSet {
29 MarkerHandleNumber *root;
31 public:
32 MarkerHandleSet();
33 ~MarkerHandleSet();
34 int Length() const;
35 int NumberFromHandle(int handle) const;
36 int MarkValue() const; ///< Bit set of marker numbers.
37 bool Contains(int handle) const;
38 bool InsertHandle(int handle, int markerNum);
39 void RemoveHandle(int handle);
40 bool RemoveNumber(int markerNum);
41 void CombineWith(MarkerHandleSet *other);
44 class LineMarkers : public PerLine {
45 SplitVector<MarkerHandleSet *> markers;
46 /// Handles are allocated sequentially and should never have to be reused as 32 bit ints are very big.
47 int handleCurrent;
48 public:
49 LineMarkers() : handleCurrent(0) {
51 virtual ~LineMarkers();
52 virtual void Init();
53 virtual void InsertLine(int line);
54 virtual void RemoveLine(int line);
56 int MarkValue(int line);
57 int AddMark(int line, int marker, int lines);
58 void MergeMarkers(int pos);
59 bool DeleteMark(int line, int markerNum, bool all);
60 void DeleteMarkFromHandle(int markerHandle);
61 int LineFromHandle(int markerHandle);
64 class LineLevels : public PerLine {
65 SplitVector<int> levels;
66 public:
67 virtual ~LineLevels();
68 virtual void Init();
69 virtual void InsertLine(int line);
70 virtual void RemoveLine(int line);
72 void ExpandLevels(int sizeNew=-1);
73 void ClearLevels();
74 int SetLevel(int line, int level, int lines);
75 int GetLevel(int line);
78 class LineState : public PerLine {
79 SplitVector<int> lineStates;
80 public:
81 LineState() {
83 virtual ~LineState();
84 virtual void Init();
85 virtual void InsertLine(int line);
86 virtual void RemoveLine(int line);
88 int SetLineState(int line, int state);
89 int GetLineState(int line);
90 int GetMaxLineState();
93 class LineAnnotation : public PerLine {
94 SplitVector<char *> annotations;
95 public:
96 LineAnnotation() {
98 virtual ~LineAnnotation();
99 virtual void Init();
100 virtual void InsertLine(int line);
101 virtual void RemoveLine(int line);
103 bool AnySet() const;
104 bool MultipleStyles(int line) const;
105 int Style(int line);
106 const char *Text(int line) const;
107 const unsigned char *Styles(int line) const;
108 void SetText(int line, const char *text);
109 void ClearAll();
110 void SetStyle(int line, int style);
111 void SetStyles(int line, const unsigned char *styles);
112 int Length(int line) const;
113 int Lines(int line) const;
116 #ifdef SCI_NAMESPACE
118 #endif
120 #endif