1 //===-- PDBASTParser.h ------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef LLDB_PLUGINS_SYMBOLFILE_PDB_PDBASTPARSER_H
11 #define LLDB_PLUGINS_SYMBOLFILE_PDB_PDBASTPARSER_H
12 
13 #include "lldb/lldb-forward.h"
14 
15 #include "lldb/Symbol/ClangASTImporter.h"
16 
17 namespace clang
18 {
19 class CharUnits;
20 class CXXRecordDecl;
21 class FieldDecl;
22 class RecordDecl;
23 }
24 
25 namespace lldb_private
26 {
27 class ClangASTContext;
28 class CompilerType;
29 }
30 
31 namespace llvm
32 {
33 namespace pdb
34 {
35 class PDBSymbol;
36 class PDBSymbolData;
37 class PDBSymbolTypeBuiltin;
38 }
39 }
40 
41 class PDBASTParser
42 {
43 public:
44     PDBASTParser(lldb_private::ClangASTContext &ast);
45     ~PDBASTParser();
46 
47     lldb::TypeSP
48     CreateLLDBTypeFromPDBType(const llvm::pdb::PDBSymbol &type);
49 
50 private:
51     bool
52     AddEnumValue(lldb_private::CompilerType enum_type, const llvm::pdb::PDBSymbolData &data) const;
53 
54     lldb_private::ClangASTContext &m_ast;
55     lldb_private::ClangASTImporter m_ast_importer;
56 };
57 
58 #endif // SymbolFileDWARF_DWARFASTParserClang_h_
59