aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--cocoa/ScintillaCocoa.h1
-rw-r--r--gtk/ScintillaGTK.cxx1
-rw-r--r--gtk/ScintillaGTKAccessible.cxx1
-rw-r--r--qt/ScintillaEdit/ScintillaDocument.cpp1
-rw-r--r--qt/ScintillaEditBase/ScintillaQt.h1
-rw-r--r--scripts/HeaderOrder.txt1
-rw-r--r--src/ContractionState.cxx13
-rw-r--r--src/ContractionState.h2
-rw-r--r--src/EditModel.cxx2
-rw-r--r--src/EditView.cxx1
-rw-r--r--src/Editor.cxx1
-rw-r--r--src/MarginView.cxx1
-rw-r--r--src/PositionCache.cxx1
-rw-r--r--src/ScintillaBase.cxx1
-rw-r--r--src/SparseVector.h105
-rw-r--r--src/UniqueString.h34
-rw-r--r--test/unit/testContractionState.cxx11
-rw-r--r--test/unit/testSparseVector.cxx75
-rw-r--r--win32/ScintillaWin.cxx1
-rw-r--r--win32/deps.mak118
-rw-r--r--win32/scintilla.mak11
21 files changed, 235 insertions, 148 deletions
diff --git a/cocoa/ScintillaCocoa.h b/cocoa/ScintillaCocoa.h
index 4b0b2eb1d..7b9231012 100644
--- a/cocoa/ScintillaCocoa.h
+++ b/cocoa/ScintillaCocoa.h
@@ -33,6 +33,7 @@
#endif
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index b28483f00..0737b71f1 100644
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -46,6 +46,7 @@
#include "LexerModule.h"
#endif
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/gtk/ScintillaGTKAccessible.cxx b/gtk/ScintillaGTKAccessible.cxx
index aede7dd4e..fdcc20dbd 100644
--- a/gtk/ScintillaGTKAccessible.cxx
+++ b/gtk/ScintillaGTKAccessible.cxx
@@ -95,6 +95,7 @@
#include "LexerModule.h"
#endif
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/qt/ScintillaEdit/ScintillaDocument.cpp b/qt/ScintillaEdit/ScintillaDocument.cpp
index 5a6ef200c..076292c95 100644
--- a/qt/ScintillaEdit/ScintillaDocument.cpp
+++ b/qt/ScintillaEdit/ScintillaDocument.cpp
@@ -15,6 +15,7 @@
#include "Scintilla.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/qt/ScintillaEditBase/ScintillaQt.h b/qt/ScintillaEditBase/ScintillaQt.h
index fbf61bc10..2aceb1e00 100644
--- a/qt/ScintillaEditBase/ScintillaQt.h
+++ b/qt/ScintillaEditBase/ScintillaQt.h
@@ -30,6 +30,7 @@
#include "Platform.h"
#include "ILexer.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/scripts/HeaderOrder.txt b/scripts/HeaderOrder.txt
index 13373ae33..768fce341 100644
--- a/scripts/HeaderOrder.txt
+++ b/scripts/HeaderOrder.txt
@@ -105,6 +105,7 @@
#include "Catalogue.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/src/ContractionState.cxx b/src/ContractionState.cxx
index 6fca2ec4e..c56c5647b 100644
--- a/src/ContractionState.cxx
+++ b/src/ContractionState.cxx
@@ -17,6 +17,7 @@
#include "Platform.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
@@ -39,7 +40,7 @@ void ContractionState::EnsureData() {
visible.reset(new RunStyles());
expanded.reset(new RunStyles());
heights.reset(new RunStyles());
- foldDisplayTexts.reset(new SparseVector<const char *>());
+ foldDisplayTexts.reset(new SparseVector<UniqueString>());
displayLines.reset(new Partitioning(4));
InsertLines(0, linesInDocument);
}
@@ -111,7 +112,7 @@ void ContractionState::InsertLine(Sci::Line lineDoc) {
heights->InsertSpace(lineDoc, 1);
heights->SetValueAt(lineDoc, 1);
foldDisplayTexts->InsertSpace(lineDoc, 1);
- foldDisplayTexts->SetValueAt(lineDoc, NULL);
+ foldDisplayTexts->SetValueAt(lineDoc, nullptr);
Sci::Line lineDisplay = DisplayFromDoc(lineDoc);
displayLines->InsertPartition(lineDoc, lineDisplay);
displayLines->InsertText(lineDoc, 1);
@@ -191,14 +192,14 @@ bool ContractionState::HiddenLines() const {
const char *ContractionState::GetFoldDisplayText(Sci::Line lineDoc) const {
Check();
- return foldDisplayTexts->ValueAt(lineDoc);
+ return foldDisplayTexts->ValueAt(lineDoc).get();
}
bool ContractionState::SetFoldDisplayText(Sci::Line lineDoc, const char *text) {
EnsureData();
- const char *foldText = foldDisplayTexts->ValueAt(lineDoc);
- if (!foldText || 0 != strcmp(text, foldText)) {
- foldDisplayTexts->SetValueAt(lineDoc, text);
+ const char *foldText = foldDisplayTexts->ValueAt(lineDoc).get();
+ if (!foldText || !text || 0 != strcmp(text, foldText)) {
+ foldDisplayTexts->SetValueAt(lineDoc, UniqueStringCopy(text));
Check();
return true;
} else {
diff --git a/src/ContractionState.h b/src/ContractionState.h
index 1e4c3f58f..1070fb59f 100644
--- a/src/ContractionState.h
+++ b/src/ContractionState.h
@@ -22,7 +22,7 @@ class ContractionState {
std::unique_ptr<RunStyles> visible;
std::unique_ptr<RunStyles> expanded;
std::unique_ptr<RunStyles> heights;
- std::unique_ptr<SparseVector<const char *>> foldDisplayTexts;
+ std::unique_ptr<SparseVector<UniqueString>> foldDisplayTexts;
std::unique_ptr<Partitioning> displayLines;
Sci::Line linesInDocument;
diff --git a/src/EditModel.cxx b/src/EditModel.cxx
index 292ce954c..faf21623e 100644
--- a/src/EditModel.cxx
+++ b/src/EditModel.cxx
@@ -8,6 +8,7 @@
#include <cstddef>
#include <cstdlib>
#include <cassert>
+#include <cstring>
#include <cmath>
#include <stdexcept>
@@ -24,6 +25,7 @@
#include "StringCopy.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/src/EditView.cxx b/src/EditView.cxx
index 808daa6fa..089862515 100644
--- a/src/EditView.cxx
+++ b/src/EditView.cxx
@@ -28,6 +28,7 @@
#include "StringCopy.h"
#include "CharacterSet.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/src/Editor.cxx b/src/Editor.cxx
index 63ec27786..2ad440db3 100644
--- a/src/Editor.cxx
+++ b/src/Editor.cxx
@@ -27,6 +27,7 @@
#include "StringCopy.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/src/MarginView.cxx b/src/MarginView.cxx
index e371a4891..7ecc85c7b 100644
--- a/src/MarginView.cxx
+++ b/src/MarginView.cxx
@@ -27,6 +27,7 @@
#include "StringCopy.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/src/PositionCache.cxx b/src/PositionCache.cxx
index 2099046b8..591cf2254 100644
--- a/src/PositionCache.cxx
+++ b/src/PositionCache.cxx
@@ -22,6 +22,7 @@
#include "Scintilla.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/src/ScintillaBase.cxx b/src/ScintillaBase.cxx
index 0fbf555d1..3979354eb 100644
--- a/src/ScintillaBase.cxx
+++ b/src/ScintillaBase.cxx
@@ -34,6 +34,7 @@
#endif
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/src/SparseVector.h b/src/SparseVector.h
index ce38d0da1..230871ccc 100644
--- a/src/SparseVector.h
+++ b/src/SparseVector.h
@@ -19,45 +19,18 @@ class SparseVector {
private:
std::unique_ptr<Partitioning> starts;
std::unique_ptr<SplitVector<T>> values;
+ T empty;
// Deleted so SparseVector objects can not be copied.
SparseVector(const SparseVector &) = delete;
void operator=(const SparseVector &) = delete;
void ClearValue(int partition) {
values->SetValueAt(partition, T());
}
- void CommonSetValueAt(int position, T value) {
- // Do the work of setting the value to allow for specialization of SetValueAt.
- assert(position < Length());
- const int partition = starts->PartitionFromPosition(position);
- const int startPartition = starts->PositionFromPartition(partition);
- if (value == T()) {
- // Setting the empty value is equivalent to deleting the position
- if (position == 0) {
- ClearValue(partition);
- } else if (position == startPartition) {
- // Currently an element at this position, so remove
- ClearValue(partition);
- starts->RemovePartition(partition);
- values->Delete(partition);
- }
- // Else element remains empty
- } else {
- if (position == startPartition) {
- // Already a value at this position, so replace
- ClearValue(partition);
- values->SetValueAt(partition, value);
- } else {
- // Insert a new element
- starts->InsertPartition(partition + 1, position);
- values->InsertValue(partition + 1, 1, value);
- }
- }
- }
public:
- SparseVector() {
+ SparseVector() : empty() {
starts.reset(new Partitioning(8));
values.reset(new SplitVector<T>());
- values->InsertValue(0, 2, T());
+ values->InsertEmpty(0, 2);
}
~SparseVector() {
starts.reset();
@@ -76,39 +49,60 @@ public:
int PositionOfElement(int element) const {
return starts->PositionFromPartition(element);
}
- T ValueAt(int position) const {
+ const T& ValueAt(int position) const {
assert(position < Length());
const int partition = starts->PartitionFromPosition(position);
const int startPartition = starts->PositionFromPartition(partition);
if (startPartition == position) {
return values->ValueAt(partition);
} else {
- return T();
+ return empty;
}
}
- void SetValueAt(int position, T value) {
- CommonSetValueAt(position, value);
+ template <typename ParamType>
+ void SetValueAt(int position, ParamType &&value) {
+ assert(position < Length());
+ const int partition = starts->PartitionFromPosition(position);
+ const int startPartition = starts->PositionFromPartition(partition);
+ if (value == T()) {
+ // Setting the empty value is equivalent to deleting the position
+ if (position == 0) {
+ ClearValue(partition);
+ } else if (position == startPartition) {
+ // Currently an element at this position, so remove
+ ClearValue(partition);
+ starts->RemovePartition(partition);
+ values->Delete(partition);
+ }
+ // Else element remains empty
+ } else {
+ if (position == startPartition) {
+ // Already a value at this position, so replace
+ ClearValue(partition);
+ values->SetValueAt(partition, std::move(value));
+ } else {
+ // Insert a new element
+ starts->InsertPartition(partition + 1, position);
+ values->Insert(partition + 1, std::move(value));
+ }
+ }
}
void InsertSpace(int position, int insertLength) {
assert(position <= Length()); // Only operation that works at end.
const int partition = starts->PartitionFromPosition(position);
const int startPartition = starts->PositionFromPartition(partition);
if (startPartition == position) {
- T valueCurrent = values->ValueAt(partition);
+ const bool positionOccupied = values->ValueAt(partition) != T();
// Inserting at start of run so make previous longer
if (partition == 0) {
- // Inserting at start of document so ensure 0
- if (valueCurrent != T()) {
- // Since valueCurrent is needed again, should not ClearValue
- values->SetValueAt(0, T());
+ // Inserting at start of document so ensure start empty
+ if (positionOccupied) {
starts->InsertPartition(1, 0);
- values->InsertValue(1, 1, valueCurrent);
- starts->InsertText(0, insertLength);
- } else {
- starts->InsertText(partition, insertLength);
+ values->InsertEmpty(0, 1);
}
+ starts->InsertText(partition, insertLength);
} else {
- if (valueCurrent != T()) {
+ if (positionOccupied) {
starts->InsertText(partition - 1, insertLength);
} else {
// Insert at end of run so do not extend style
@@ -157,29 +151,6 @@ public:
}
};
-// The specialization for const char * makes copies and deletes them as needed.
-
-template<>
-inline void SparseVector<const char *>::ClearValue(int partition) {
- const char *value = values->ValueAt(partition);
- delete []value;
- value = nullptr;
- values->SetValueAt(partition, value);
-}
-
-template<>
-inline void SparseVector<const char *>::SetValueAt(int position, const char *value) {
- // Make a copy of the string
- if (value) {
- const size_t len = strlen(value);
- char *valueCopy = new char[len + 1]();
- std::copy(value, value + len, valueCopy);
- CommonSetValueAt(position, valueCopy);
- } else {
- CommonSetValueAt(position, nullptr);
- }
-}
-
#ifdef SCI_NAMESPACE
}
#endif
diff --git a/src/UniqueString.h b/src/UniqueString.h
new file mode 100644
index 000000000..07da0f171
--- /dev/null
+++ b/src/UniqueString.h
@@ -0,0 +1,34 @@
+// Scintilla source code edit control
+/** @file UniqueString.h
+ ** Define UniqueString, a unique_ptr based string type for storage in containers
+ ** and an allocator for UniqueString.
+ **/
+// Copyright 2017 by Neil Hodgson <neilh@scintilla.org>
+// The License.txt file describes the conditions under which this software may be distributed.
+
+#ifndef UNIQUESTRING_H
+#define UNIQUESTRING_H
+
+#ifdef SCI_NAMESPACE
+namespace Scintilla {
+#endif
+
+using UniqueString = std::unique_ptr<const char[]>;
+
+/// Equivalent to strdup but produces a std::unique_ptr<const char[]> allocation to go
+/// into collections.
+inline UniqueString UniqueStringCopy(const char *text) {
+ if (!text) {
+ return UniqueString();
+ }
+ const size_t len = strlen(text);
+ char *sNew = new char[len + 1];
+ std::copy(text, text + len + 1, sNew);
+ return UniqueString(sNew);
+}
+
+#ifdef SCI_NAMESPACE
+}
+#endif
+
+#endif
diff --git a/test/unit/testContractionState.cxx b/test/unit/testContractionState.cxx
index 8b401dcb6..4f7a522a4 100644
--- a/test/unit/testContractionState.cxx
+++ b/test/unit/testContractionState.cxx
@@ -10,6 +10,7 @@
#include "Platform.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
@@ -141,4 +142,14 @@ TEST_CASE("ContractionState") {
REQUIRE(1 == cs.GetHeight(2));
}
+ SECTION("SetFoldDisplayText") {
+ cs.InsertLines(0, 4);
+ cs.SetFoldDisplayText(1, "abc");
+ REQUIRE(strcmp(cs.GetFoldDisplayText(1), "abc") == 0);
+ cs.SetFoldDisplayText(1, "def");
+ REQUIRE(strcmp(cs.GetFoldDisplayText(1), "def") == 0);
+ cs.SetFoldDisplayText(1, nullptr);
+ REQUIRE(static_cast<const char *>(nullptr) == cs.GetFoldDisplayText(1));
+ }
+
}
diff --git a/test/unit/testSparseVector.cxx b/test/unit/testSparseVector.cxx
index 16498397a..c4c3a6ab1 100644
--- a/test/unit/testSparseVector.cxx
+++ b/test/unit/testSparseVector.cxx
@@ -11,6 +11,7 @@
#include "Platform.h"
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "SparseVector.h"
@@ -21,11 +22,11 @@
// Helper to produce a string representation of a SparseVector<const char *>
// to simplify checks.
-static std::string Representation(const SparseVector<const char *> &st) {
+static std::string Representation(const SparseVector<UniqueString> &st) {
std::string ret;
for (int i = 0;i < st.Length();i++) {
- const char *value = st.ValueAt(i);
- if (value)
+ const char *value = st.ValueAt(i).get();
+ if (value && *value)
ret += value;
else
ret += "-";
@@ -35,7 +36,7 @@ static std::string Representation(const SparseVector<const char *> &st) {
TEST_CASE("SparseVector") {
- SparseVector<const char *> st;
+ SparseVector<UniqueString> st;
SECTION("IsEmptyInitially") {
REQUIRE(1 == st.Elements());
@@ -46,24 +47,26 @@ TEST_CASE("SparseVector") {
SECTION("InsertSpace") {
st.InsertSpace(0, 5);
REQUIRE(1 == st.Elements());
- REQUIRE(static_cast<const char *>(nullptr) == st.ValueAt(0));
- REQUIRE(static_cast<const char *>(nullptr) == st.ValueAt(1));
- REQUIRE(static_cast<const char *>(nullptr) == st.ValueAt(4));
+ REQUIRE(static_cast<const char *>(nullptr) == st.ValueAt(0).get());
+ REQUIRE(static_cast<const char *>(nullptr) == st.ValueAt(1).get());
+ REQUIRE(static_cast<const char *>(nullptr) == st.ValueAt(4).get());
st.Check();
}
SECTION("InsertValue") {
st.InsertSpace(0, 5);
- st.SetValueAt(3, "3");
+ st.SetValueAt(3, UniqueStringCopy("3"));
REQUIRE(2 == st.Elements());
REQUIRE("---3-" == Representation(st));
st.Check();
}
- SECTION("InsertAndDeleteValue") {
+ SECTION("InsertAndChangeAndDeleteValue") {
st.InsertSpace(0, 5);
REQUIRE(5 == st.Length());
- st.SetValueAt(3, "3");
+ st.SetValueAt(3, UniqueStringCopy("3"));
+ REQUIRE(2 == st.Elements());
+ st.SetValueAt(3, UniqueStringCopy("4"));
REQUIRE(2 == st.Elements());
st.DeletePosition(3);
REQUIRE(1 == st.Elements());
@@ -75,13 +78,13 @@ TEST_CASE("SparseVector") {
SECTION("InsertAndDeleteAtStart") {
REQUIRE(1 == st.Elements());
st.InsertSpace(0, 5);
- st.SetValueAt(0, "3");
+ st.SetValueAt(0, UniqueStringCopy("3"));
REQUIRE(1 == st.Elements());
REQUIRE("3----" == Representation(st));
st.DeletePosition(0);
REQUIRE(1 == st.Elements());
REQUIRE("----" == Representation(st));
- st.SetValueAt(0, "4");
+ st.SetValueAt(0, UniqueStringCopy("4"));
REQUIRE(1 == st.Elements());
REQUIRE("4---" == Representation(st));
st.DeletePosition(0);
@@ -93,7 +96,7 @@ TEST_CASE("SparseVector") {
SECTION("InsertStringAtStartThenInsertSpaceAtStart") {
REQUIRE(1 == st.Elements());
st.InsertSpace(0, 5);
- st.SetValueAt(0, "3");
+ st.SetValueAt(0, UniqueStringCopy("3"));
REQUIRE(1 == st.Elements());
REQUIRE("3----" == Representation(st));
st.InsertSpace(0, 1);
@@ -102,10 +105,42 @@ TEST_CASE("SparseVector") {
st.Check();
}
+ SECTION("InsertSpaceAfterStart") {
+ REQUIRE(1 == st.Elements());
+ st.InsertSpace(0, 5);
+ st.SetValueAt(1, UniqueStringCopy("1"));
+ REQUIRE(2 == st.Elements());
+ REQUIRE("-1---" == Representation(st));
+ st.InsertSpace(1, 1);
+ REQUIRE(2 == st.Elements());
+ REQUIRE("--1---" == Representation(st));
+ st.Check();
+ }
+
+ SECTION("InsertStringAt1ThenInsertLettersAt1") {
+ REQUIRE(1 == st.Elements());
+ st.InsertSpace(0, 5);
+ st.SetValueAt(1, UniqueStringCopy("9"));
+ REQUIRE(2 == st.Elements());
+ REQUIRE("-9---" == Representation(st));
+ st.InsertSpace(0, 1);
+ REQUIRE(2 == st.Elements());
+ REQUIRE("--9---" == Representation(st));
+ // Initial st has allocation of 9 values so this should cause reallocation
+ const std::string letters("ABCDEFGHIJKLMNOP"); // 16 letters
+ for (const char letter : letters) {
+ const char sLetter[] = { letter, 0 };
+ st.InsertSpace(0, 1);
+ st.SetValueAt(1, UniqueStringCopy(sLetter));
+ }
+ REQUIRE("-PONMLKJIHGFEDCBA-9---" == Representation(st));
+ st.Check();
+ }
+
SECTION("InsertAndDeleteAtEnd") {
REQUIRE(1 == st.Elements());
st.InsertSpace(0, 5);
- st.SetValueAt(4, "5");
+ st.SetValueAt(4, UniqueStringCopy("5"));
REQUIRE(2 == st.Elements());
REQUIRE("----5" == Representation(st));
st.DeletePosition(4);
@@ -117,7 +152,7 @@ TEST_CASE("SparseVector") {
SECTION("SetNULL") {
REQUIRE(1 == st.Elements());
st.InsertSpace(0, 5);
- st.SetValueAt(4, "5");
+ st.SetValueAt(4, UniqueStringCopy("5"));
REQUIRE(2 == st.Elements());
REQUIRE("----5" == Representation(st));
st.SetValueAt(4, nullptr);
@@ -129,10 +164,10 @@ TEST_CASE("SparseVector") {
SECTION("DeleteAll") {
REQUIRE(1 == st.Elements());
st.InsertSpace(0, 10);
- st.SetValueAt(9, "9");
- st.SetValueAt(7, "7");
- st.SetValueAt(4, "4");
- st.SetValueAt(3, "3");
+ st.SetValueAt(9, UniqueStringCopy("9"));
+ st.SetValueAt(7, UniqueStringCopy("7"));
+ st.SetValueAt(4, UniqueStringCopy("4"));
+ st.SetValueAt(3, UniqueStringCopy("3"));
REQUIRE(5 == st.Elements());
REQUIRE("---34--7-9" == Representation(st));
st.Check();
@@ -178,7 +213,7 @@ TEST_CASE("SparseTextString") {
SECTION("InsertAndDeleteValue") {
st.InsertSpace(0, 5);
REQUIRE(5 == st.Length());
- st.SetValueAt(3, "3");
+ st.SetValueAt(3, std::string("3"));
REQUIRE(2 == st.Elements());
REQUIRE("" == st.ValueAt(0));
REQUIRE("" == st.ValueAt(2));
diff --git a/win32/ScintillaWin.cxx b/win32/ScintillaWin.cxx
index e296844b7..81f288c72 100644
--- a/win32/ScintillaWin.cxx
+++ b/win32/ScintillaWin.cxx
@@ -55,6 +55,7 @@
#include "LexerModule.h"
#endif
#include "Position.h"
+#include "UniqueString.h"
#include "SplitVector.h"
#include "Partitioning.h"
#include "RunStyles.h"
diff --git a/win32/deps.mak b/win32/deps.mak
index 2faf1a1af..330eaec73 100644
--- a/win32/deps.mak
+++ b/win32/deps.mak
@@ -4,15 +4,16 @@ PlatWin.o: PlatWin.cxx ../include/Platform.h ../lexlib/StringCopy.h \
../src/XPM.h ../src/UniConversion.h ../src/FontQuality.h
ScintillaWin.o: ScintillaWin.cxx ../include/Platform.h \
../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/StringCopy.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h \
- ../src/XPM.h ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/CaseConvert.h ../src/UniConversion.h \
- ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
- ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
- ../src/AutoComplete.h ../src/ScintillaBase.h PlatWin.h HanjaDic.h
+ ../lexlib/StringCopy.h ../src/Position.h ../src/UniqueString.h \
+ ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
+ ../src/ContractionState.h ../src/CellBuffer.h ../src/CallTip.h \
+ ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
+ ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
+ ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
+ ../src/CaseConvert.h ../src/UniConversion.h ../src/Selection.h \
+ ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
+ ../src/EditView.h ../src/Editor.h ../src/AutoComplete.h \
+ ../src/ScintillaBase.h PlatWin.h HanjaDic.h
AutoComplete.o: ../src/AutoComplete.cxx ../include/Platform.h \
../include/Scintilla.h ../include/Sci_Position.h \
../lexlib/CharacterSet.h ../src/Position.h ../src/AutoComplete.h
@@ -32,8 +33,9 @@ CellBuffer.o: ../src/CellBuffer.cxx ../include/Platform.h \
../src/UniConversion.h
CharClassify.o: ../src/CharClassify.cxx ../src/CharClassify.h
ContractionState.o: ../src/ContractionState.cxx ../include/Platform.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/SparseVector.h ../src/ContractionState.h
+ ../src/Position.h ../src/UniqueString.h ../src/SplitVector.h \
+ ../src/Partitioning.h ../src/RunStyles.h ../src/SparseVector.h \
+ ../src/ContractionState.h
Decoration.o: ../src/Decoration.cxx ../include/Platform.h \
../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
@@ -47,33 +49,33 @@ Document.o: ../src/Document.cxx ../include/Platform.h ../include/ILexer.h \
../src/RESearch.h ../src/UniConversion.h ../src/UnicodeFromUTF8.h
EditModel.o: ../src/EditModel.cxx ../include/Platform.h \
../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/StringCopy.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h
+ ../lexlib/StringCopy.h ../src/Position.h ../src/UniqueString.h \
+ ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
+ ../src/ContractionState.h ../src/CellBuffer.h ../src/KeyMap.h \
+ ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h ../src/Style.h \
+ ../src/ViewStyle.h ../src/CharClassify.h ../src/Decoration.h \
+ ../src/CaseFolder.h ../src/Document.h ../src/UniConversion.h \
+ ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h
Editor.o: ../src/Editor.cxx ../include/Platform.h ../include/ILexer.h \
../include/Sci_Position.h ../include/Scintilla.h ../lexlib/StringCopy.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/PerLine.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h ../src/Editor.h
-EditView.o: ../src/EditView.cxx ../include/Platform.h ../include/ILexer.h \
- ../include/Sci_Position.h ../include/Scintilla.h ../lexlib/StringCopy.h \
- ../lexlib/CharacterSet.h ../src/Position.h ../src/SplitVector.h \
+ ../src/Position.h ../src/UniqueString.h ../src/SplitVector.h \
../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
../src/CellBuffer.h ../src/PerLine.h ../src/KeyMap.h ../src/Indicator.h \
../src/XPM.h ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
../src/Document.h ../src/UniConversion.h ../src/Selection.h \
../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h
+ ../src/EditView.h ../src/Editor.h
+EditView.o: ../src/EditView.cxx ../include/Platform.h ../include/ILexer.h \
+ ../include/Sci_Position.h ../include/Scintilla.h ../lexlib/StringCopy.h \
+ ../lexlib/CharacterSet.h ../src/Position.h ../src/UniqueString.h \
+ ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
+ ../src/ContractionState.h ../src/CellBuffer.h ../src/PerLine.h \
+ ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
+ ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
+ ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
+ ../src/UniConversion.h ../src/Selection.h ../src/PositionCache.h \
+ ../src/EditModel.h ../src/MarginView.h ../src/EditView.h
ExternalLexer.o: ../src/ExternalLexer.cxx ../include/Platform.h \
../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
../include/SciLexer.h ../lexlib/LexerModule.h ../src/Catalogue.h \
@@ -88,26 +90,27 @@ LineMarker.o: ../src/LineMarker.cxx ../include/Platform.h \
../src/XPM.h ../src/LineMarker.h
MarginView.o: ../src/MarginView.cxx ../include/Platform.h \
../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/StringCopy.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
- ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
- ../src/PositionCache.h ../src/EditModel.h ../src/MarginView.h \
- ../src/EditView.h
+ ../lexlib/StringCopy.h ../src/Position.h ../src/UniqueString.h \
+ ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
+ ../src/ContractionState.h ../src/CellBuffer.h ../src/KeyMap.h \
+ ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h ../src/Style.h \
+ ../src/ViewStyle.h ../src/CharClassify.h ../src/Decoration.h \
+ ../src/CaseFolder.h ../src/Document.h ../src/UniConversion.h \
+ ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
+ ../src/MarginView.h ../src/EditView.h
PerLine.o: ../src/PerLine.cxx ../include/Platform.h \
../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
../src/SplitVector.h ../src/Partitioning.h ../src/CellBuffer.h \
../src/PerLine.h
PositionCache.o: ../src/PositionCache.cxx ../include/Platform.h \
../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../src/Position.h ../src/SplitVector.h ../src/Partitioning.h \
- ../src/RunStyles.h ../src/ContractionState.h ../src/CellBuffer.h \
- ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
- ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
- ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
- ../src/UniConversion.h ../src/Selection.h ../src/PositionCache.h
+ ../src/Position.h ../src/UniqueString.h ../src/SplitVector.h \
+ ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
+ ../src/CellBuffer.h ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h \
+ ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
+ ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
+ ../src/Document.h ../src/UniConversion.h ../src/Selection.h \
+ ../src/PositionCache.h
RESearch.o: ../src/RESearch.cxx ../src/Position.h ../src/CharClassify.h \
../src/RESearch.h
RunStyles.o: ../src/RunStyles.cxx ../include/Platform.h \
@@ -115,13 +118,14 @@ RunStyles.o: ../src/RunStyles.cxx ../include/Platform.h \
../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h
ScintillaBase.o: ../src/ScintillaBase.cxx ../include/Platform.h \
../include/ILexer.h ../include/Sci_Position.h ../include/Scintilla.h \
- ../lexlib/PropSetSimple.h ../src/Position.h ../src/SplitVector.h \
- ../src/Partitioning.h ../src/RunStyles.h ../src/ContractionState.h \
- ../src/CellBuffer.h ../src/CallTip.h ../src/KeyMap.h ../src/Indicator.h \
- ../src/XPM.h ../src/LineMarker.h ../src/Style.h ../src/ViewStyle.h \
- ../src/CharClassify.h ../src/Decoration.h ../src/CaseFolder.h \
- ../src/Document.h ../src/Selection.h ../src/PositionCache.h \
- ../src/EditModel.h ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
+ ../lexlib/PropSetSimple.h ../src/Position.h ../src/UniqueString.h \
+ ../src/SplitVector.h ../src/Partitioning.h ../src/RunStyles.h \
+ ../src/ContractionState.h ../src/CellBuffer.h ../src/CallTip.h \
+ ../src/KeyMap.h ../src/Indicator.h ../src/XPM.h ../src/LineMarker.h \
+ ../src/Style.h ../src/ViewStyle.h ../src/CharClassify.h \
+ ../src/Decoration.h ../src/CaseFolder.h ../src/Document.h \
+ ../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
+ ../src/MarginView.h ../src/EditView.h ../src/Editor.h \
../src/AutoComplete.h ../src/ScintillaBase.h
Selection.o: ../src/Selection.cxx ../include/Platform.h \
../include/Scintilla.h ../include/Sci_Position.h ../src/Position.h \
@@ -382,6 +386,11 @@ LexHTML.o: ../lexers/LexHTML.cxx ../include/ILexer.h \
../lexlib/StringCopy.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
../lexlib/LexerModule.h
+LexIndent.o: ../lexers/LexIndent.cxx ../include/ILexer.h \
+ ../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
+ ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
+ ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+ ../lexlib/LexerModule.h
LexInno.o: ../lexers/LexInno.cxx ../include/ILexer.h \
../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
@@ -552,9 +561,10 @@ LexPS.o: ../lexers/LexPS.cxx ../include/ILexer.h \
../lexlib/LexerModule.h
LexPython.o: ../lexers/LexPython.cxx ../include/ILexer.h \
../include/Sci_Position.h ../include/Scintilla.h ../include/SciLexer.h \
- ../lexlib/WordList.h ../lexlib/LexAccessor.h ../lexlib/Accessor.h \
- ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
- ../lexlib/LexerModule.h ../lexlib/OptionSet.h ../lexlib/SubStyles.h
+ ../lexlib/StringCopy.h ../lexlib/WordList.h ../lexlib/LexAccessor.h \
+ ../lexlib/Accessor.h ../lexlib/StyleContext.h ../lexlib/CharacterSet.h \
+ ../lexlib/CharacterCategory.h ../lexlib/LexerModule.h \
+ ../lexlib/OptionSet.h ../lexlib/SubStyles.h
LexR.o: ../lexers/LexR.cxx ../include/ILexer.h ../include/Sci_Position.h \
../include/Scintilla.h ../include/SciLexer.h ../lexlib/WordList.h \
../lexlib/LexAccessor.h ../lexlib/Accessor.h ../lexlib/StyleContext.h \
diff --git a/win32/scintilla.mak b/win32/scintilla.mak
index 227578f81..339d9e533 100644
--- a/win32/scintilla.mak
+++ b/win32/scintilla.mak
@@ -347,6 +347,7 @@ $(DIR_O)\ContractionState.obj: \
../src/ContractionState.cxx \
../include/Platform.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -391,6 +392,7 @@ $(DIR_O)\EditModel.obj: \
../include/Scintilla.h \
../lexlib/StringCopy.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -418,6 +420,7 @@ $(DIR_O)\Editor.obj: \
../include/Scintilla.h \
../lexlib/StringCopy.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -450,6 +453,7 @@ $(DIR_O)\EditView.obj: \
../lexlib/StringCopy.h \
../lexlib/CharacterSet.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -779,6 +783,7 @@ $(DIR_O)\MarginView.obj: \
../include/Scintilla.h \
../lexlib/StringCopy.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -824,6 +829,7 @@ $(DIR_O)\PositionCache.obj: \
../include/Sci_Position.h \
../include/Scintilla.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -867,6 +873,7 @@ $(DIR_O)\ScintillaBase.obj: \
../include/Scintilla.h \
../lexlib/PropSetSimple.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -899,6 +906,7 @@ $(DIR_O)\ScintillaBaseL.obj: \
../include/Scintilla.h \
../lexlib/PropSetSimple.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -931,6 +939,7 @@ $(DIR_O)\ScintillaWin.obj: \
../include/Scintilla.h \
../lexlib/StringCopy.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -967,6 +976,7 @@ $(DIR_O)\ScintillaWinL.obj: \
../include/Scintilla.h \
../lexlib/StringCopy.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \
@@ -1003,6 +1013,7 @@ $(DIR_O)\ScintillaWinS.obj: \
../include/Scintilla.h \
../lexlib/StringCopy.h \
../src/Position.h \
+ ../src/UniqueString.h \
../src/SplitVector.h \
../src/Partitioning.h \
../src/RunStyles.h \