clang-tools  9.0.0
Generators.cpp
Go to the documentation of this file.
1 //===-- Generators.cpp - Generator Registry ----------------------*- C++-*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "Generators.h"
10 
11 LLVM_INSTANTIATE_REGISTRY(clang::doc::GeneratorRegistry)
12 
13 namespace clang {
14 namespace doc {
15 
16 llvm::Expected<std::unique_ptr<Generator>>
17 findGeneratorByName(llvm::StringRef Format) {
18  for (auto I = GeneratorRegistry::begin(), E = GeneratorRegistry::end();
19  I != E; ++I) {
20  if (I->getName() != Format)
21  continue;
22  return I->instantiate();
23  }
24  return llvm::make_error<llvm::StringError>("Can't find generator: " + Format,
25  llvm::inconvertibleErrorCode());
26 }
27 
28 // Enum conversion
29 
30 std::string getAccess(AccessSpecifier AS) {
31  switch (AS) {
32  case AccessSpecifier::AS_public:
33  return "public";
34  case AccessSpecifier::AS_protected:
35  return "protected";
36  case AccessSpecifier::AS_private:
37  return "private";
38  case AccessSpecifier::AS_none:
39  return {};
40  }
41  llvm_unreachable("Unknown AccessSpecifier");
42 }
43 
44 std::string getTagType(TagTypeKind AS) {
45  switch (AS) {
46  case TagTypeKind::TTK_Class:
47  return "class";
48  case TagTypeKind::TTK_Union:
49  return "union";
50  case TagTypeKind::TTK_Interface:
51  return "interface";
52  case TagTypeKind::TTK_Struct:
53  return "struct";
54  case TagTypeKind::TTK_Enum:
55  return "enum";
56  }
57  llvm_unreachable("Unknown TagTypeKind");
58 }
59 
60 // This anchor is used to force the linker to link in the generated object file
61 // and thus register the generators.
62 extern volatile int YAMLGeneratorAnchorSource;
63 extern volatile int MDGeneratorAnchorSource;
64 extern volatile int HTMLGeneratorAnchorSource;
65 static int LLVM_ATTRIBUTE_UNUSED YAMLGeneratorAnchorDest =
67 static int LLVM_ATTRIBUTE_UNUSED MDGeneratorAnchorDest =
69 static int LLVM_ATTRIBUTE_UNUSED HTMLGeneratorAnchorDest =
71 
72 } // namespace doc
73 } // namespace clang
volatile int HTMLGeneratorAnchorSource
std::string getAccess(AccessSpecifier AS)
Definition: Generators.cpp:30
llvm::Expected< std::unique_ptr< Generator > > findGeneratorByName(llvm::StringRef Format)
Definition: Generators.cpp:17
static int LLVM_ATTRIBUTE_UNUSED MDGeneratorAnchorDest
Definition: Generators.cpp:67
static int LLVM_ATTRIBUTE_UNUSED HTMLGeneratorAnchorDest
Definition: Generators.cpp:69
volatile int YAMLGeneratorAnchorSource
std::string getTagType(TagTypeKind AS)
Definition: Generators.cpp:44
volatile int MDGeneratorAnchorSource
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
llvm::Registry< Generator > GeneratorRegistry
Definition: Generators.h:32
static int LLVM_ATTRIBUTE_UNUSED YAMLGeneratorAnchorDest
Definition: Generators.cpp:65