doxygen
clangparser.h
1 #ifndef CLANGPARSER_H
2 #define CLANGPARSER_H
3 
4 #include "containers.h"
5 #include "types.h"
6 #include <memory>
7 #include <string>
8 #include <cstdint>
9 
10 class OutputCodeList;
11 class FileDef;
12 class ClangParser;
13 class Definition;
14 
15 namespace clang { namespace tooling {
16  class CompilationDatabase;
17 } }
18 
23 {
24  public:
25  ClangTUParser(const ClangParser &parser,const FileDef *fd);
26  virtual ~ClangTUParser();
27 
31  void parse();
32 
36  void switchToFile(const FileDef *fd);
37 
39  StringVector filesInSameTU() const;
40 
44  std::string lookup(uint32_t line,const char *symbol);
45 
50  void writeSources(OutputCodeList &ol,const FileDef *fd);
51 
52  private:
53  void detectFunctionBody(const char *s);
54  void writeLineNumber(OutputCodeList &ol,const FileDef *fd,uint32_t line,bool writeLineAnchor);
55  void codifyLines(OutputCodeList &ol,const FileDef *fd,const char *text,
56  uint32_t &line,uint32_t &column,const char *fontClass=0);
57  void writeMultiLineCodeLink(OutputCodeList &ol,
58  const FileDef *fd,uint32_t &line,uint32_t &column,
59  const Definition *d, const char *text);
60  void linkIdentifier(OutputCodeList &ol,const FileDef *fd,
61  uint32_t &line,uint32_t &column,
62  const char *text,int tokenIndex);
63  void linkMacro(OutputCodeList &ol,const FileDef *fd,
64  uint32_t &line,uint32_t &column,
65  const char *text);
66  void linkInclude(OutputCodeList &ol,const FileDef *fd,
67  uint32_t &line,uint32_t &column,
68  const char *text);
69  ClangTUParser(const ClangTUParser &) = delete;
70  ClangTUParser &operator=(const ClangTUParser &) = delete;
71  class Private;
72  std::unique_ptr<Private> p;
73 };
74 
77 {
78  friend class ClangTUParser;
79  public:
81  static ClangParser *instance();
82  std::unique_ptr<ClangTUParser> createTUParser(const FileDef *fd) const;
83 
84  private:
85  const clang::tooling::CompilationDatabase *database() const;
86  class Private;
87  std::unique_ptr<Private> p;
88  ClangParser();
89  virtual ~ClangParser();
90  static ClangParser *s_instance;
91 };
92 
93 #endif
This file contains a number of basic enums and types.
The common base class of all entity definitions found in the sources.
Definition: definition.h:74
Definition: clangparser.cpp:855
A model of a file symbol.
Definition: filedef.h:98
Class representing a list of different code generators.
Definition: outputlist.h:154
Definition: clangparser.h:15
Wrapper for to let libclang assisted parsing.
Definition: clangparser.h:76
Definition: clangparser.cpp:880
Clang parser object for a single translation unit, which consists of a source file and the directly o...
Definition: clangparser.h:22