diff options
author | Neil <nyamatongwe@gmail.com> | 2017-05-21 23:08:04 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2017-05-21 23:08:04 +1000 |
commit | 3debda34b8aa21a770142a055b8fa7e4a8a7355f (patch) | |
tree | 64079ad63efbe256cac9639d58a38c9d6fd41e5b /src/ContractionState.cxx | |
parent | 8ef4f3d54de1328a1d9753f4317a5d7692a72ae8 (diff) | |
download | scintilla-mirror-3debda34b8aa21a770142a055b8fa7e4a8a7355f.tar.gz |
Make SparseVector work with move-only types.
Define UniqueString as a move-only string and use in a SparseVector for
ContractionState.
Remove SparseVector method specializations that are no longer needed.
Diffstat (limited to 'src/ContractionState.cxx')
-rw-r--r-- | src/ContractionState.cxx | 13 |
1 files changed, 7 insertions, 6 deletions
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 { |