12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- //===-- ClangDoc.cpp - ClangDoc ---------------------------------*- 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 main entry point for the clang-doc tool. It runs
- // the clang-doc mapper on a given set of source code files using a
- // FrontendActionFactory.
- //
- //===----------------------------------------------------------------------===//
- #include "ClangDoc.h"
- #include "Mapper.h"
- #include "Representation.h"
- #include "clang/AST/AST.h"
- #include "clang/AST/ASTConsumer.h"
- #include "clang/AST/ASTContext.h"
- #include "clang/AST/RecursiveASTVisitor.h"
- #include "clang/Frontend/ASTConsumers.h"
- #include "clang/Frontend/CompilerInstance.h"
- #include "clang/Frontend/FrontendActions.h"
- namespace clang {
- namespace doc {
- class MapperActionFactory : public tooling::FrontendActionFactory {
- public:
- MapperActionFactory(ClangDocContext CDCtx) : CDCtx(CDCtx) {}
- std::unique_ptr<FrontendAction> create() override;
- private:
- ClangDocContext CDCtx;
- };
- std::unique_ptr<FrontendAction> MapperActionFactory::create() {
- class ClangDocAction : public clang::ASTFrontendAction {
- public:
- ClangDocAction(ClangDocContext CDCtx) : CDCtx(CDCtx) {}
- std::unique_ptr<clang::ASTConsumer>
- CreateASTConsumer(clang::CompilerInstance &Compiler,
- llvm::StringRef InFile) override {
- return std::make_unique<MapASTVisitor>(&Compiler.getASTContext(), CDCtx);
- }
- private:
- ClangDocContext CDCtx;
- };
- return std::make_unique<ClangDocAction>(CDCtx);
- }
- std::unique_ptr<tooling::FrontendActionFactory>
- newMapperActionFactory(ClangDocContext CDCtx) {
- return std::make_unique<MapperActionFactory>(CDCtx);
- }
- } // namespace doc
- } // namespace clang
|