| /* Distributed under the OSI-approved BSD 3-Clause License. See accompanying | |
| file Copyright.txt or https://cmake.org/licensing for details. */ | |
| #pragma once | |
| #include "cmConfigure.h" // IWYU pragma: keep | |
| #include <iosfwd> | |
| /** This is just a helper class to make it build with MSVC 6.0. | |
| Actually the enums and internal classes could directly go into | |
| cmDocumentation, but then MSVC6 complains in RequestedHelpItem that | |
| cmDocumentation is an undefined type and so it doesn't know the enums. | |
| Moving the enums to a class which is then already completely parsed helps | |
| against this. */ | |
| class cmDocumentationEnums | |
| { | |
| public: | |
| /** Types of help provided. */ | |
| enum Type | |
| { | |
| None, | |
| Version, | |
| Usage, | |
| Help, | |
| Full, | |
| ListManuals, | |
| ListCommands, | |
| ListModules, | |
| ListProperties, | |
| ListVariables, | |
| ListPolicies, | |
| ListGenerators, | |
| OneManual, | |
| OneCommand, | |
| OneModule, | |
| OneProperty, | |
| OneVariable, | |
| OnePolicy, | |
| OldCustomModules | |
| }; | |
| }; | |
| class cmDocumentationSection; | |
| /** Print documentation in a simple text format. */ | |
| class cmDocumentationFormatter | |
| { | |
| public: | |
| cmDocumentationFormatter(); | |
| virtual ~cmDocumentationFormatter(); | |
| void PrintFormatted(std::ostream& os, const char* text); | |
| virtual void PrintSection(std::ostream& os, | |
| cmDocumentationSection const& section); | |
| virtual void PrintPreformatted(std::ostream& os, const char* text); | |
| virtual void PrintParagraph(std::ostream& os, const char* text); | |
| void PrintColumn(std::ostream& os, const char* text); | |
| void SetIndent(const char* indent); | |
| private: | |
| int TextWidth = 77; | |
| const char* TextIndent = ""; | |
| }; |