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 class PDBSymbol;
34 class PDBSymbolData;
35 class PDBSymbolTypeBuiltin;
36 }
37 
38 class PDBASTParser
39 {
40 public:
41     PDBASTParser(lldb_private::ClangASTContext &ast);
42     ~PDBASTParser();
43 
44     lldb::TypeSP
45     CreateLLDBTypeFromPDBType(const llvm::PDBSymbol &type);
46 
47 private:
48     bool
49     AddEnumValue(lldb_private::CompilerType enum_type, const llvm::PDBSymbolData &data) const;
50 
51     lldb_private::ClangASTContext &m_ast;
52     lldb_private::ClangASTImporter m_ast_importer;
53 };
54 
55 #endif // SymbolFileDWARF_DWARFASTParserClang_h_
56