15 #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_REPRESENTATION_H 16 #define LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_REPRESENTATION_H 18 #include "clang/AST/Type.h" 19 #include "clang/Basic/Specifiers.h" 20 #include "clang/Tooling/StandaloneExecution.h" 21 #include "llvm/ADT/Optional.h" 22 #include "llvm/ADT/SmallVector.h" 23 #include "llvm/ADT/StringExtras.h" 62 bool SelfClosing =
false;
63 bool Explicit =
false;
65 llvm::SmallVector<SmallString<16>, 4>
67 llvm::SmallVector<SmallString<16>, 4>
69 llvm::SmallVector<SmallString<16>, 4>
71 std::vector<std::unique_ptr<CommentInfo>>
79 : USR(USR), Name(Name), RefType(IT) {}
82 return std::tie(USR,
Name, RefType) ==
97 : Type(Type, Field, IT) {}
98 TypeInfo(llvm::StringRef RefName) : Type(RefName) {}
109 llvm::StringRef
Name)
110 :
TypeInfo(Type, Field, IT), Name(Name) {}
115 return std::tie(Type,
Name) == std::tie(Other.
Type, Other.
Name);
125 llvm::StringRef
Name, AccessSpecifier Access)
128 AccessSpecifier Access)
132 return std::tie(Type,
Name, Access) ==
136 AccessSpecifier Access = AccessSpecifier::AS_none;
145 : LineNumber(LineNumber), Filename(std::move(Filename)) {}
148 return std::tie(LineNumber,
Filename) ==
162 : USR(USR), IT(IT), Name(Name) {}
166 virtual ~
Info() =
default;
172 llvm::SmallVector<Reference, 4>
176 void mergeBase(
Info &&I);
177 bool mergeable(
const Info &Other);
181 llvm::Expected<Reference> getEnclosingScope();
212 llvm::SmallVector<Location, 2>
Loc;
223 bool IsMethod =
false;
226 llvm::SmallVector<FieldTypeInfo, 4>
Params;
228 AccessSpecifier Access = AccessSpecifier::AS_none;
242 TagTypeKind TagType = TagTypeKind::TTK_Struct;
245 llvm::SmallVector<MemberTypeInfo, 4>
250 llvm::SmallVector<Reference, 4>
272 llvm::SmallVector<SmallString<16>, 4>
Members;
280 llvm::Expected<std::unique_ptr<Info>>
281 mergeInfos(std::vector<std::unique_ptr<Info>> &Values);
284 tooling::ExecutionContext *
ECtx;
291 #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_REPRESENTATION_H llvm::SmallVector< Reference, 4 > Namespace
Info(InfoType IT, SymbolID USR)
SymbolInfo(InfoType IT, SymbolID USR)
llvm::Optional< Location > DefLoc
NamespaceInfo(SymbolID USR, StringRef Name)
std::vector< FunctionInfo > ChildFunctions
llvm::SmallVector< Location, 2 > Loc
bool operator==(const TypeInfo &Other) const
std::vector< FunctionInfo > ChildFunctions
std::vector< EnumInfo > ChildEnums
MemberTypeInfo(SymbolID Type, StringRef Field, InfoType IT, llvm::StringRef Name, AccessSpecifier Access)
bool operator==(const Reference &Other) const
std::vector< Reference > ChildRecords
FunctionInfo(SymbolID USR)
Reference(llvm::StringRef Name)
bool operator==(const MemberTypeInfo &Other) const
llvm::SmallVector< Reference, 4 > VirtualParents
MemberTypeInfo(llvm::StringRef RefName, llvm::StringRef Name, AccessSpecifier Access)
Location(int LineNumber, SmallString< 16 > Filename)
llvm::SmallVector< FieldTypeInfo, 4 > Params
NamespaceInfo(SymbolID USR)
std::string Filename
Filename as a string.
llvm::SmallVector< SmallString< 16 >, 4 > Members
SymbolInfo(InfoType IT, SymbolID USR, StringRef Name)
std::vector< CommentInfo > Description
llvm::Expected< std::unique_ptr< Info > > mergeInfos(std::vector< std::unique_ptr< Info >> &Values)
RecordInfo(SymbolID USR, StringRef Name)
static constexpr llvm::StringLiteral Name
llvm::SmallVector< Reference, 4 > Parents
Reference(SymbolID USR, StringRef Name, InfoType IT)
bool operator==(const Location &Other) const
tooling::ExecutionContext * ECtx
===– Representation.cpp - ClangDoc Representation --------—*- C++ -*-===//
TypeInfo(SymbolID Type, StringRef Field, InfoType IT)
std::vector< Reference > ChildNamespaces
std::vector< Reference > ChildRecords
SmallString< 32 > Filename
std::vector< EnumInfo > ChildEnums
bool operator==(const FieldTypeInfo &Other) const
llvm::SmallVector< MemberTypeInfo, 4 > Members
FieldTypeInfo(SymbolID Type, StringRef Field, InfoType IT, llvm::StringRef Name)
std::array< uint8_t, 20 > SymbolID
Info(InfoType IT, SymbolID USR, StringRef Name)
FieldTypeInfo(llvm::StringRef RefName, llvm::StringRef Name)
TypeInfo(llvm::StringRef RefName)