llvm/lldb/include/lldb/Expression/ExpressionVariable.h

//===-- ExpressionVariable.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_EXPRESSION_EXPRESSIONVARIABLE_H
#define LLDB_EXPRESSION_EXPRESSIONVARIABLE_H

#include <memory>
#include <optional>
#include <vector>

#include "llvm/ADT/DenseMap.h"

#include "lldb/Core/ValueObject.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/lldb-public.h"
#include "llvm/Support/ExtensibleRTTI.h"

namespace lldb_private {

class ExpressionVariable
    : public std::enable_shared_from_this<ExpressionVariable>,
      public llvm::RTTIExtends<ExpressionVariable, llvm::RTTIRoot> {};

/// \class ExpressionVariableList ExpressionVariable.h
/// "lldb/Expression/ExpressionVariable.h"
/// A list of variable references.
///
/// This class stores variables internally, acting as the permanent store.
class ExpressionVariableList {};

class PersistentExpressionState
    : public ExpressionVariableList,
      public llvm::RTTIExtends<PersistentExpressionState, llvm::RTTIRoot> {};

} // namespace lldb_private

#endif // LLDB_EXPRESSION_EXPRESSIONVARIABLE_H