Mercurial > hg > CbC > CbC_llvm
diff clang-tools-extra/clang-doc/Generators.h @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | 2e18cbf3894f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clang-tools-extra/clang-doc/Generators.h Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,52 @@ +//===-- Generators.h - ClangDoc Generator ----------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// Generator classes for converting declaration information into documentation +// in a specified format. +//===----------------------------------------------------------------------===// + +#ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_GENERATOR_H +#define LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_GENERATOR_H + +#include "Representation.h" +#include "llvm/Support/Error.h" +#include "llvm/Support/Registry.h" + +namespace clang { +namespace doc { + +// Abstract base class for generators. +// This is expected to be implemented and exposed via the GeneratorRegistry. +class Generator { +public: + virtual ~Generator() = default; + + // Write out the decl info in the specified format. + virtual llvm::Error generateDocForInfo(Info *I, llvm::raw_ostream &OS, + const ClangDocContext &CDCtx) = 0; + // This function writes a file with the index previously constructed. + // It can be overwritten by any of the inherited generators. + // If the override method wants to run this it should call + // Generator::createResources(CDCtx); + virtual llvm::Error createResources(ClangDocContext &CDCtx); + + static void addInfoToIndex(Index &Idx, const doc::Info *Info); +}; + +typedef llvm::Registry<Generator> GeneratorRegistry; + +llvm::Expected<std::unique_ptr<Generator>> +findGeneratorByName(llvm::StringRef Format); + +std::string getAccess(AccessSpecifier AS); + +std::string getTagType(TagTypeKind AS); + +} // namespace doc +} // namespace clang + +#endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_GENERATOR_H