Files
clang-p2996/lldb/source/Core/ValueObjectConstResultCast.cpp
Pavel Labath 90b9922df2 [lldb] Split ValueObject::CreateChildAtIndex into two functions (#94455)
The the function is doing two fairly different things, depending on how
it is called. While this allows for some code reuse, it also makes it
hard to override it correctly. Possibly for this reason
ValueObjectSynthetic overerides GetChildAtIndex instead, which forces it
to reimplement some of its functionality, most notably caching of
generated children.

Splitting this up makes it easier to move the caching to a common place
(and hopefully makes the code easier to follow in general).
2024-06-07 08:39:10 +02:00

57 lines
1.8 KiB
C++

//===-- ValueObjectConstResultCast.cpp ------------------------------------===//
//
// 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
//
//===----------------------------------------------------------------------===//
#include "lldb/Core/ValueObjectConstResultCast.h"
namespace lldb_private {
class DataExtractor;
}
namespace lldb_private {
class Status;
}
namespace lldb_private {
class ValueObject;
}
using namespace lldb_private;
ValueObjectConstResultCast::ValueObjectConstResultCast(
ValueObject &parent, ConstString name, const CompilerType &cast_type,
lldb::addr_t live_address)
: ValueObjectCast(parent, name, cast_type), m_impl(this, live_address) {
m_name = name;
}
ValueObjectConstResultCast::~ValueObjectConstResultCast() = default;
lldb::ValueObjectSP ValueObjectConstResultCast::Dereference(Status &error) {
return m_impl.Dereference(error);
}
lldb::ValueObjectSP ValueObjectConstResultCast::GetSyntheticChildAtOffset(
uint32_t offset, const CompilerType &type, bool can_create,
ConstString name_const_str) {
return m_impl.GetSyntheticChildAtOffset(offset, type, can_create,
name_const_str);
}
lldb::ValueObjectSP ValueObjectConstResultCast::AddressOf(Status &error) {
return m_impl.AddressOf(error);
}
size_t ValueObjectConstResultCast::GetPointeeData(DataExtractor &data,
uint32_t item_idx,
uint32_t item_count) {
return m_impl.GetPointeeData(data, item_idx, item_count);
}
lldb::ValueObjectSP
ValueObjectConstResultCast::DoCast(const CompilerType &compiler_type) {
return m_impl.Cast(compiler_type);
}