diff options
author | Enrico Granata <egranata@apple.com> | 2012-10-27 02:05:48 +0000 |
---|---|---|
committer | Enrico Granata <egranata@apple.com> | 2012-10-27 02:05:48 +0000 |
commit | 21fd13f9b704361e36af81939e068ccbf6a669d1 (patch) | |
tree | caf4ccbf84ecede57fd9eda1da9ffdc89d5164ea /lldb/source/Core/ValueObjectDynamicValue.cpp | |
parent | cd6ce2ff3113ec70d24d3013a24bb379f1455ccf (diff) | |
download | bcm5719-llvm-21fd13f9b704361e36af81939e068ccbf6a669d1.tar.gz bcm5719-llvm-21fd13f9b704361e36af81939e068ccbf6a669d1.zip |
Moving ValueObjectCast over to its own .h/.cpp files instead of sharing ValueObjectDynamic.h/.cpp
Removing the IsDynamic() and GetStaticValue() calls, so that they will default to the base class behavior:
- non-dynamic
- itself as the static value
This is in contrast with the previous behavior which could be confusing and could potentially cause issues when using those objects
llvm-svn: 166857
Diffstat (limited to 'lldb/source/Core/ValueObjectDynamicValue.cpp')
-rw-r--r-- | lldb/source/Core/ValueObjectDynamicValue.cpp | 105 |
1 files changed, 1 insertions, 104 deletions
diff --git a/lldb/source/Core/ValueObjectDynamicValue.cpp b/lldb/source/Core/ValueObjectDynamicValue.cpp index dfddbd97c95..2b5c605dee6 100644 --- a/lldb/source/Core/ValueObjectDynamicValue.cpp +++ b/lldb/source/Core/ValueObjectDynamicValue.cpp @@ -20,6 +20,7 @@ #include "lldb/Core/Value.h" #include "lldb/Core/ValueObject.h" +#include "lldb/Symbol/ClangASTType.h" #include "lldb/Symbol/ObjectFile.h" #include "lldb/Symbol/SymbolContext.h" #include "lldb/Symbol/Type.h" @@ -32,112 +33,8 @@ #include "lldb/Target/Target.h" #include "lldb/Target/Thread.h" - using namespace lldb_private; -lldb::ValueObjectSP -ValueObjectCast::Create (ValueObject &parent, - const ConstString &name, - const ClangASTType &cast_type) -{ - ValueObjectCast *cast_valobj_ptr = new ValueObjectCast (parent, name, cast_type); - return cast_valobj_ptr->GetSP(); -} - -ValueObjectCast::ValueObjectCast -( - ValueObject &parent, - const ConstString &name, - const ClangASTType &cast_type -) : - ValueObject(parent), - m_cast_type (cast_type) -{ - SetName (name); - m_value.SetContext (Value::eContextTypeClangType, cast_type.GetOpaqueQualType()); -} - -ValueObjectCast::~ValueObjectCast() -{ -} - -lldb::clang_type_t -ValueObjectCast::GetClangTypeImpl () -{ - return m_cast_type.GetOpaqueQualType(); -} - -uint32_t -ValueObjectCast::CalculateNumChildren() -{ - return ClangASTContext::GetNumChildren (GetClangAST (), GetClangType(), true); -} - -clang::ASTContext * -ValueObjectCast::GetClangASTImpl () -{ - return m_cast_type.GetASTContext(); -} - -size_t -ValueObjectCast::GetByteSize() -{ - return m_value.GetValueByteSize(GetClangAST(), NULL); -} - -lldb::ValueType -ValueObjectCast::GetValueType() const -{ - // Let our parent answer global, local, argument, etc... - return m_parent->GetValueType(); -} - -bool -ValueObjectCast::UpdateValue () -{ - SetValueIsValid (false); - m_error.Clear(); - - if (m_parent->UpdateValueIfNeeded(false)) - { - Value old_value(m_value); - m_update_point.SetUpdated(); - m_value = m_parent->GetValue(); - m_value.SetContext (Value::eContextTypeClangType, GetClangType()); - SetAddressTypeOfChildren(m_parent->GetAddressTypeOfChildren()); - if (ClangASTContext::IsAggregateType (GetClangType())) - { - // this value object represents an aggregate type whose - // children have values, but this object does not. So we - // say we are changed if our location has changed. - SetValueDidChange (m_value.GetValueType() != old_value.GetValueType() || m_value.GetScalar() != old_value.GetScalar()); - } - ExecutionContext exe_ctx (GetExecutionContextRef()); - m_error = m_value.GetValueAsData(&exe_ctx, GetClangAST(), m_data, 0, GetModule().get()); - SetValueDidChange (m_parent->GetValueDidChange()); - return true; - } - - // The dynamic value failed to get an error, pass the error along - if (m_error.Success() && m_parent->GetError().Fail()) - m_error = m_parent->GetError(); - SetValueIsValid (false); - return false; -} - - - -bool -ValueObjectCast::IsInScope () -{ - return m_parent->IsInScope(); -} - -//---------------------------------------------------------------------- - - - - ValueObjectDynamicValue::ValueObjectDynamicValue (ValueObject &parent, lldb::DynamicValueType use_dynamic) : ValueObject(parent), m_address (), |