//===-- ClangExpressionVariable.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_EXPRESSIONPARSER_CLANG_CLANGEXPRESSIONVARIABLE_H #define LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGEXPRESSIONVARIABLE_H #include <csignal> #include <cstdint> #include <cstring> #include <map> #include <string> #include <vector> #include "llvm/Support/Casting.h" #include "lldb/Core/Value.h" #include "lldb/Expression/ExpressionVariable.h" #include "lldb/Symbol/TaggedASTType.h" #include "lldb/Utility/ConstString.h" #include "lldb/lldb-public.h" namespace llvm { class Value; } namespace clang { class NamedDecl; } namespace lldb_private { class ValueObjectConstResult; /// \class ClangExpressionVariable ClangExpressionVariable.h /// "lldb/Expression/ClangExpressionVariable.h" Encapsulates one variable for /// the expression parser. /// /// The expression parser uses variables in three different contexts: /// /// First, it stores persistent variables along with the process for use in /// expressions. These persistent variables contain their own data and are /// typed. /// /// Second, in an interpreted expression, it stores the local variables for /// the expression along with the expression. These variables contain their /// own data and are typed. /// /// Third, in a JIT-compiled expression, it stores the variables that the /// expression needs to have materialized and dematerialized at each /// execution. These do not contain their own data but are named and typed. /// /// This class supports all of these use cases using simple type polymorphism, /// and provides necessary support methods. Its interface is RTTI-neutral. class ClangExpressionVariable : public llvm::RTTIExtends<ClangExpressionVariable, ExpressionVariable> { … }; } // namespace lldb_private #endif // LLDB_SOURCE_PLUGINS_EXPRESSIONPARSER_CLANG_CLANGEXPRESSIONVARIABLE_H