diff options
Diffstat (limited to 'Source/cmDocumentation.h')
-rw-r--r-- | Source/cmDocumentation.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/Source/cmDocumentation.h b/Source/cmDocumentation.h new file mode 100644 index 0000000..b6c5fde --- /dev/null +++ b/Source/cmDocumentation.h @@ -0,0 +1,146 @@ +/*============================================================================ + CMake - Cross Platform Makefile Generator + Copyright 2000-2009 Kitware, Inc., Insight Software Consortium + + Distributed under the OSI-approved BSD License (the "License"); + see accompanying file Copyright.txt for details. + + This software is distributed WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the License for more information. +============================================================================*/ +#ifndef _cmDocumentation_h +#define _cmDocumentation_h + +#include "cmStandardIncludes.h" +#include "cmDocumentationFormatter.h" +#include "cmDocumentationSection.h" +#include "cmake.h" + +namespace cmsys +{ + class Directory; +} + +/** Class to generate documentation. */ +class cmDocumentation: public cmDocumentationEnums +{ +public: + cmDocumentation(); + + ~cmDocumentation(); + + /** + * Check command line arguments for documentation options. Returns + * true if documentation options are found, and false otherwise. + * When true is returned, PrintRequestedDocumentation should be + * called. exitOpt can be used for things like cmake -E, so that + * all arguments after the -E are ignored and not searched for + * help arguments. + */ + bool CheckOptions(int argc, const char* const* argv, + const char* exitOpt =0); + + /** + * Print help requested on the command line. Call after + * CheckOptions returns true. Returns true on success, and false + * otherwise. Failure can occur when output files specified on the + * command line cannot be written. + */ + bool PrintRequestedDocumentation(std::ostream& os); + + /** Print help of the given type. */ + bool PrintDocumentation(Type ht, std::ostream& os); + + void SetShowGenerators(bool showGen) { this->ShowGenerators = showGen; } + + /** Set the program name for standard document generation. */ + void SetName(const std::string& name); + + /** Set a section of the documentation. Typical sections include Name, + Usage, Description, Options */ + void SetSection(const char *sectionName, + cmDocumentationSection *section); + void SetSection(const char *sectionName, + std::vector<cmDocumentationEntry> &docs); + void SetSection(const char *sectionName, + const char *docs[][2]); + void SetSections(std::map<std::string,cmDocumentationSection *> + §ions); + + /** Add the documentation to the beginning/end of the section */ + void PrependSection(const char *sectionName, + const char *docs[][2]); + void PrependSection(const char *sectionName, + std::vector<cmDocumentationEntry> &docs); + void PrependSection(const char *sectionName, + cmDocumentationEntry &docs); + void AppendSection(const char *sectionName, + const char *docs[][2]); + void AppendSection(const char *sectionName, + std::vector<cmDocumentationEntry> &docs); + void AppendSection(const char *sectionName, + cmDocumentationEntry &docs); + + /** Add common (to all tools) documentation section(s) */ + void addCommonStandardDocSections(); + + /** Add the CMake standard documentation section(s) */ + void addCMakeStandardDocSections(); + + /** Add the CTest standard documentation section(s) */ + void addCTestStandardDocSections(); + + /** Add the CPack standard documentation section(s) */ + void addCPackStandardDocSections(); + +private: + + void GlobHelp(std::vector<std::string>& files, std::string const& pattern); + void PrintNames(std::ostream& os, std::string const& pattern); + bool PrintFiles(std::ostream& os, std::string const& pattern); + + bool PrintVersion(std::ostream& os); + bool PrintUsage(std::ostream& os); + bool PrintHelp(std::ostream& os); + bool PrintHelpFull(std::ostream& os); + bool PrintHelpOneManual(std::ostream& os); + bool PrintHelpOneCommand(std::ostream& os); + bool PrintHelpOneModule(std::ostream& os); + bool PrintHelpOnePolicy(std::ostream& os); + bool PrintHelpOneProperty(std::ostream& os); + bool PrintHelpOneVariable(std::ostream& os); + bool PrintHelpListManuals(std::ostream& os); + bool PrintHelpListCommands(std::ostream& os); + bool PrintHelpListModules(std::ostream& os); + bool PrintHelpListProperties(std::ostream& os); + bool PrintHelpListVariables(std::ostream& os); + bool PrintHelpListPolicies(std::ostream& os); + bool PrintHelpListGenerators(std::ostream& os); + bool PrintOldCustomModules(std::ostream& os); + + const char* GetNameString() const; + bool IsOption(const char* arg) const; + + bool ShowGenerators; + + std::string NameString; + std::map<std::string,cmDocumentationSection*> AllSections; + + std::string CurrentArgument; + + struct RequestedHelpItem + { + RequestedHelpItem(): HelpType(None) {} + cmDocumentationEnums::Type HelpType; + std::string Filename; + std::string Argument; + }; + + std::vector<RequestedHelpItem> RequestedHelpItems; + cmDocumentationFormatter Formatter; + + static void WarnFormFromFilename(RequestedHelpItem& request, bool& result); +}; + +#endif |