diff options
Diffstat (limited to 'Source/cmDocumentationSection.h')
-rw-r--r-- | Source/cmDocumentationSection.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Source/cmDocumentationSection.h b/Source/cmDocumentationSection.h new file mode 100644 index 0000000..7031b52 --- /dev/null +++ b/Source/cmDocumentationSection.h @@ -0,0 +1,69 @@ +/* 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 "cmDocumentationEntry.h" + +#include <string> +#include <vector> + +// 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<cmDocumentationEntry>& 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<cmDocumentationEntry>& entries) + { + this->Entries.insert(this->Entries.end(), entries.begin(), entries.end()); + } + + /** 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<cmDocumentationEntry>& entries) + { + this->Entries.insert(this->Entries.begin(), entries.begin(), + entries.end()); + } + +private: + std::string Name; + std::vector<cmDocumentationEntry> Entries; +}; + +#endif |