40 std::pair<Info *, Info *>
emitInfo(
const NamespaceDecl *D,
44 std::pair<Info *, Info *>
emitInfo(
const RecordDecl *D,
const FullComment *FC,
47 std::pair<Info *, Info *>
emitInfo(
const EnumDecl *D,
const FullComment *FC,
50 std::pair<Info *, Info *>
emitInfo(
const FunctionDecl *D,
54 std::pair<Info *, Info *>
emitInfo(
const VarDecl *D,
const FullComment *FC,
55 int LineNumber, StringRef File,
58 std::pair<Info *, Info *>
emitInfo(
const CXXMethodDecl *D,
62 std::pair<Info *, Info *>
emitInfo(
const TypedefDecl *D,
66 std::pair<Info *, Info *>
emitInfo(
const TypeAliasDecl *D,
70 std::pair<Info *, Info *>
emitInfo(
const ConceptDecl *D,
71 const FullComment *FC,
const Location &Loc,
74 std::pair<Info *, Info *>
emitInfo(
const VarDecl *D,
const FullComment *FC,
78 void getTemplateParameters(
const TemplateParameterList *TemplateParams,
79 llvm::raw_ostream &Stream);
81 StringRef getFunctionPrototype(
const FunctionDecl *
FuncDecl);
83 StringRef getTypeAlias(
const TypeAliasDecl *Alias);
85 StringRef getInfoRelativePath(llvm::ArrayRef<doc::Reference> Namespaces);
87 StringRef getInfoRelativePath(
const Decl *D);
89 llvm::StringRef getSourceCode(
const Decl *D,
const SourceRange &R);
91 void parseFullComment(
const FullComment *C,
CommentInfo &CI);
93 SymbolID getUSRForDecl(
const Decl *D);
95 TagDecl *getTagDeclForType(
const QualType &T);
97 RecordDecl *getRecordDeclForType(
const QualType &T);
99 TypeInfo getTypeInfoForType(
const QualType &T,
const PrintingPolicy &Policy);
101 bool isPublic(
const clang::AccessSpecifier AS,
const clang::Linkage Link);
103 bool shouldSerializeInfo(
bool PublicOnly,
bool IsInAnonymousNamespace,
114 template <
typename ChildType>
Info *makeAndInsertIntoParent(ChildType &Child);
116 AccessSpecifier getFinalAccessSpecifier(AccessSpecifier FirstAS,
117 AccessSpecifier SecondAS);
120 AccessSpecifier Access = AccessSpecifier::AS_public);
122 void parseEnumerators(
EnumInfo &I,
const EnumDecl *D);
124 void parseParameters(
FunctionInfo &I,
const FunctionDecl *D);
126 void parseBases(
RecordInfo &I,
const CXXRecordDecl *D);
129 const CXXRecordDecl *D,
bool IsFileInRootDir,
bool PublicOnly,
131 AccessSpecifier ParentAccess = AccessSpecifier::AS_public);
133 template <
typename T>
134 void populateParentNamespaces(llvm::SmallVector<Reference, 4> &Namespaces,
135 const T *D,
bool &IsInAnonymousNamespace);
137 void populateTemplateParameters(std::optional<TemplateInfo> &
TemplateInfo,
138 const clang::Decl *D);
141 const TemplateArgument &Arg);
143 bool isSupportedContext(Decl::Kind DeclKind);
145 void findParent(
Info &I,
const Decl *D);
147 template <
typename T>
148 void populateInfo(
Info &I,
const T *D,
const FullComment *C,
149 bool &IsInAnonymousNamespace);
151 template <
typename T>
152 void populateSymbolInfo(
SymbolInfo &I,
const T *D,
const FullComment *C,
153 Location Loc,
bool &IsInAnonymousNamespace);
155 void handleCompoundConstraints(
156 const Expr *Constraint,
159 void populateConstraints(
TemplateInfo &I,
const TemplateDecl *D);
161 void populateFunctionInfo(
FunctionInfo &I,
const FunctionDecl *D,
162 const FullComment *FC,
Location Loc,
163 bool &IsInAnonymousNamespace);
165 template <
typename T>
void populateMemberTypeInfo(T &I,
const Decl *D);
168 AccessSpecifier &Access,
const DeclaratorDecl *D,
169 bool IsStatic =
false);
171 void parseFriends(
RecordInfo &RI,
const CXXRecordDecl *D);
static llvm::cl::opt< bool > PublicOnly("public", llvm::cl::desc("Document only public declarations."), llvm::cl::init(false), llvm::cl::cat(ClangDocCategory))
std::pair< Info *, Info * > emitInfo(const VarDecl *D, const FullComment *FC, int LineNumber, StringRef File, bool IsFileInRootDir, bool PublicOnly)