CMake/Source/cmDocumentationFormatter.h

68 lines
2.6 KiB
C
Raw Normal View History

/*============================================================================
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 _cmDocumentationFormatter_h
#define _cmDocumentationFormatter_h
#include "cmStandardIncludes.h"
/** This is just a helper class to make it build with MSVC 6.0.
Actually the enums and internal classes could directly go into
2011-10-13 21:51:18 +04:00
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. */
2011-10-13 21:51:18 +04:00
enum Type
{ None, Usage, Single, SingleModule, SingleProperty, SingleVariable,
List, ModuleList, PropertyList, VariableList, PolicyList,
2011-10-13 21:51:18 +04:00
Full, Properties, Variables, Modules, CustomModules, Commands,
CompatCommands, Copyright, Version, Policies, SinglePolicy };
/** Forms of documentation output. */
enum Form { TextForm, HTMLForm, ManForm, UsageForm, DocbookForm };
};
class cmDocumentationSection;
2011-10-13 21:51:18 +04:00
/** Base class for printing the documentation in the various supported
formats. */
class cmDocumentationFormatter
{
public:
cmDocumentationFormatter();
virtual ~cmDocumentationFormatter();
void PrintFormatted(std::ostream& os, const char* text);
virtual cmDocumentationEnums::Form GetForm() const = 0;
2011-10-13 21:51:18 +04:00
virtual void PrintHeader(const char* /*docname*/,
const char* /*appname*/,
std::ostream& /*os*/) {}
virtual void PrintFooter(std::ostream& /*os*/) {}
virtual void PrintSection(std::ostream& os,
const cmDocumentationSection& section,
const char* name) = 0;
virtual void PrintPreformatted(std::ostream& os, const char* text) = 0;
virtual void PrintParagraph(std::ostream& os, const char* text) = 0;
virtual void PrintIndex(std::ostream& ,
std::vector<const cmDocumentationSection *>&)
{}
2011-03-20 16:22:39 +03:00
/** Compute a prefix for links into a section (#\<prefix\>_SOMETHING). */
std::string ComputeSectionLinkPrefix(std::string const& name);
};
#endif