summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2015-08-02 08:07:30 (GMT)
committerStephen Kelly <steveire@gmail.com>2015-08-23 16:05:13 (GMT)
commit55e3927634a4b071c1cf52cc2dc406b8973b82cc (patch)
treeb83d0fdac4038ff61234761a28742179e16d207d
parent04168cbb593be0d58326b09346e90a6348a862ff (diff)
downloadCMake-55e3927634a4b071c1cf52cc2dc406b8973b82cc.zip
CMake-55e3927634a4b071c1cf52cc2dc406b8973b82cc.tar.gz
CMake-55e3927634a4b071c1cf52cc2dc406b8973b82cc.tar.bz2
cmState: Make it possible to order cmState::Snapshot.
-rw-r--r--Source/cmLinkedTree.h7
-rw-r--r--Source/cmState.cxx6
-rw-r--r--Source/cmState.h7
3 files changed, 20 insertions, 0 deletions
diff --git a/Source/cmLinkedTree.h b/Source/cmLinkedTree.h
index 3bcb940..721a246 100644
--- a/Source/cmLinkedTree.h
+++ b/Source/cmLinkedTree.h
@@ -128,6 +128,13 @@ public:
}
return this->Position <= this->Tree->Data.size();
}
+
+ bool StrictWeakOrdered(iterator other) const
+ {
+ assert(this->Tree);
+ assert(this->Tree == other.Tree);
+ return this->Position < other.Position;
+ }
};
iterator Root() const
diff --git a/Source/cmState.cxx b/Source/cmState.cxx
index f425861..66f19c3 100644
--- a/Source/cmState.cxx
+++ b/Source/cmState.cxx
@@ -1411,3 +1411,9 @@ void cmState::Directory::ClearCompileOptions()
this->DirectoryState->CompileOptionsBacktraces,
this->Snapshot_.Position->CompileOptionsPosition);
}
+
+bool cmState::Snapshot::StrictWeakOrder::operator()(
+ const cmState::Snapshot& lhs, const cmState::Snapshot& rhs) const
+{
+ return lhs.Position.StrictWeakOrdered(rhs.Position);
+}
diff --git a/Source/cmState.h b/Source/cmState.h
index 07aa2a5..3132d1b 100644
--- a/Source/cmState.h
+++ b/Source/cmState.h
@@ -74,9 +74,16 @@ public:
Directory GetDirectory() const;
+ struct StrictWeakOrder
+ {
+ bool operator()(const cmState::Snapshot& lhs,
+ const cmState::Snapshot& rhs) const;
+ };
+
private:
friend class cmState;
friend class Directory;
+ friend struct StrictWeakOrder;
cmState* State;
cmState::PositionType Position;
};