Set the working directory on Windows very early to also help code which uses relative...
[geany-mirror.git] / scintilla / src / PerLine.h
blob50ce1e551f9d71eba38ecb7bc1dbf7ac8670130f
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, bool all);
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 MarkerNext(int lineStart, int mask) const;
58 int AddMark(int line, int marker, int lines);
59 void MergeMarkers(int pos);
60 bool DeleteMark(int line, int markerNum, bool all);
61 void DeleteMarkFromHandle(int markerHandle);
62 int LineFromHandle(int markerHandle);
65 class LineLevels : public PerLine {
66 SplitVector<int> levels;
67 public:
68 virtual ~LineLevels();
69 virtual void Init();
70 virtual void InsertLine(int line);
71 virtual void RemoveLine(int line);
73 void ExpandLevels(int sizeNew=-1);
74 void ClearLevels();
75 int SetLevel(int line, int level, int lines);
76 int GetLevel(int line);
79 class LineState : public PerLine {
80 SplitVector<int> lineStates;
81 public:
82 LineState() {
84 virtual ~LineState();
85 virtual void Init();
86 virtual void InsertLine(int line);
87 virtual void RemoveLine(int line);
89 int SetLineState(int line, int state);
90 int GetLineState(int line);
91 int GetMaxLineState();
94 class LineAnnotation : public PerLine {
95 SplitVector<char *> annotations;
96 public:
97 LineAnnotation() {
99 virtual ~LineAnnotation();
100 virtual void Init();
101 virtual void InsertLine(int line);
102 virtual void RemoveLine(int line);
104 bool AnySet() const;
105 bool MultipleStyles(int line) const;
106 int Style(int line);
107 const char *Text(int line) const;
108 const unsigned char *Styles(int line) const;
109 void SetText(int line, const char *text);
110 void ClearAll();
111 void SetStyle(int line, int style);
112 void SetStyles(int line, const unsigned char *styles);
113 int Length(int line) const;
114 int Lines(int line) const;
117 #ifdef SCI_NAMESPACE
119 #endif
121 #endif