| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying |
| file Copyright.txt or https://cmake.org/licensing for details. */ |
| #include "cmConfigure.h" // IWYU pragma: keep |
| /** Base class template for CRTP to represent a stack of constant values. |
| Provide value semantics, but use efficient reference-counting underneath |
| template <typename T, typename Stack> |
| std::shared_ptr<Entry const> TopEntry; |
| /** Default-construct an empty stack. */ |
| /** Get a stack with the given call context added to the top. */ |
| Stack Push(T value) const; |
| /** Get a stack with the top level removed. |
| May not be called until after a matching Push. */ |
| /** Get the value at the top of the stack. |
| This may be called only if Empty() would return false. */ |
| /** Return true if this stack is empty. */ |
| cmConstStack(std::shared_ptr<Entry const> parent, T value); |
| cmConstStack(std::shared_ptr<Entry const> top); |