aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2022-07-24 11:07:18 +1000
committerNeil <nyamatongwe@gmail.com>2022-07-24 11:07:18 +1000
commit2a5f482be8162c73edb263e222a9695e41a2a186 (patch)
tree283c58015e5ed63582184b750deed63baf7cbf2a
parent2a922d679ec36743287191fbd9f67a6fef9f7f1b (diff)
downloadscintilla-mirror-2a5f482be8162c73edb263e222a9695e41a2a186.tar.gz
Add line_cast function to simplify code and avoid warnings.
Unsure if this is worthwhile.
-rw-r--r--src/ContractionState.cxx52
1 files changed, 29 insertions, 23 deletions
diff --git a/src/ContractionState.cxx b/src/ContractionState.cxx
index eacda2ce2..b64e044ab 100644
--- a/src/ContractionState.cxx
+++ b/src/ContractionState.cxx
@@ -51,6 +51,12 @@ class ContractionState final : public IContractionState {
void InsertLine(Sci::Line lineDoc);
void DeleteLine(Sci::Line lineDoc);
+ // line_cast(): cast Sci::Line to either 32-bit or 64-bit value
+ // This avoids warnings from Visual C++ Code Analysis and shortens code
+ static constexpr LINE line_cast(Sci::Line line) noexcept {
+ return static_cast<LINE>(line);
+ }
+
public:
ContractionState() noexcept;
// Deleted so ContractionState objects can not be copied.
@@ -115,7 +121,7 @@ void ContractionState<LINE>::InsertLine(Sci::Line lineDoc) {
if (OneToOne()) {
linesInDocument++;
} else {
- const LINE lineDocCast = static_cast<LINE>(lineDoc);
+ const LINE lineDocCast = line_cast(lineDoc);
visible->InsertSpace(lineDocCast, 1);
visible->SetValueAt(lineDocCast, 1);
expanded->InsertSpace(lineDocCast, 1);
@@ -125,7 +131,7 @@ void ContractionState<LINE>::InsertLine(Sci::Line lineDoc) {
foldDisplayTexts->InsertSpace(lineDocCast, 1);
foldDisplayTexts->SetValueAt(lineDocCast, nullptr);
const Sci::Line lineDisplay = DisplayFromDoc(lineDoc);
- displayLines->InsertPartition(lineDocCast, static_cast<LINE>(lineDisplay));
+ displayLines->InsertPartition(lineDocCast, line_cast(lineDisplay));
displayLines->InsertText(lineDocCast, 1);
}
}
@@ -135,7 +141,7 @@ void ContractionState<LINE>::DeleteLine(Sci::Line lineDoc) {
if (OneToOne()) {
linesInDocument--;
} else {
- const LINE lineDocCast = static_cast<LINE>(lineDoc);
+ const LINE lineDocCast = line_cast(lineDoc);
if (GetVisible(lineDoc)) {
displayLines->InsertText(lineDocCast, -heights->ValueAt(lineDocCast));
}
@@ -171,7 +177,7 @@ Sci::Line ContractionState<LINE>::LinesDisplayed() const noexcept {
if (OneToOne()) {
return linesInDocument;
} else {
- return displayLines->PositionFromPartition(static_cast<LINE>(LinesInDoc()));
+ return displayLines->PositionFromPartition(line_cast(LinesInDoc()));
}
}
@@ -182,7 +188,7 @@ Sci::Line ContractionState<LINE>::DisplayFromDoc(Sci::Line lineDoc) const noexce
} else {
if (lineDoc > displayLines->Partitions())
lineDoc = displayLines->Partitions();
- return displayLines->PositionFromPartition(static_cast<LINE>(lineDoc));
+ return displayLines->PositionFromPartition(line_cast(lineDoc));
}
}
@@ -200,9 +206,9 @@ Sci::Line ContractionState<LINE>::DocFromDisplay(Sci::Line lineDisplay) const no
return 0;
}
if (lineDisplay > LinesDisplayed()) {
- return displayLines->PartitionFromPosition(static_cast<LINE>(LinesDisplayed()));
+ return displayLines->PartitionFromPosition(line_cast(LinesDisplayed()));
}
- const Sci::Line lineDoc = displayLines->PartitionFromPosition(static_cast<LINE>(lineDisplay));
+ const Sci::Line lineDoc = displayLines->PartitionFromPosition(line_cast(lineDisplay));
PLATFORM_ASSERT(GetVisible(lineDoc));
return lineDoc;
}
@@ -211,7 +217,7 @@ Sci::Line ContractionState<LINE>::DocFromDisplay(Sci::Line lineDisplay) const no
template <typename LINE>
void ContractionState<LINE>::InsertLines(Sci::Line lineDoc, Sci::Line lineCount) {
if (OneToOne()) {
- linesInDocument += static_cast<LINE>(lineCount);
+ linesInDocument += line_cast(lineCount);
} else {
for (Sci::Line l = 0; l < lineCount; l++) {
InsertLine(lineDoc + l);
@@ -223,7 +229,7 @@ void ContractionState<LINE>::InsertLines(Sci::Line lineDoc, Sci::Line lineCount)
template <typename LINE>
void ContractionState<LINE>::DeleteLines(Sci::Line lineDoc, Sci::Line lineCount) {
if (OneToOne()) {
- linesInDocument -= static_cast<LINE>(lineCount);
+ linesInDocument -= line_cast(lineCount);
} else {
for (Sci::Line l = 0; l < lineCount; l++) {
DeleteLine(lineDoc);
@@ -239,7 +245,7 @@ bool ContractionState<LINE>::GetVisible(Sci::Line lineDoc) const noexcept {
} else {
if (lineDoc >= visible->Length())
return true;
- return visible->ValueAt(static_cast<LINE>(lineDoc)) == 1;
+ return visible->ValueAt(line_cast(lineDoc)) == 1;
}
}
@@ -255,14 +261,14 @@ bool ContractionState<LINE>::SetVisible(Sci::Line lineDocStart, Sci::Line lineDo
for (Sci::Line line = lineDocStart; line <= lineDocEnd; line++) {
if (GetVisible(line) != isVisible) {
changed = true;
- const int heightLine = heights->ValueAt(static_cast<LINE>(line));
+ const int heightLine = heights->ValueAt(line_cast(line));
const int difference = isVisible ? heightLine : -heightLine;
- displayLines->InsertText(static_cast<LINE>(line), difference);
+ displayLines->InsertText(line_cast(line), difference);
}
}
if (changed) {
- visible->FillRange(static_cast<LINE>(lineDocStart), isVisible ? 1 : 0,
- static_cast<LINE>(lineDocEnd - lineDocStart) + 1);
+ visible->FillRange(line_cast(lineDocStart), isVisible ? 1 : 0,
+ line_cast(lineDocEnd - lineDocStart) + 1);
}
Check();
return changed;
@@ -308,7 +314,7 @@ bool ContractionState<LINE>::GetExpanded(Sci::Line lineDoc) const noexcept {
return true;
} else {
Check();
- return expanded->ValueAt(static_cast<LINE>(lineDoc)) == 1;
+ return expanded->ValueAt(line_cast(lineDoc)) == 1;
}
}
@@ -318,8 +324,8 @@ bool ContractionState<LINE>::SetExpanded(Sci::Line lineDoc, bool isExpanded) {
return false;
} else {
EnsureData();
- if (isExpanded != (expanded->ValueAt(static_cast<LINE>(lineDoc)) == 1)) {
- expanded->SetValueAt(static_cast<LINE>(lineDoc), isExpanded ? 1 : 0);
+ if (isExpanded != (expanded->ValueAt(line_cast(lineDoc)) == 1)) {
+ expanded->SetValueAt(line_cast(lineDoc), isExpanded ? 1 : 0);
Check();
return true;
} else {
@@ -347,10 +353,10 @@ Sci::Line ContractionState<LINE>::ContractedNext(Sci::Line lineDocStart) const n
return -1;
} else {
Check();
- if (!expanded->ValueAt(static_cast<LINE>(lineDocStart))) {
+ if (!expanded->ValueAt(line_cast(lineDocStart))) {
return lineDocStart;
} else {
- const Sci::Line lineDocNextChange = expanded->EndRun(static_cast<LINE>(lineDocStart));
+ const Sci::Line lineDocNextChange = expanded->EndRun(line_cast(lineDocStart));
if (lineDocNextChange < LinesInDoc())
return lineDocNextChange;
else
@@ -364,7 +370,7 @@ int ContractionState<LINE>::GetHeight(Sci::Line lineDoc) const noexcept {
if (OneToOne()) {
return 1;
} else {
- return heights->ValueAt(static_cast<LINE>(lineDoc));
+ return heights->ValueAt(line_cast(lineDoc));
}
}
@@ -378,9 +384,9 @@ bool ContractionState<LINE>::SetHeight(Sci::Line lineDoc, int height) {
EnsureData();
if (GetHeight(lineDoc) != height) {
if (GetVisible(lineDoc)) {
- displayLines->InsertText(static_cast<LINE>(lineDoc), height - GetHeight(lineDoc));
+ displayLines->InsertText(line_cast(lineDoc), height - GetHeight(lineDoc));
}
- heights->SetValueAt(static_cast<LINE>(lineDoc), height);
+ heights->SetValueAt(line_cast(lineDoc), height);
Check();
return true;
} else {
@@ -394,7 +400,7 @@ bool ContractionState<LINE>::SetHeight(Sci::Line lineDoc, int height) {
template <typename LINE>
void ContractionState<LINE>::ShowAll() noexcept {
- const LINE lines = static_cast<LINE>(LinesInDoc());
+ const LINE lines = line_cast(LinesInDoc());
Clear();
linesInDocument = lines;
}