blob: 8356ead4918902a45647cee6a2dab2f49059246d [file] [edit]
//===-- PdbAstBuilder.h -----------------------------------*- 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
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_PDBASTBUILDER_H
#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_PDBASTBUILDER_H
#include "lldb/Symbol/CompilerDecl.h"
#include "lldb/Symbol/CompilerDeclContext.h"
#include "lldb/Symbol/CompilerType.h"
#include "lldb/lldb-types.h"
#include "llvm/ADT/StringRef.h"
#include "PdbSymUid.h"
namespace lldb_private {
class Stream;
namespace npdb {
class PdbAstBuilder {
public:
virtual ~PdbAstBuilder() = default;
virtual CompilerDecl GetOrCreateDeclForUid(PdbSymUid uid) = 0;
virtual CompilerDeclContext GetOrCreateDeclContextForUid(PdbSymUid uid) = 0;
virtual CompilerDeclContext GetParentDeclContext(PdbSymUid uid) = 0;
virtual void EnsureFunction(PdbCompilandSymId func_id) = 0;
virtual void EnsureInlinedFunction(PdbCompilandSymId inlinesite_id) = 0;
virtual void EnsureBlock(PdbCompilandSymId block_id) = 0;
virtual void EnsureVariable(PdbCompilandSymId scope_id,
PdbCompilandSymId var_id) = 0;
virtual void EnsureVariable(PdbGlobalSymId var_id) = 0;
virtual CompilerType GetOrCreateType(PdbTypeSymId type) = 0;
virtual CompilerType GetOrCreateTypedefType(PdbGlobalSymId id) = 0;
virtual bool CompleteType(CompilerType ct) = 0;
virtual void ParseDeclsForContext(CompilerDeclContext context) = 0;
virtual CompilerDeclContext FindNamespaceDecl(CompilerDeclContext parent_ctx,
llvm::StringRef name) = 0;
virtual void Dump(Stream &stream, llvm::StringRef filter,
bool show_color) = 0;
};
} // namespace npdb
} // namespace lldb_private
#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_NATIVEPDB_PDBASTBUILDER_H