From 782ada0bab34bb56c4023c070e6eb355ca32cdf2 Mon Sep 17 00:00:00 2001 From: Neil Date: Mon, 1 May 2017 14:03:31 +1000 Subject: Use std::unique_ptr to simplify ContractionState. --- src/ContractionState.cxx | 28 +++++++++++----------------- src/ContractionState.h | 12 ++++++------ 2 files changed, 17 insertions(+), 23 deletions(-) (limited to 'src') diff --git a/src/ContractionState.cxx b/src/ContractionState.cxx index 616f6bb87..60042bf88 100644 --- a/src/ContractionState.cxx +++ b/src/ContractionState.cxx @@ -26,8 +26,7 @@ using namespace Scintilla; #endif -ContractionState::ContractionState() : visible(0), expanded(0), heights(0), foldDisplayTexts(0), displayLines(0), linesInDocument(1) { - //InsertLine(0); +ContractionState::ContractionState() : linesInDocument(1) { } ContractionState::~ContractionState() { @@ -36,26 +35,21 @@ ContractionState::~ContractionState() { void ContractionState::EnsureData() { if (OneToOne()) { - visible = new RunStyles(); - expanded = new RunStyles(); - heights = new RunStyles(); - foldDisplayTexts = new SparseVector(); - displayLines = new Partitioning(4); + visible.reset(new RunStyles()); + expanded.reset(new RunStyles()); + heights.reset(new RunStyles()); + foldDisplayTexts.reset(new SparseVector()); + displayLines.reset(new Partitioning(4)); InsertLines(0, linesInDocument); } } void ContractionState::Clear() { - delete visible; - visible = 0; - delete expanded; - expanded = 0; - delete heights; - heights = 0; - delete foldDisplayTexts; - foldDisplayTexts = 0; - delete displayLines; - displayLines = 0; + visible.reset(); + expanded.reset(); + heights.reset(); + foldDisplayTexts.reset(); + displayLines.reset(); linesInDocument = 1; } diff --git a/src/ContractionState.h b/src/ContractionState.h index 5df68a0de..1e4c3f58f 100644 --- a/src/ContractionState.h +++ b/src/ContractionState.h @@ -19,11 +19,11 @@ class SparseVector; */ class ContractionState { // These contain 1 element for every document line. - RunStyles *visible; - RunStyles *expanded; - RunStyles *heights; - SparseVector *foldDisplayTexts; - Partitioning *displayLines; + std::unique_ptr visible; + std::unique_ptr expanded; + std::unique_ptr heights; + std::unique_ptr> foldDisplayTexts; + std::unique_ptr displayLines; Sci::Line linesInDocument; void EnsureData(); @@ -31,7 +31,7 @@ class ContractionState { bool OneToOne() const { // True when each document line is exactly one display line so need for // complex data structures. - return visible == 0; + return visible == nullptr; } public: -- cgit v1.2.3