1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- //===-- Mapper.h - ClangDoc Mapper ------------------------------*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This file implements the Mapper piece of the clang-doc tool. It implements
- // a RecursiveASTVisitor to look at each declaration and populate the info
- // into the internal representation. Each seen declaration is serialized to
- // to bitcode and written out to the ExecutionContext as a KV pair where the
- // key is the declaration's USR and the value is the serialized bitcode.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_MAPPER_H
- #define LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_MAPPER_H
- #include "Representation.h"
- #include "clang/AST/RecursiveASTVisitor.h"
- #include "clang/Tooling/Execution.h"
- using namespace clang::comments;
- using namespace clang::tooling;
- namespace clang {
- namespace doc {
- class MapASTVisitor : public clang::RecursiveASTVisitor<MapASTVisitor>,
- public ASTConsumer {
- public:
- explicit MapASTVisitor(ASTContext *Ctx, ClangDocContext CDCtx)
- : CDCtx(CDCtx) {}
- void HandleTranslationUnit(ASTContext &Context) override;
- bool VisitNamespaceDecl(const NamespaceDecl *D);
- bool VisitRecordDecl(const RecordDecl *D);
- bool VisitEnumDecl(const EnumDecl *D);
- bool VisitCXXMethodDecl(const CXXMethodDecl *D);
- bool VisitFunctionDecl(const FunctionDecl *D);
- private:
- template <typename T> bool mapDecl(const T *D);
- int getLine(const NamedDecl *D, const ASTContext &Context) const;
- llvm::SmallString<128> getFile(const NamedDecl *D, const ASTContext &Context,
- StringRef RootDir,
- bool &IsFileInRootDir) const;
- comments::FullComment *getComment(const NamedDecl *D,
- const ASTContext &Context) const;
- ClangDocContext CDCtx;
- };
- } // namespace doc
- } // namespace clang
- #endif // LLVM_CLANG_TOOLS_EXTRA_CLANG_DOC_MAPPER_H
|