| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file LICENSE.rst or https://cmake.org/licensing for details. */ | |
| #pragma once | |
| #include "cmConfigure.h" // IWYU pragma: keep | |
| #include <cstddef> | |
| #include <cm/string_view> | |
| /** \namespace cmCacheDocumentationTable | |
| * \brief Compile-time lookup for built-in CMake cache variable documentation. | |
| * | |
| * The table is a hand-maintained list of short, single-line plain-text | |
| * summaries keyed by the canonical CMake variable name (for example | |
| * ``CMAKE_BUILD_TYPE``). See the header comment in | |
| * ``cmCacheDocumentationTable.cxx`` for the scope of variables included | |
| * and the maintenance discipline. | |
| * | |
| * The sole consumer is ``cmake::ProcessCacheArg``, which reads | |
| * ``Summary`` to populate the ``HELPSTRING`` of cache entries created | |
| * via ``-D <var>=<value>`` when the user did not supply one. | |
| */ | |
| namespace cmCacheDocumentationTable { | |
| /** \brief A single row in the built-in documentation table. | |
| * | |
| * The ``Name`` and ``Summary`` views reference storage with static | |
| * lifetime. | |
| */ | |
| struct Entry | |
| { | |
| cm::string_view Name; | |
| cm::string_view Summary; | |
| }; | |
| /** \brief Result of a single ``Get`` lookup. | |
| * | |
| * An unknown key yields an empty ``Summary``. | |
| */ | |
| struct LookupResult | |
| { | |
| cm::string_view Summary; | |
| }; | |
| /** \brief Look up the built-in documentation for \a varName. | |
| * | |
| * Returns a ``LookupResult`` whose ``Summary`` references storage with | |
| * static lifetime when \a varName corresponds to a documented CMake | |
| * variable. Otherwise returns an empty ``Summary``. The lookup runs | |
| * in ``O(log N)`` and performs no allocation. | |
| */ | |
| LookupResult Get(cm::string_view varName); | |
| /** \brief Iterate the underlying table. | |
| * | |
| * These are exposed primarily for the ``testCacheDocumentationTable`` | |
| * regression test in ``Tests/CMakeLib``, which verifies that the entries | |
| * are sorted (a precondition of ``Get``'s ``std::lower_bound`` lookup), | |
| * unique, and otherwise well-formed. Callers should not rely on a | |
| * particular entry count or ordering beyond the sort invariant. | |
| */ | |
| Entry const* EntriesBegin(); | |
| Entry const* EntriesEnd(); | |
| std::size_t EntriesSize(); | |
| } |