1 //===-- ValueObjectCast.h ---------------------------------------*- C++ -*-===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef liblldb_ValueObjectCast_h_ 10 #define liblldb_ValueObjectCast_h_ 11 12 #include "lldb/Core/ValueObject.h" 13 #include "lldb/Symbol/CompilerType.h" 14 #include "lldb/lldb-defines.h" 15 #include "lldb/lldb-enumerations.h" 16 #include "lldb/lldb-forward.h" 17 18 #include <stddef.h> 19 #include <stdint.h> 20 21 namespace lldb_private { 22 class ConstString; 23 24 // A ValueObject that represents a given value represented as a different type. 25 class ValueObjectCast : public ValueObject { 26 public: 27 ~ValueObjectCast() override; 28 29 static lldb::ValueObjectSP Create(ValueObject &parent, 30 ConstString name, 31 const CompilerType &cast_type); 32 33 uint64_t GetByteSize() override; 34 35 size_t CalculateNumChildren(uint32_t max) override; 36 37 lldb::ValueType GetValueType() const override; 38 39 bool IsInScope() override; 40 41 ValueObject *GetParent() override { 42 return ((m_parent != nullptr) ? m_parent->GetParent() : nullptr); 43 } 44 45 const ValueObject *GetParent() const override { 46 return ((m_parent != nullptr) ? m_parent->GetParent() : nullptr); 47 } 48 49 protected: 50 ValueObjectCast(ValueObject &parent, ConstString name, 51 const CompilerType &cast_type); 52 53 bool UpdateValue() override; 54 55 CompilerType GetCompilerTypeImpl() override; 56 57 CompilerType m_cast_type; 58 59 private: 60 DISALLOW_COPY_AND_ASSIGN(ValueObjectCast); 61 }; 62 63 } // namespace lldb_private 64 65 #endif // liblldb_ValueObjectCast_h_ 66