41 const FullComment *FC,
46 const FullComment *FC,
51 const FullComment *FC,
56 const FullComment *FC,
61 emitInfo(
const VarDecl *D,
const FullComment *FC,
int LineNumber,
62 StringRef File,
bool IsFileInRootDir,
bool PublicOnly);
65 const FullComment *FC,
70 const FullComment *FC,
75 const FullComment *FC,
80 const FullComment *FC,
85 const FullComment *FC,
90 void getTemplateParameters(
const TemplateParameterList *TemplateParams,
91 llvm::raw_ostream &Stream);
93 StringRef getFunctionPrototype(
const FunctionDecl *
FuncDecl);
95 StringRef getTypeAlias(
const TypeAliasDecl *Alias);
97 StringRef getInfoRelativePath(llvm::ArrayRef<doc::Reference> Namespaces);
99 StringRef getInfoRelativePath(
const Decl *D);
101 llvm::StringRef getSourceCode(
const Decl *D,
const SourceRange &R);
103 void parseFullComment(
const FullComment *C,
CommentInfo &CI);
105 SymbolID getUSRForDecl(
const Decl *D);
107 TagDecl *getTagDeclForType(
const QualType &T);
109 RecordDecl *getRecordDeclForType(
const QualType &T);
111 TypeInfo getTypeInfoForType(
const QualType &T,
const PrintingPolicy &Policy);
113 bool isPublic(
const clang::AccessSpecifier AS,
const clang::Linkage Link);
115 bool shouldSerializeInfo(
bool PublicOnly,
bool IsInAnonymousNamespace,
126 template <
typename ChildType>
129 AccessSpecifier getFinalAccessSpecifier(AccessSpecifier FirstAS,
130 AccessSpecifier SecondAS);
133 AccessSpecifier Access = AccessSpecifier::AS_public);
135 void parseEnumerators(
EnumInfo &I,
const EnumDecl *D);
137 void parseParameters(
FunctionInfo &I,
const FunctionDecl *D);
139 void parseBases(
RecordInfo &I,
const CXXRecordDecl *D);
142 const CXXRecordDecl *D,
bool IsFileInRootDir,
bool PublicOnly,
144 AccessSpecifier ParentAccess = AccessSpecifier::AS_public);
146 template <
typename T>
147 void populateParentNamespaces(llvm::SmallVector<Reference, 4> &Namespaces,
148 const T *D,
bool &IsInAnonymousNamespace);
150 void populateTemplateParameters(std::optional<TemplateInfo> &
TemplateInfo,
151 const clang::Decl *D);
154 const TemplateArgument &Arg);
156 bool isSupportedContext(Decl::Kind DeclKind);
158 void findParent(
Info &I,
const Decl *D);
160 template <
typename T>
161 void populateInfo(
Info &I,
const T *D,
const FullComment *C,
162 bool &IsInAnonymousNamespace);
164 template <
typename T>
165 void populateSymbolInfo(
SymbolInfo &I,
const T *D,
const FullComment *C,
166 Location Loc,
bool &IsInAnonymousNamespace);
168 void handleCompoundConstraints(
169 const Expr *Constraint,
172 void populateConstraints(
TemplateInfo &I,
const TemplateDecl *D);
174 void populateFunctionInfo(
FunctionInfo &I,
const FunctionDecl *D,
175 const FullComment *FC,
Location Loc,
176 bool &IsInAnonymousNamespace);
178 template <
typename T>
void populateMemberTypeInfo(T &I,
const Decl *D);
181 AccessSpecifier &Access,
const DeclaratorDecl *D,
182 bool IsStatic =
false);
184 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< OwnedPtr< Info >, OwnedPtr< Info > > emitInfo(const VarDecl *D, const FullComment *FC, int LineNumber, StringRef File, bool IsFileInRootDir, bool PublicOnly)