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 llvm::SmallString<256> getFunctionPrototype(
const FunctionDecl *
FuncDecl);
95 llvm::SmallString<16> getTypeAlias(
const TypeAliasDecl *Alias);
97 llvm::SmallString<128>
100 llvm::SmallString<128> getInfoRelativePath(
const Decl *D);
102 std::string getSourceCode(
const Decl *D,
const SourceRange &R);
104 void parseFullComment(
const FullComment *C,
CommentInfo &CI);
106 SymbolID getUSRForDecl(
const Decl *D);
108 TagDecl *getTagDeclForType(
const QualType &T);
110 RecordDecl *getRecordDeclForType(
const QualType &T);
112 TypeInfo getTypeInfoForType(
const QualType &T,
const PrintingPolicy &Policy);
114 bool isPublic(
const clang::AccessSpecifier AS,
const clang::Linkage Link);
116 bool shouldSerializeInfo(
bool PublicOnly,
bool IsInAnonymousNamespace,
127 template <
typename ChildType>
130 AccessSpecifier getFinalAccessSpecifier(AccessSpecifier FirstAS,
131 AccessSpecifier SecondAS);
134 AccessSpecifier Access = AccessSpecifier::AS_public);
136 void parseEnumerators(
EnumInfo &I,
const EnumDecl *D);
138 void parseParameters(
FunctionInfo &I,
const FunctionDecl *D);
140 void parseBases(
RecordInfo &I,
const CXXRecordDecl *D);
142 void parseBases(
RecordInfo &I,
const CXXRecordDecl *D,
bool IsFileInRootDir,
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(
const Expr *Constraint,
171 void populateConstraints(
TemplateInfo &I,
const TemplateDecl *D);
173 void populateFunctionInfo(
FunctionInfo &I,
const FunctionDecl *D,
174 const FullComment *FC,
Location Loc,
175 bool &IsInAnonymousNamespace);
177 template <
typename T>
void populateMemberTypeInfo(T &I,
const Decl *D);
179 void populateMemberTypeInfo(
RecordInfo &I, AccessSpecifier &Access,
180 const DeclaratorDecl *D,
bool IsStatic =
false);
182 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)