summaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authorJustin Berger <j.david.berger@gmail.com>2017-07-23 00:34:33 (GMT)
committerJustin Berger <j.david.berger@gmail.com>2017-11-01 17:32:11 (GMT)
commit39c2feaf8c4dcb9c3a30c68a066fb70e126d7fe6 (patch)
tree1023429578ddc402c663d8e29a2ef2341a9c382a /Source
parentf5d2988ea7cc60778dbaa21860aad264c7aa7a81 (diff)
downloadCMake-39c2feaf8c4dcb9c3a30c68a066fb70e126d7fe6.zip
CMake-39c2feaf8c4dcb9c3a30c68a066fb70e126d7fe6.tar.gz
CMake-39c2feaf8c4dcb9c3a30c68a066fb70e126d7fe6.tar.bz2
misc: Added utility method to allow working with stacks
Diffstat (limited to 'Source')
-rw-r--r--Source/cmListFileCache.cxx13
-rw-r--r--Source/cmListFileCache.h4
2 files changed, 17 insertions, 0 deletions
diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx
index 8e8a54d..cbcf200 100644
--- a/Source/cmListFileCache.cxx
+++ b/Source/cmListFileCache.cxx
@@ -438,6 +438,19 @@ void cmListFileBacktrace::PrintCallStack(std::ostream& out) const
}
}
+size_t cmListFileBacktrace::Depth() const
+{
+ size_t depth = 0;
+ if (this->Cur == nullptr) {
+ return 0;
+ }
+
+ for (Entry* i = this->Cur->Up; i; i = i->Up) {
+ depth++;
+ }
+ return depth;
+}
+
std::ostream& operator<<(std::ostream& os, cmListFileContext const& lfc)
{
os << lfc.FilePath;
diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h
index 349ddef..1f9e374 100644
--- a/Source/cmListFileCache.h
+++ b/Source/cmListFileCache.h
@@ -6,6 +6,7 @@
#include "cmConfigure.h" // IWYU pragma: keep
#include <iosfwd>
+#include <stddef.h>
#include <string>
#include <vector>
@@ -138,6 +139,9 @@ public:
// Print the call stack below the top of the backtrace.
void PrintCallStack(std::ostream& out) const;
+ // Get the number of 'frames' in this backtrace
+ size_t Depth() const;
+
private:
struct Entry;