/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying file Copyright.txt or https://cmake.org/licensing for details. */ #ifndef _cmDocumentationSection_h #define _cmDocumentationSection_h #include "cmConfigure.h" // IWYU pragma: keep #include #include #include #include "cmDocumentationEntry.h" // Low-level interface for custom documents: /** Internal class representing a section of the documentation. * Cares e.g. for the different section titles in the different * output formats. */ class cmDocumentationSection { public: /** Create a cmSection, with a special name for man-output mode. */ explicit cmDocumentationSection(const char* name) : Name(name) { } /** Has any content been added to this section or is it empty ? */ bool IsEmpty() const { return this->Entries.empty(); } /** Clear contents. */ void Clear() { this->Entries.clear(); } /** Return the name of this section. */ std::string GetName() const { return this->Name; } /** Return a pointer to the first entry of this section. */ const std::vector& GetEntries() const { return this->Entries; } /** Append an entry to this section. */ void Append(const cmDocumentationEntry& entry) { this->Entries.push_back(entry); } void Append(const std::vector& entries) { cm::append(this->Entries, entries); } /** Append an entry to this section using NULL terminated chars */ void Append(const char* [][2]); void Append(const char* n, const char* b); /** prepend some documentation to this section */ void Prepend(const char* [][2]); void Prepend(const std::vector& entries) { this->Entries.insert(this->Entries.begin(), entries.begin(), entries.end()); } private: std::string Name; std::vector Entries; }; #endif