aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/SparseVector.h
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2018-03-09 21:05:33 +1100
committerNeil <nyamatongwe@gmail.com>2018-03-09 21:05:33 +1100
commitaae86a999fe82ab85660991892253040126386b8 (patch)
tree1c82cf445ee7f3d0e9644a9a97bf978798479e84 /src/SparseVector.h
parent2d698add257d0bbb38335659ed944e9cc41fe593 (diff)
downloadscintilla-mirror-aae86a999fe82ab85660991892253040126386b8.tar.gz
Use Position/Line/int more accurately in preparation for large documents.
Diffstat (limited to 'src/SparseVector.h')
-rw-r--r--src/SparseVector.h38
1 files changed, 19 insertions, 19 deletions
diff --git a/src/SparseVector.h b/src/SparseVector.h
index 0f9f4ad1c..4e28996fc 100644
--- a/src/SparseVector.h
+++ b/src/SparseVector.h
@@ -15,42 +15,42 @@ namespace Scintilla {
template <typename T>
class SparseVector {
private:
- std::unique_ptr<Partitioning<int>> starts;
+ std::unique_ptr<Partitioning<Sci::Position>> 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) {
+ void ClearValue(Sci::Position partition) {
values->SetValueAt(partition, T());
}
public:
SparseVector() : empty() {
- starts.reset(new Partitioning<int>(8));
+ starts.reset(new Partitioning<Sci::Position>(8));
values.reset(new SplitVector<T>());
values->InsertEmpty(0, 2);
}
~SparseVector() {
starts.reset();
// starts dead here but not used by ClearValue.
- for (int part = 0; part < values->Length(); part++) {
+ for (Sci::Position part = 0; part < values->Length(); part++) {
ClearValue(part);
}
values.reset();
}
- int Length() const {
+ Sci::Position Length() const {
return starts->PositionFromPartition(starts->Partitions());
}
- int Elements() const {
+ Sci::Position Elements() const {
return starts->Partitions();
}
- int PositionOfElement(int element) const {
+ Sci::Position PositionOfElement(int element) const {
return starts->PositionFromPartition(element);
}
- const T& ValueAt(int position) const {
+ const T& ValueAt(Sci::Position position) const {
assert(position < Length());
- const int partition = starts->PartitionFromPosition(position);
- const int startPartition = starts->PositionFromPartition(partition);
+ const Sci::Position partition = starts->PartitionFromPosition(position);
+ const Sci::Position startPartition = starts->PositionFromPartition(partition);
if (startPartition == position) {
return values->ValueAt(partition);
} else {
@@ -58,10 +58,10 @@ public:
}
}
template <typename ParamType>
- void SetValueAt(int position, ParamType &&value) {
+ void SetValueAt(Sci::Position position, ParamType &&value) {
assert(position < Length());
- const int partition = starts->PartitionFromPosition(position);
- const int startPartition = starts->PositionFromPartition(partition);
+ const Sci::Position partition = starts->PartitionFromPosition(position);
+ const Sci::Position startPartition = starts->PositionFromPartition(partition);
if (value == T()) {
// Setting the empty value is equivalent to deleting the position
if (position == 0) {
@@ -85,10 +85,10 @@ public:
}
}
}
- void InsertSpace(int position, int insertLength) {
+ void InsertSpace(Sci::Position position, Sci::Position insertLength) {
assert(position <= Length()); // Only operation that works at end.
- const int partition = starts->PartitionFromPosition(position);
- const int startPartition = starts->PositionFromPartition(partition);
+ const Sci::Position partition = starts->PartitionFromPosition(position);
+ const Sci::Position startPartition = starts->PositionFromPartition(partition);
if (startPartition == position) {
const bool positionOccupied = values->ValueAt(partition) != T();
// Inserting at start of run so make previous longer
@@ -111,10 +111,10 @@ public:
starts->InsertText(partition, insertLength);
}
}
- void DeletePosition(int position) {
+ void DeletePosition(Sci::Position position) {
assert(position < Length());
- int partition = starts->PartitionFromPosition(position);
- const int startPartition = starts->PositionFromPartition(partition);
+ Sci::Position partition = starts->PartitionFromPosition(position);
+ const Sci::Position startPartition = starts->PositionFromPartition(partition);
if (startPartition == position) {
if (partition == 0) {
ClearValue(0);