forked from OSchip/llvm-project
Cleaned up the SBType.h file to not include internal headers and reorganized
the SBType implementation classes. Fixed LLDB core and the test suite to not use deprecated SBValue APIs. Added a few new APIs to SBValue: int64_t SBValue::GetValueAsSigned(int64_t fail_value=0); uint64_t SBValue::GetValueAsUnsigned(uint64_t fail_value=0) llvm-svn: 136829
This commit is contained in:
parent
3ef20e35f9
commit
fe42ac4d0a
|
@ -11,7 +11,6 @@
|
|||
#define LLDB_SBBreakpoint_h_
|
||||
|
||||
#include "lldb/API/SBDefines.h"
|
||||
#include <stdio.h>
|
||||
|
||||
namespace lldb {
|
||||
|
||||
|
|
|
@ -11,8 +11,6 @@
|
|||
#define LLDB_SBType_h_
|
||||
|
||||
#include "lldb/API/SBDefines.h"
|
||||
#include "lldb/Symbol/ClangASTType.h"
|
||||
#include "lldb/Symbol/Type.h"
|
||||
|
||||
namespace lldb {
|
||||
|
||||
|
@ -75,17 +73,16 @@ public:
|
|||
GetName();
|
||||
|
||||
protected:
|
||||
std::auto_ptr<lldb_private::TypeImpl> m_opaque_ap;
|
||||
lldb::TypeImplSP m_opaque_sp;
|
||||
|
||||
friend class SBModule;
|
||||
friend class SBTarget;
|
||||
friend class SBValue;
|
||||
friend class SBTypeList;
|
||||
|
||||
SBType (clang::ASTContext*, clang_type_t);
|
||||
SBType (lldb_private::ClangASTType type);
|
||||
SBType (lldb::TypeSP type);
|
||||
SBType (lldb_private::TypeImpl impl);
|
||||
SBType (const lldb_private::ClangASTType &);
|
||||
SBType (const lldb::TypeSP &);
|
||||
SBType (const lldb::TypeImplSP &);
|
||||
SBType();
|
||||
|
||||
};
|
||||
|
@ -101,7 +98,7 @@ public:
|
|||
operator = (const SBTypeList& rhs);
|
||||
|
||||
void
|
||||
AppendType(SBType type);
|
||||
Append (const SBType& type);
|
||||
|
||||
SBType
|
||||
GetTypeAtIndex(int index) const;
|
||||
|
|
|
@ -71,6 +71,12 @@ public:
|
|||
const char *
|
||||
GetValue ();
|
||||
|
||||
int64_t
|
||||
GetValueAsSigned(int64_t fail_value=0);
|
||||
|
||||
uint64_t
|
||||
GetValueAsUnsigned(uint64_t fail_value=0);
|
||||
|
||||
ValueType
|
||||
GetValueType ();
|
||||
|
||||
|
|
|
@ -31,8 +31,8 @@ class ClangASTType
|
|||
public:
|
||||
|
||||
ClangASTType (clang::ASTContext *ast_context, lldb::clang_type_t type) :
|
||||
m_type (type),
|
||||
m_ast (ast_context)
|
||||
m_type (type),
|
||||
m_ast (ast_context)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -58,6 +58,12 @@ public:
|
|||
return *this;
|
||||
}
|
||||
|
||||
bool
|
||||
IsValid () const
|
||||
{
|
||||
return m_type != NULL && m_ast != NULL;
|
||||
}
|
||||
|
||||
lldb::clang_type_t
|
||||
GetOpaqueQualType() const
|
||||
{
|
||||
|
@ -288,6 +294,9 @@ private:
|
|||
clang::ASTContext *m_ast;
|
||||
};
|
||||
|
||||
bool operator == (const ClangASTType &lhs, const ClangASTType &rhs);
|
||||
bool operator != (const ClangASTType &lhs, const ClangASTType &rhs);
|
||||
|
||||
|
||||
} // namespace lldb_private
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
#include "lldb/Core/ClangForward.h"
|
||||
#include "lldb/Core/ConstString.h"
|
||||
#include "lldb/Core/UserID.h"
|
||||
#include "lldb/Symbol/ClangASTType.h"
|
||||
#include "lldb/Symbol/Declaration.h"
|
||||
#include <set>
|
||||
|
||||
|
@ -272,9 +273,12 @@ public:
|
|||
operator= (const TypeAndOrName &rhs);
|
||||
|
||||
ConstString GetName () const;
|
||||
lldb::TypeSP GetTypeSP () const {
|
||||
|
||||
lldb::TypeSP
|
||||
GetTypeSP () const
|
||||
{
|
||||
return m_type_sp;
|
||||
};
|
||||
}
|
||||
|
||||
void
|
||||
SetName (ConstString &type_name_const_str);
|
||||
|
@ -298,21 +302,23 @@ private:
|
|||
|
||||
class TypeImpl
|
||||
{
|
||||
private:
|
||||
std::auto_ptr<ClangASTType> m_clang_ast_type;
|
||||
lldb::TypeSP m_lldb_type;
|
||||
|
||||
public:
|
||||
|
||||
TypeImpl() :
|
||||
m_clang_ast_type(NULL),
|
||||
m_lldb_type(lldb::TypeSP())
|
||||
{}
|
||||
m_clang_ast_type(),
|
||||
m_type_sp()
|
||||
{
|
||||
}
|
||||
|
||||
TypeImpl(const TypeImpl& rhs) :
|
||||
m_clang_ast_type(rhs.m_clang_ast_type.get()),
|
||||
m_lldb_type(rhs.m_lldb_type)
|
||||
{}
|
||||
m_clang_ast_type(rhs.m_clang_ast_type),
|
||||
m_type_sp(rhs.m_type_sp)
|
||||
{
|
||||
}
|
||||
|
||||
TypeImpl(const lldb_private::ClangASTType& type);
|
||||
|
||||
TypeImpl(const lldb::TypeSP& type);
|
||||
|
||||
TypeImpl&
|
||||
operator = (const TypeImpl& rhs);
|
||||
|
@ -320,31 +326,25 @@ public:
|
|||
bool
|
||||
operator == (const TypeImpl& rhs)
|
||||
{
|
||||
return (m_clang_ast_type.get() == rhs.m_clang_ast_type.get()) &&
|
||||
(m_lldb_type.get() == rhs.m_lldb_type.get());
|
||||
return m_clang_ast_type == rhs.m_clang_ast_type && m_type_sp.get() == rhs.m_type_sp.get();
|
||||
}
|
||||
|
||||
bool
|
||||
operator != (const TypeImpl& rhs)
|
||||
{
|
||||
return (m_clang_ast_type.get() != rhs.m_clang_ast_type.get()) ||
|
||||
(m_lldb_type.get() != rhs.m_lldb_type.get());
|
||||
return m_clang_ast_type != rhs.m_clang_ast_type || m_type_sp.get() != rhs.m_type_sp.get();
|
||||
}
|
||||
|
||||
TypeImpl(const lldb_private::ClangASTType& type);
|
||||
|
||||
TypeImpl(lldb::TypeSP type);
|
||||
|
||||
bool
|
||||
IsValid()
|
||||
{
|
||||
return (m_lldb_type.get() != NULL) || (m_clang_ast_type.get() != NULL);
|
||||
return m_type_sp.get() != NULL || m_clang_ast_type.IsValid();
|
||||
}
|
||||
|
||||
lldb_private::ClangASTType*
|
||||
GetClangASTType()
|
||||
const lldb_private::ClangASTType &
|
||||
GetClangASTType() const
|
||||
{
|
||||
return m_clang_ast_type.get();
|
||||
return m_clang_ast_type;
|
||||
}
|
||||
|
||||
clang::ASTContext*
|
||||
|
@ -352,37 +352,43 @@ public:
|
|||
|
||||
lldb::clang_type_t
|
||||
GetOpaqueQualType();
|
||||
|
||||
private:
|
||||
ClangASTType m_clang_ast_type;
|
||||
lldb::TypeSP m_type_sp;
|
||||
};
|
||||
|
||||
class TypeListImpl
|
||||
{
|
||||
public:
|
||||
TypeListImpl() :
|
||||
m_content() {}
|
||||
m_content()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
AppendType(TypeImpl& type)
|
||||
Append (const lldb::TypeImplSP& type)
|
||||
{
|
||||
m_content.push_back(type);
|
||||
}
|
||||
|
||||
TypeImpl
|
||||
GetTypeAtIndex(int index)
|
||||
lldb::TypeImplSP
|
||||
GetTypeAtIndex(size_t idx)
|
||||
{
|
||||
if (index < 0 || index >= GetSize())
|
||||
return TypeImpl();
|
||||
|
||||
return m_content[index];
|
||||
lldb::TypeImplSP type_sp;
|
||||
if (idx < GetSize())
|
||||
type_sp = m_content[idx];
|
||||
return type_sp;
|
||||
}
|
||||
|
||||
int
|
||||
size_t
|
||||
GetSize()
|
||||
{
|
||||
return m_content.size();
|
||||
}
|
||||
|
||||
private:
|
||||
std::vector<TypeImpl> m_content;
|
||||
std::vector<lldb::TypeImplSP> m_content;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -74,6 +74,7 @@ namespace lldb {
|
|||
typedef SharedPtr<lldb_private::ThreadPlan>::Type ThreadPlanSP;
|
||||
typedef SharedPtr<lldb_private::ThreadPlanTracer>::Type ThreadPlanTracerSP;
|
||||
typedef SharedPtr<lldb_private::Type>::Type TypeSP;
|
||||
typedef SharedPtr<lldb_private::TypeImpl>::Type TypeImplSP;
|
||||
typedef SharedPtr<lldb_private::FuncUnwinders>::Type FuncUnwindersSP;
|
||||
typedef SharedPtr<lldb_private::UserSettingsController>::Type UserSettingsControllerSP;
|
||||
typedef SharedPtr<lldb_private::UnwindPlan>::Type UnwindPlanSP;
|
||||
|
|
|
@ -163,8 +163,10 @@ class ThreadPlanTracer;
|
|||
class ThreadSpec;
|
||||
class TimeValue;
|
||||
class Type;
|
||||
class TypeImpl;
|
||||
class TypeAndOrName;
|
||||
class TypeList;
|
||||
class TypeListImpl;
|
||||
class UUID;
|
||||
class Unwind;
|
||||
class UnwindAssembly;
|
||||
|
|
|
@ -3420,10 +3420,10 @@
|
|||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 70;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3472,11 +3472,11 @@
|
|||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 70;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3523,8 +3523,8 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
DYLIB_CURRENT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
EXECUTABLE_EXTENSION = a;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3562,9 +3562,9 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DYLIB_CURRENT_VERSION = 70;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
EXECUTABLE_EXTENSION = a;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3602,9 +3602,9 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DYLIB_CURRENT_VERSION = 70;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
EXECUTABLE_EXTENSION = a;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3672,7 +3672,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3703,11 +3703,11 @@
|
|||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
COPY_PHASE_STRIP = YES;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DYLIB_COMPATIBILITY_VERSION = 1;
|
||||
DYLIB_CURRENT_VERSION = 70;
|
||||
DYLIB_CURRENT_VERSION = 71;
|
||||
EXPORTED_SYMBOLS_FILE = "resources/lldb-framework-exports";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3832,7 +3832,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
@ -3864,7 +3864,7 @@
|
|||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
COPY_PHASE_STRIP = YES;
|
||||
CURRENT_PROJECT_VERSION = 70;
|
||||
CURRENT_PROJECT_VERSION = 71;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
FRAMEWORK_SEARCH_PATHS = (
|
||||
"$(inherited)",
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>70</string>
|
||||
<string>71</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>${EXECUTABLE_NAME}</string>
|
||||
</dict>
|
||||
|
|
|
@ -54,7 +54,7 @@ namespace lldb {
|
|||
SBTypeList();
|
||||
|
||||
void
|
||||
AppendType(SBType type);
|
||||
Append(const SBType& type);
|
||||
|
||||
SBType
|
||||
GetTypeAtIndex(int index);
|
||||
|
|
|
@ -82,14 +82,6 @@ public:
|
|||
size_t
|
||||
GetByteSize ();
|
||||
|
||||
%define DEPRECATED
|
||||
"The method which takes an SBFrame is deprecated - SBValues know their own frames."
|
||||
%enddef
|
||||
|
||||
%feature("docstring", DEPRECATED) IsInScope;
|
||||
bool
|
||||
IsInScope (const lldb::SBFrame &frame);
|
||||
|
||||
bool
|
||||
IsInScope ();
|
||||
|
||||
|
@ -99,48 +91,30 @@ public:
|
|||
void
|
||||
SetFormat (lldb::Format format);
|
||||
|
||||
%feature("docstring", DEPRECATED) GetValue;
|
||||
const char *
|
||||
GetValue (const lldb::SBFrame &frame);
|
||||
|
||||
const char *
|
||||
GetValue ();
|
||||
|
||||
int64_t
|
||||
GetValueAsSigned(int64_t fail_value=0);
|
||||
|
||||
uint64_t
|
||||
GetValueAsUnsigned(uint64_t fail_value=0);
|
||||
|
||||
ValueType
|
||||
GetValueType ();
|
||||
|
||||
%feature("docstring", DEPRECATED) GetValueDidChange;
|
||||
bool
|
||||
GetValueDidChange (const lldb::SBFrame &frame);
|
||||
|
||||
bool
|
||||
GetValueDidChange ();
|
||||
|
||||
%feature("docstring", DEPRECATED) GetSummary;
|
||||
const char *
|
||||
GetSummary (const lldb::SBFrame &frame);
|
||||
|
||||
const char *
|
||||
GetSummary ();
|
||||
|
||||
%feature("docstring", DEPRECATED) GetObjectDescription;
|
||||
const char *
|
||||
GetObjectDescription (const lldb::SBFrame &frame);
|
||||
|
||||
const char *
|
||||
GetObjectDescription ();
|
||||
|
||||
%feature("docstring", DEPRECATED) GetLocation;
|
||||
const char *
|
||||
GetLocation (const lldb::SBFrame &frame);
|
||||
|
||||
const char *
|
||||
GetLocation ();
|
||||
|
||||
%feature("docstring", DEPRECATED) SetValueFromCString;
|
||||
bool
|
||||
SetValueFromCString (const lldb::SBFrame &frame, const char *value_str);
|
||||
|
||||
bool
|
||||
SetValueFromCString (const char *value_str);
|
||||
|
||||
|
|
|
@ -768,8 +768,8 @@ SBFrame::EvaluateExpression (const char *expr, lldb::DynamicValueType fetch_dyna
|
|||
|
||||
if (expr_log)
|
||||
expr_log->Printf("** [SBFrame::EvaluateExpression] Expression result is %s, summary %s **",
|
||||
expr_result.GetValue(*this),
|
||||
expr_result.GetSummary(*this));
|
||||
expr_result.GetValue(),
|
||||
expr_result.GetSummary());
|
||||
|
||||
if (log)
|
||||
log->Printf ("SBFrame(%p)::EvaluateExpression (expr=\"%s\") => SBValue(%p)", m_opaque_sp.get(),
|
||||
|
|
|
@ -347,27 +347,24 @@ SBModule::FindGlobalVariables (SBTarget &target, const char *name, uint32_t max_
|
|||
lldb::SBType
|
||||
SBModule::FindFirstType (const char* name_cstr)
|
||||
{
|
||||
if (!IsValid())
|
||||
return lldb::SBType();
|
||||
|
||||
SymbolContext sc;
|
||||
TypeList type_list;
|
||||
uint32_t num_matches = 0;
|
||||
ConstString name(name_cstr);
|
||||
|
||||
num_matches = m_opaque_sp->FindTypes(sc,
|
||||
name,
|
||||
false,
|
||||
1,
|
||||
type_list);
|
||||
|
||||
if (num_matches)
|
||||
SBType sb_type;
|
||||
if (IsValid())
|
||||
{
|
||||
TypeSP type_sp (type_list.GetTypeAtIndex(0));
|
||||
return lldb::SBType(type_sp);
|
||||
SymbolContext sc;
|
||||
TypeList type_list;
|
||||
uint32_t num_matches = 0;
|
||||
ConstString name(name_cstr);
|
||||
|
||||
num_matches = m_opaque_sp->FindTypes(sc,
|
||||
name,
|
||||
false,
|
||||
1,
|
||||
type_list);
|
||||
|
||||
if (num_matches)
|
||||
sb_type = lldb::SBType(type_list.GetTypeAtIndex(0));
|
||||
}
|
||||
else
|
||||
return lldb::SBType();
|
||||
return sb_type;
|
||||
}
|
||||
|
||||
lldb::SBTypeList
|
||||
|
@ -376,25 +373,25 @@ SBModule::FindTypes (const char* type)
|
|||
|
||||
SBTypeList retval;
|
||||
|
||||
if (!IsValid())
|
||||
return retval;
|
||||
|
||||
SymbolContext sc;
|
||||
TypeList type_list;
|
||||
uint32_t num_matches = 0;
|
||||
ConstString name(type);
|
||||
|
||||
num_matches = m_opaque_sp->FindTypes(sc,
|
||||
name,
|
||||
false,
|
||||
UINT32_MAX,
|
||||
type_list);
|
||||
|
||||
for (size_t idx = 0; idx < num_matches; idx++)
|
||||
if (IsValid())
|
||||
{
|
||||
TypeSP sp_at_idx = type_list.GetTypeAtIndex(idx);
|
||||
SymbolContext sc;
|
||||
TypeList type_list;
|
||||
uint32_t num_matches = 0;
|
||||
ConstString name(type);
|
||||
|
||||
retval.AppendType(SBType(sp_at_idx));
|
||||
num_matches = m_opaque_sp->FindTypes(sc,
|
||||
name,
|
||||
false,
|
||||
UINT32_MAX,
|
||||
type_list);
|
||||
|
||||
for (size_t idx = 0; idx < num_matches; idx++)
|
||||
{
|
||||
TypeSP type_sp (type_list.GetTypeAtIndex(idx));
|
||||
if (type_sp)
|
||||
retval.Append(SBType(type_sp));
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
|
|
|
@ -918,9 +918,9 @@ SBTarget::FindTypes (const char* type)
|
|||
|
||||
for (size_t idx = 0; idx < num_matches; idx++)
|
||||
{
|
||||
TypeSP sp_at_idx = type_list.GetTypeAtIndex(idx);
|
||||
|
||||
retval.AppendType(SBType(sp_at_idx));
|
||||
TypeSP type_sp (type_list.GetTypeAtIndex(idx));
|
||||
if (type_sp)
|
||||
retval.Append(SBType(type_sp));
|
||||
}
|
||||
}
|
||||
return retval;
|
||||
|
|
|
@ -14,60 +14,62 @@
|
|||
#include "clang/AST/Type.h"
|
||||
|
||||
#include "lldb/API/SBDefines.h"
|
||||
|
||||
#include "lldb/API/SBType.h"
|
||||
#include "lldb/API/SBStream.h"
|
||||
#include "lldb/Core/ConstString.h"
|
||||
#include "lldb/Core/Log.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Symbol/ClangASTType.h"
|
||||
#include "lldb/Symbol/Type.h"
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
using namespace clang;
|
||||
|
||||
SBType::SBType (lldb_private::ClangASTType type) :
|
||||
m_opaque_ap(new TypeImpl(ClangASTType(type.GetASTContext(),
|
||||
type.GetOpaqueQualType())))
|
||||
SBType::SBType() :
|
||||
m_opaque_sp()
|
||||
{
|
||||
}
|
||||
|
||||
SBType::SBType (lldb::TypeSP type) :
|
||||
m_opaque_ap(new TypeImpl(type))
|
||||
{}
|
||||
|
||||
SBType::SBType (const SBType &rhs)
|
||||
SBType::SBType (const lldb_private::ClangASTType &type) :
|
||||
m_opaque_sp(new TypeImpl(ClangASTType(type.GetASTContext(),
|
||||
type.GetOpaqueQualType())))
|
||||
{
|
||||
if (rhs.m_opaque_ap.get() != NULL)
|
||||
}
|
||||
|
||||
SBType::SBType (const lldb::TypeSP &type_sp) :
|
||||
m_opaque_sp(new TypeImpl(type_sp))
|
||||
{
|
||||
}
|
||||
|
||||
SBType::SBType (const lldb::TypeImplSP &type_impl_sp) :
|
||||
m_opaque_sp(type_impl_sp)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
SBType::SBType (const SBType &rhs) :
|
||||
m_opaque_sp()
|
||||
{
|
||||
if (this != &rhs)
|
||||
{
|
||||
m_opaque_ap = std::auto_ptr<TypeImpl>(new TypeImpl(ClangASTType(rhs.m_opaque_ap->GetASTContext(),
|
||||
rhs.m_opaque_ap->GetOpaqueQualType())));
|
||||
m_opaque_sp = rhs.m_opaque_sp;
|
||||
}
|
||||
}
|
||||
|
||||
SBType::SBType (clang::ASTContext *ctx, clang_type_t ty) :
|
||||
m_opaque_ap(new TypeImpl(ClangASTType(ctx, ty)))
|
||||
{
|
||||
}
|
||||
|
||||
SBType::SBType() :
|
||||
m_opaque_ap(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
SBType::SBType (TypeImpl impl) :
|
||||
m_opaque_ap(&impl)
|
||||
{}
|
||||
|
||||
//SBType::SBType (TypeImpl* impl) :
|
||||
// m_opaque_ap(impl)
|
||||
//{}
|
||||
//
|
||||
bool
|
||||
SBType::operator == (const lldb::SBType &rhs) const
|
||||
{
|
||||
if (IsValid() == false)
|
||||
return !rhs.IsValid();
|
||||
|
||||
return (rhs.m_opaque_ap->GetASTContext() == m_opaque_ap->GetASTContext())
|
||||
&&
|
||||
(rhs.m_opaque_ap->GetOpaqueQualType() == m_opaque_ap->GetOpaqueQualType());
|
||||
return (rhs.m_opaque_sp->GetASTContext() == m_opaque_sp->GetASTContext()) &&
|
||||
(rhs.m_opaque_sp->GetOpaqueQualType() == m_opaque_sp->GetOpaqueQualType());
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -76,9 +78,8 @@ SBType::operator != (const lldb::SBType &rhs) const
|
|||
if (IsValid() == false)
|
||||
return rhs.IsValid();
|
||||
|
||||
return (rhs.m_opaque_ap->GetASTContext() != m_opaque_ap->GetASTContext())
|
||||
||
|
||||
(rhs.m_opaque_ap->GetOpaqueQualType() != m_opaque_ap->GetOpaqueQualType());
|
||||
return (rhs.m_opaque_sp->GetASTContext() != m_opaque_sp->GetASTContext()) ||
|
||||
(rhs.m_opaque_sp->GetOpaqueQualType() != m_opaque_sp->GetOpaqueQualType());
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,11 +88,7 @@ SBType::operator = (const lldb::SBType &rhs)
|
|||
{
|
||||
if (*this != rhs)
|
||||
{
|
||||
if (!rhs.IsValid())
|
||||
m_opaque_ap.reset(NULL);
|
||||
else
|
||||
m_opaque_ap = std::auto_ptr<TypeImpl>(new TypeImpl(ClangASTType(rhs.m_opaque_ap->GetASTContext(),
|
||||
rhs.m_opaque_ap->GetOpaqueQualType())));
|
||||
m_opaque_sp = rhs.m_opaque_sp;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
@ -102,9 +99,9 @@ SBType::~SBType ()
|
|||
lldb_private::TypeImpl &
|
||||
SBType::ref ()
|
||||
{
|
||||
if (m_opaque_ap.get() == NULL)
|
||||
m_opaque_ap.reset (new lldb_private::TypeImpl());
|
||||
return *m_opaque_ap;
|
||||
if (m_opaque_sp.get() == NULL)
|
||||
m_opaque_sp.reset (new lldb_private::TypeImpl());
|
||||
return *m_opaque_sp;
|
||||
}
|
||||
|
||||
const lldb_private::TypeImpl &
|
||||
|
@ -113,17 +110,17 @@ SBType::ref () const
|
|||
// "const SBAddress &addr" should already have checked "addr.IsValid()"
|
||||
// prior to calling this function. In case you didn't we will assert
|
||||
// and die to let you know.
|
||||
assert (m_opaque_ap.get());
|
||||
return *m_opaque_ap;
|
||||
assert (m_opaque_sp.get());
|
||||
return *m_opaque_sp;
|
||||
}
|
||||
|
||||
bool
|
||||
SBType::IsValid() const
|
||||
{
|
||||
if (m_opaque_ap.get() == NULL)
|
||||
if (m_opaque_sp.get() == NULL)
|
||||
return false;
|
||||
|
||||
return m_opaque_ap->IsValid();
|
||||
return m_opaque_sp->IsValid();
|
||||
}
|
||||
|
||||
size_t
|
||||
|
@ -132,7 +129,7 @@ SBType::GetByteSize() const
|
|||
if (!IsValid())
|
||||
return 0;
|
||||
|
||||
return ClangASTType::GetTypeByteSize(m_opaque_ap->GetASTContext(), m_opaque_ap->GetOpaqueQualType());
|
||||
return ClangASTType::GetTypeByteSize(m_opaque_sp->GetASTContext(), m_opaque_sp->GetOpaqueQualType());
|
||||
|
||||
}
|
||||
|
||||
|
@ -142,7 +139,7 @@ SBType::IsPointerType() const
|
|||
if (!IsValid())
|
||||
return false;
|
||||
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_ap->GetOpaqueQualType());
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_sp->GetOpaqueQualType());
|
||||
const clang::Type* typePtr = qt.getTypePtrOrNull();
|
||||
|
||||
if (typePtr)
|
||||
|
@ -156,7 +153,7 @@ SBType::IsReferenceType() const
|
|||
if (!IsValid())
|
||||
return false;
|
||||
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_ap->GetOpaqueQualType());
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_sp->GetOpaqueQualType());
|
||||
const clang::Type* typePtr = qt.getTypePtrOrNull();
|
||||
|
||||
if (typePtr)
|
||||
|
@ -170,8 +167,8 @@ SBType::GetPointerType() const
|
|||
if (!IsValid())
|
||||
return SBType();
|
||||
|
||||
return SBType(m_opaque_ap->GetASTContext(),
|
||||
ClangASTContext::CreatePointerType(m_opaque_ap->GetASTContext(), m_opaque_ap->GetOpaqueQualType()));
|
||||
return SBType(ClangASTType(m_opaque_sp->GetASTContext(),
|
||||
ClangASTContext::CreatePointerType(m_opaque_sp->GetASTContext(), m_opaque_sp->GetOpaqueQualType())));
|
||||
}
|
||||
|
||||
SBType
|
||||
|
@ -180,11 +177,11 @@ SBType::GetPointeeType() const
|
|||
if (!IsValid())
|
||||
return SBType();
|
||||
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_ap->GetOpaqueQualType());
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_sp->GetOpaqueQualType());
|
||||
const clang::Type* typePtr = qt.getTypePtrOrNull();
|
||||
|
||||
if (typePtr)
|
||||
return SBType(m_opaque_ap->GetASTContext(),typePtr->getPointeeType().getAsOpaquePtr());
|
||||
return SBType(ClangASTType(m_opaque_sp->GetASTContext(),typePtr->getPointeeType().getAsOpaquePtr()));
|
||||
return SBType();
|
||||
}
|
||||
|
||||
|
@ -194,8 +191,8 @@ SBType::GetReferenceType() const
|
|||
if (!IsValid())
|
||||
return SBType();
|
||||
|
||||
return SBType(m_opaque_ap->GetASTContext(),
|
||||
ClangASTContext::CreateLValueReferenceType(m_opaque_ap->GetASTContext(), m_opaque_ap->GetOpaqueQualType()));
|
||||
return SBType(ClangASTType(m_opaque_sp->GetASTContext(),
|
||||
ClangASTContext::CreateLValueReferenceType(m_opaque_sp->GetASTContext(), m_opaque_sp->GetOpaqueQualType())));
|
||||
}
|
||||
|
||||
SBType
|
||||
|
@ -204,9 +201,9 @@ SBType::GetDereferencedType() const
|
|||
if (!IsValid())
|
||||
return SBType();
|
||||
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_ap->GetOpaqueQualType());
|
||||
QualType qt = QualType::getFromOpaquePtr(m_opaque_sp->GetOpaqueQualType());
|
||||
|
||||
return SBType(m_opaque_ap->GetASTContext(),qt.getNonReferenceType().getAsOpaquePtr());
|
||||
return SBType(ClangASTType(m_opaque_sp->GetASTContext(),qt.getNonReferenceType().getAsOpaquePtr()));
|
||||
}
|
||||
|
||||
SBType
|
||||
|
@ -221,89 +218,88 @@ SBType::GetBasicType(lldb::BasicType type) const
|
|||
switch (type)
|
||||
{
|
||||
case eBasicTypeChar:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->CharTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->CharTy;
|
||||
break;
|
||||
case eBasicTypeSignedChar:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->SignedCharTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->SignedCharTy;
|
||||
break;
|
||||
case eBasicTypeShort:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->ShortTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->ShortTy;
|
||||
break;
|
||||
case eBasicTypeUnsignedShort:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->UnsignedShortTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->UnsignedShortTy;
|
||||
break;
|
||||
case eBasicTypeInt:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->IntTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->IntTy;
|
||||
break;
|
||||
case eBasicTypeUnsignedInt:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->UnsignedIntTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->UnsignedIntTy;
|
||||
break;
|
||||
case eBasicTypeLong:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->LongTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->LongTy;
|
||||
break;
|
||||
case eBasicTypeUnsignedLong:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->UnsignedLongTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->UnsignedLongTy;
|
||||
break;
|
||||
case eBasicTypeBool:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->BoolTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->BoolTy;
|
||||
break;
|
||||
case eBasicTypeFloat:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->FloatTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->FloatTy;
|
||||
break;
|
||||
case eBasicTypeDouble:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->DoubleTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->DoubleTy;
|
||||
break;
|
||||
case eBasicTypeObjCID:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->ObjCBuiltinIdTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->ObjCBuiltinIdTy;
|
||||
break;
|
||||
case eBasicTypeVoid:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->VoidTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->VoidTy;
|
||||
break;
|
||||
case eBasicTypeWChar:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->WCharTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->WCharTy;
|
||||
break;
|
||||
case eBasicTypeChar16:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->Char16Ty;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->Char16Ty;
|
||||
break;
|
||||
case eBasicTypeChar32:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->Char32Ty;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->Char32Ty;
|
||||
break;
|
||||
case eBasicTypeLongLong:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->LongLongTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->LongLongTy;
|
||||
break;
|
||||
case eBasicTypeUnsignedLongLong:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->UnsignedLongLongTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->UnsignedLongLongTy;
|
||||
break;
|
||||
case eBasicTypeInt128:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->Int128Ty;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->Int128Ty;
|
||||
break;
|
||||
case eBasicTypeUnsignedInt128:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->UnsignedInt128Ty;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->UnsignedInt128Ty;
|
||||
break;
|
||||
case eBasicTypeLongDouble:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->LongDoubleTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->LongDoubleTy;
|
||||
break;
|
||||
case eBasicTypeFloatComplex:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->FloatComplexTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->FloatComplexTy;
|
||||
break;
|
||||
case eBasicTypeDoubleComplex:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->DoubleComplexTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->DoubleComplexTy;
|
||||
break;
|
||||
case eBasicTypeLongDoubleComplex:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->LongDoubleComplexTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->LongDoubleComplexTy;
|
||||
break;
|
||||
case eBasicTypeObjCClass:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->ObjCBuiltinClassTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->ObjCBuiltinClassTy;
|
||||
break;
|
||||
case eBasicTypeObjCSel:
|
||||
base_type_qual = m_opaque_ap->GetASTContext()->ObjCBuiltinSelTy;
|
||||
base_type_qual = m_opaque_sp->GetASTContext()->ObjCBuiltinSelTy;
|
||||
break;
|
||||
default:
|
||||
return SBType();
|
||||
}
|
||||
|
||||
return SBType(m_opaque_ap->GetASTContext(),
|
||||
base_type_qual.getAsOpaquePtr());
|
||||
return SBType(ClangASTType(m_opaque_sp->GetASTContext(), base_type_qual.getAsOpaquePtr()));
|
||||
}
|
||||
|
||||
const char*
|
||||
|
@ -312,38 +308,38 @@ SBType::GetName()
|
|||
if (!IsValid())
|
||||
return "";
|
||||
|
||||
return ClangASTType::GetConstTypeName(m_opaque_ap->GetOpaqueQualType()).GetCString();
|
||||
return ClangASTType::GetConstTypeName(m_opaque_sp->GetOpaqueQualType()).GetCString();
|
||||
}
|
||||
|
||||
SBTypeList::SBTypeList() :
|
||||
m_opaque_ap(new TypeListImpl())
|
||||
m_opaque_ap(new TypeListImpl())
|
||||
{
|
||||
}
|
||||
|
||||
SBTypeList::SBTypeList(const SBTypeList& rhs) :
|
||||
m_opaque_ap(new TypeListImpl())
|
||||
m_opaque_ap(new TypeListImpl())
|
||||
{
|
||||
for (int j = 0; j < rhs.GetSize(); j++)
|
||||
AppendType(rhs.GetTypeAtIndex(j));
|
||||
for (uint32_t i = 0, rhs_size = rhs.GetSize(); i < rhs_size; i++)
|
||||
Append(rhs.GetTypeAtIndex(i));
|
||||
}
|
||||
|
||||
SBTypeList&
|
||||
SBTypeList::operator = (const SBTypeList& rhs)
|
||||
{
|
||||
if (m_opaque_ap.get() != rhs.m_opaque_ap.get())
|
||||
if (this != &rhs && m_opaque_ap.get() != rhs.m_opaque_ap.get())
|
||||
{
|
||||
m_opaque_ap.reset(new TypeListImpl());
|
||||
for (int j = 0; j < rhs.GetSize(); j++)
|
||||
AppendType(rhs.GetTypeAtIndex(j));
|
||||
for (uint32_t i = 0, rhs_size = rhs.GetSize(); i < rhs_size; i++)
|
||||
Append(rhs.GetTypeAtIndex(i));
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
void
|
||||
SBTypeList::AppendType(SBType type)
|
||||
SBTypeList::Append (const SBType& type)
|
||||
{
|
||||
if (type.IsValid())
|
||||
m_opaque_ap->AppendType(*type.m_opaque_ap.get());
|
||||
m_opaque_ap->Append (type.m_opaque_sp);
|
||||
}
|
||||
|
||||
SBType
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "lldb/Core/DataExtractor.h"
|
||||
#include "lldb/Core/Log.h"
|
||||
#include "lldb/Core/Module.h"
|
||||
#include "lldb/Core/Scalar.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/StreamFile.h"
|
||||
#include "lldb/Core/Value.h"
|
||||
|
@ -270,8 +271,7 @@ SBValue::GetType()
|
|||
if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
|
||||
{
|
||||
Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
|
||||
result = SBType(m_opaque_sp->GetClangAST(),
|
||||
m_opaque_sp->GetClangType());
|
||||
result = SBType(ClangASTType (m_opaque_sp->GetClangAST(), m_opaque_sp->GetClangType()));
|
||||
}
|
||||
}
|
||||
LogSP log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
|
||||
|
@ -391,7 +391,7 @@ SBValue::CreateChildAtOffset (const char *name, uint32_t offset, const SBType& t
|
|||
{
|
||||
if (type.IsValid())
|
||||
{
|
||||
result = SBValue(m_opaque_sp->GetSyntheticChildAtOffset(offset, *type.m_opaque_ap->GetClangASTType(), true));
|
||||
result = SBValue(m_opaque_sp->GetSyntheticChildAtOffset(offset, type.m_opaque_sp->GetClangASTType(), true));
|
||||
result.m_opaque_sp->SetName(ConstString(name));
|
||||
}
|
||||
}
|
||||
|
@ -449,8 +449,8 @@ SBValue::CreateValueFromAddress(const char* name, lldb::addr_t address, const SB
|
|||
lldb::DataBufferSP buffer(new lldb_private::DataBufferHeap(&address,sizeof(lldb::addr_t)));
|
||||
|
||||
ValueObjectSP result_valobj_sp(ValueObjectConstResult::Create(m_opaque_sp->GetUpdatePoint().GetExecutionContextScope(),
|
||||
real_type.m_opaque_ap->GetASTContext(),
|
||||
real_type.m_opaque_ap->GetOpaqueQualType(),
|
||||
real_type.m_opaque_sp->GetASTContext(),
|
||||
real_type.m_opaque_sp->GetOpaqueQualType(),
|
||||
ConstString(name),
|
||||
buffer,
|
||||
lldb::endian::InlHostByteOrder(),
|
||||
|
@ -618,6 +618,38 @@ SBValue::GetValueForExpressionPath(const char* expr_path)
|
|||
return sb_value;
|
||||
}
|
||||
|
||||
int64_t
|
||||
SBValue::GetValueAsSigned(int64_t fail_value)
|
||||
{
|
||||
if (m_opaque_sp)
|
||||
{
|
||||
if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
|
||||
{
|
||||
Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
|
||||
Scalar scalar;
|
||||
if (m_opaque_sp->ResolveValue (scalar))
|
||||
return scalar.GetRawBits64(fail_value);
|
||||
}
|
||||
}
|
||||
return fail_value;
|
||||
}
|
||||
|
||||
uint64_t
|
||||
SBValue::GetValueAsUnsigned(uint64_t fail_value)
|
||||
{
|
||||
if (m_opaque_sp)
|
||||
{
|
||||
if (m_opaque_sp->GetUpdatePoint().GetTargetSP())
|
||||
{
|
||||
Mutex::Locker api_locker (m_opaque_sp->GetUpdatePoint().GetTargetSP()->GetAPIMutex());
|
||||
Scalar scalar;
|
||||
if (m_opaque_sp->ResolveValue (scalar))
|
||||
return scalar.GetRawBits64(fail_value);
|
||||
}
|
||||
}
|
||||
return fail_value;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
SBValue::GetNumChildren ()
|
||||
{
|
||||
|
|
|
@ -1606,3 +1606,17 @@ ClangASTType::RemoveFastQualifiers (lldb::clang_type_t clang_type)
|
|||
qual_type.getQualifiers().removeFastQualifiers();
|
||||
return qual_type.getAsOpaquePtr();
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
lldb_private::operator == (const lldb_private::ClangASTType &lhs, const lldb_private::ClangASTType &rhs)
|
||||
{
|
||||
return lhs.GetASTContext() == rhs.GetASTContext() && lhs.GetOpaqueQualType() == rhs.GetOpaqueQualType();
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
lldb_private::operator != (const lldb_private::ClangASTType &lhs, const lldb_private::ClangASTType &rhs)
|
||||
{
|
||||
return lhs.GetASTContext() != rhs.GetASTContext() || lhs.GetOpaqueQualType() != rhs.GetOpaqueQualType();
|
||||
}
|
||||
|
|
|
@ -731,25 +731,24 @@ TypeAndOrName::IsEmpty()
|
|||
return true;
|
||||
}
|
||||
|
||||
TypeImpl::TypeImpl(const lldb_private::ClangASTType& type) :
|
||||
m_clang_ast_type(new ClangASTType(type.GetASTContext(),
|
||||
type.GetOpaqueQualType())),
|
||||
m_lldb_type(lldb::TypeSP())
|
||||
TypeImpl::TypeImpl(const lldb_private::ClangASTType& clang_ast_type) :
|
||||
m_clang_ast_type(clang_ast_type.GetASTContext(), clang_ast_type.GetOpaqueQualType()),
|
||||
m_type_sp()
|
||||
{}
|
||||
|
||||
TypeImpl::TypeImpl(lldb::TypeSP type) :
|
||||
m_clang_ast_type(new ClangASTType(type->GetClangAST(),
|
||||
type->GetClangFullType())),
|
||||
m_lldb_type(type)
|
||||
{}
|
||||
TypeImpl::TypeImpl(const lldb::TypeSP& type) :
|
||||
m_clang_ast_type(type->GetClangAST(), type->GetClangFullType()),
|
||||
m_type_sp(type)
|
||||
{
|
||||
}
|
||||
|
||||
TypeImpl&
|
||||
TypeImpl::operator = (const TypeImpl& rhs)
|
||||
{
|
||||
if (*this != rhs)
|
||||
{
|
||||
m_clang_ast_type = std::auto_ptr<ClangASTType>(rhs.m_clang_ast_type.get());
|
||||
m_lldb_type = lldb::TypeSP(rhs.m_lldb_type);
|
||||
m_clang_ast_type = rhs.m_clang_ast_type;
|
||||
m_type_sp = rhs.m_type_sp;
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
@ -760,7 +759,7 @@ TypeImpl::GetASTContext()
|
|||
if (!IsValid())
|
||||
return NULL;
|
||||
|
||||
return m_clang_ast_type->GetASTContext();
|
||||
return m_clang_ast_type.GetASTContext();
|
||||
}
|
||||
|
||||
lldb::clang_type_t
|
||||
|
@ -769,5 +768,5 @@ TypeImpl::GetOpaqueQualType()
|
|||
if (!IsValid())
|
||||
return NULL;
|
||||
|
||||
return m_clang_ast_type->GetOpaqueQualType();
|
||||
return m_clang_ast_type.GetOpaqueQualType();
|
||||
}
|
||||
|
|
|
@ -134,29 +134,29 @@ class BasicExprCommandsTestCase(TestBase):
|
|||
frame = thread.GetFrameAtIndex(0)
|
||||
|
||||
val = frame.EvaluateExpression("2.234")
|
||||
self.expect(val.GetValue(frame), "2.345 evaluated correctly", exe=False,
|
||||
self.expect(val.GetValue(), "2.345 evaluated correctly", exe=False,
|
||||
startstr = "2.234")
|
||||
self.expect(val.GetTypeName(), "2.345 evaluated correctly", exe=False,
|
||||
startstr = "double")
|
||||
self.DebugSBValue(val)
|
||||
|
||||
val = frame.EvaluateExpression("argc")
|
||||
self.expect(val.GetValue(frame), "Argc evaluated correctly", exe=False,
|
||||
self.expect(val.GetValue(), "Argc evaluated correctly", exe=False,
|
||||
startstr = "4")
|
||||
self.DebugSBValue(val)
|
||||
|
||||
val = frame.EvaluateExpression("*argv[1]")
|
||||
self.expect(val.GetValue(frame), "Argv[1] evaluated correctly", exe=False,
|
||||
self.expect(val.GetValue(), "Argv[1] evaluated correctly", exe=False,
|
||||
startstr = "'X'")
|
||||
self.DebugSBValue(val)
|
||||
|
||||
val = frame.EvaluateExpression("*argv[2]")
|
||||
self.expect(val.GetValue(frame), "Argv[2] evaluated correctly", exe=False,
|
||||
self.expect(val.GetValue(), "Argv[2] evaluated correctly", exe=False,
|
||||
startstr = "'Y'")
|
||||
self.DebugSBValue(val)
|
||||
|
||||
val = frame.EvaluateExpression("*argv[3]")
|
||||
self.expect(val.GetValue(frame), "Argv[3] evaluated correctly", exe=False,
|
||||
self.expect(val.GetValue(), "Argv[3] evaluated correctly", exe=False,
|
||||
startstr = "'Z'")
|
||||
self.DebugSBValue(val)
|
||||
|
||||
|
|
|
@ -149,7 +149,7 @@ class BreakpointConditionsTestCase(TestBase):
|
|||
frame0 = thread.GetFrameAtIndex(0)
|
||||
var = frame0.FindValue('val', lldb.eValueTypeVariableArgument)
|
||||
self.assertTrue(frame0.GetLineEntry().GetLine() == self.line1 and
|
||||
var.GetValue(frame0) == '3')
|
||||
var.GetValue() == '3')
|
||||
|
||||
# The hit count for the breakpoint should be 3.
|
||||
self.assertTrue(breakpoint.GetHitCount() == 3)
|
||||
|
|
|
@ -90,7 +90,7 @@ class ConditionalBreakTestCase(TestBase):
|
|||
# And the local variable 'val' should have a value of (int) 3.
|
||||
val = frame1.FindVariable("val")
|
||||
self.assertTrue(val.GetTypeName() == "int", "'val' has int type")
|
||||
self.assertTrue(val.GetValue(frame1) == "3", "'val' has a value of 3")
|
||||
self.assertTrue(val.GetValue() == "3", "'val' has a value of 3")
|
||||
break
|
||||
|
||||
process.Continue()
|
||||
|
|
|
@ -161,7 +161,7 @@ class ArrayTypesTestCase(TestBase):
|
|||
|
||||
child3 = variable.GetChildAtIndex(3)
|
||||
self.DebugSBValue(child3)
|
||||
self.assertTrue(child3.GetSummary(frame) == '"Guten Tag"',
|
||||
self.assertTrue(child3.GetSummary() == '"Guten Tag"',
|
||||
'strings[3] == "Guten Tag"')
|
||||
|
||||
# Lookup the "char_16" char array variable.
|
||||
|
@ -171,7 +171,7 @@ class ArrayTypesTestCase(TestBase):
|
|||
"Variable 'char_16' should have 16 children")
|
||||
|
||||
# Lookup the "ushort_matrix" ushort[] array variable.
|
||||
# Notice the pattern of int(child0_2.GetValue(frame), 0). We pass a
|
||||
# Notice the pattern of int(child0_2.GetValue(), 0). We pass a
|
||||
# base of 0 so that the proper radix is determined based on the contents
|
||||
# of the string. Same applies to long().
|
||||
variable = frame.FindVariable("ushort_matrix")
|
||||
|
@ -184,7 +184,7 @@ class ArrayTypesTestCase(TestBase):
|
|||
"Variable 'ushort_matrix[0]' should have 3 children")
|
||||
child0_2 = child0.GetChildAtIndex(2)
|
||||
self.DebugSBValue(child0_2)
|
||||
self.assertTrue(int(child0_2.GetValue(frame), 0) == 3,
|
||||
self.assertTrue(int(child0_2.GetValue(), 0) == 3,
|
||||
"ushort_matrix[0][2] == 3")
|
||||
|
||||
# Lookup the "long_6" char array variable.
|
||||
|
@ -194,7 +194,7 @@ class ArrayTypesTestCase(TestBase):
|
|||
"Variable 'long_6' should have 6 children")
|
||||
child5 = variable.GetChildAtIndex(5)
|
||||
self.DebugSBValue(child5)
|
||||
self.assertTrue(long(child5.GetValue(frame), 0) == 6,
|
||||
self.assertTrue(long(child5.GetValue(), 0) == 6,
|
||||
"long_6[5] == 6")
|
||||
|
||||
# Last, check that "long_6" has a value type of eValueTypeVariableLocal
|
||||
|
|
|
@ -116,31 +116,31 @@ class BitfieldsTestCase(TestBase):
|
|||
bits.GetByteSize() == 4,
|
||||
"(Bits)bits with byte size of 4 and 8 children")
|
||||
|
||||
# Notice the pattern of int(b1.GetValue(frame), 0). We pass a base of 0
|
||||
# Notice the pattern of int(b1.GetValue(), 0). We pass a base of 0
|
||||
# so that the proper radix is determined based on the contents of the
|
||||
# string.
|
||||
b1 = bits.GetChildAtIndex(0)
|
||||
self.DebugSBValue(b1)
|
||||
self.assertTrue(b1.GetName() == "b1" and
|
||||
b1.GetTypeName() == "uint32_t:1" and
|
||||
b1.IsInScope(frame) and
|
||||
int(b1.GetValue(frame), 0) == 1,
|
||||
b1.IsInScope() and
|
||||
int(b1.GetValue(), 0) == 1,
|
||||
'bits.b1 has type uint32_t:1, is in scope, and == 1')
|
||||
|
||||
b7 = bits.GetChildAtIndex(6)
|
||||
self.DebugSBValue(b7)
|
||||
self.assertTrue(b7.GetName() == "b7" and
|
||||
b7.GetTypeName() == "uint32_t:7" and
|
||||
b7.IsInScope(frame) and
|
||||
int(b7.GetValue(frame), 0) == 127,
|
||||
b7.IsInScope() and
|
||||
int(b7.GetValue(), 0) == 127,
|
||||
'bits.b7 has type uint32_t:7, is in scope, and == 127')
|
||||
|
||||
four = bits.GetChildAtIndex(7)
|
||||
self.DebugSBValue(four)
|
||||
self.assertTrue(four.GetName() == "four" and
|
||||
four.GetTypeName() == "uint32_t:4" and
|
||||
four.IsInScope(frame) and
|
||||
int(four.GetValue(frame), 0) == 15,
|
||||
four.IsInScope() and
|
||||
int(four.GetValue(), 0) == 15,
|
||||
'bits.four has type uint32_t:4, is in scope, and == 15')
|
||||
|
||||
# Now kill the process, and we are done.
|
||||
|
|
|
@ -116,7 +116,7 @@ class StaticVariableTestCase(TestBase):
|
|||
child1_x = child1.GetChildAtIndex(0)
|
||||
self.DebugSBValue(child1_x)
|
||||
self.assertTrue(child1_x.GetTypeName() == 'int' and
|
||||
child1_x.GetValue(frame) == '11')
|
||||
child1_x.GetValue() == '11')
|
||||
|
||||
# SBFrame.FindValue() should also work.
|
||||
val = frame.FindValue("A::g_points", lldb.eValueTypeVariableGlobal)
|
||||
|
|
|
@ -240,9 +240,9 @@ class FoundationTestCase(TestBase):
|
|||
my_str_var = my_var.GetChildMemberWithName("str")
|
||||
self.assertTrue(my_str_var, "Found a str ivar in my")
|
||||
|
||||
str_value = int(str_var.GetValue(cur_frame), 0)
|
||||
str_value = int(str_var.GetValue(), 0)
|
||||
|
||||
my_str_value = int(my_str_var.GetValue(cur_frame), 0)
|
||||
my_str_value = int(my_str_var.GetValue(), 0)
|
||||
|
||||
self.assertTrue(str_value == my_str_value, "Got the correct value for my->str")
|
||||
|
||||
|
|
|
@ -58,14 +58,14 @@ class TestObjCIvarOffsets(TestBase):
|
|||
|
||||
mine_backed_int = mine.GetChildMemberWithName ("_backed_int")
|
||||
self.assertTrue(mine_backed_int, "Found mine->backed_int local variable.")
|
||||
backed_value = int (mine_backed_int.GetValue (frame), 0)
|
||||
backed_value = int (mine_backed_int.GetValue (), 0)
|
||||
self.assertTrue (backed_value == 1111)
|
||||
|
||||
# Test the value object value for DerivedClass->_derived_backed_int
|
||||
|
||||
mine_derived_backed_int = mine.GetChildMemberWithName ("_derived_backed_int")
|
||||
self.assertTrue(mine_derived_backed_int, "Found mine->derived_backed_int local variable.")
|
||||
derived_backed_value = int (mine_derived_backed_int.GetValue (frame), 0)
|
||||
derived_backed_value = int (mine_derived_backed_int.GetValue (), 0)
|
||||
self.assertTrue (derived_backed_value == 3333)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -84,7 +84,7 @@ class TestObjCStepping(TestBase):
|
|||
self.assertTrue(mySource, "Found mySource local variable.")
|
||||
mySource_isa = mySource.GetChildMemberWithName ("isa")
|
||||
self.assertTrue(mySource_isa, "Found mySource->isa local variable.")
|
||||
mySource_isa.GetValue (thread.GetFrameAtIndex(0))
|
||||
mySource_isa.GetValue ()
|
||||
|
||||
# Lets delete mySource so we can check that after stepping a child variable
|
||||
# with no parent persists and is useful.
|
||||
|
@ -125,8 +125,8 @@ class TestObjCStepping(TestBase):
|
|||
line_number = frame.GetLineEntry().GetLine()
|
||||
self.assertTrue (line_number == self.line3, "Continued to third breakpoint in main, our object should now be swizzled.")
|
||||
|
||||
mySource_isa.GetValue (frame)
|
||||
did_change = mySource_isa.GetValueDidChange (frame)
|
||||
mySource_isa.GetValue ()
|
||||
did_change = mySource_isa.GetValueDidChange ()
|
||||
|
||||
self.assertTrue (did_change, "The isa did indeed change, swizzled!")
|
||||
|
||||
|
|
|
@ -447,7 +447,7 @@ def get_args_as_string(frame, showFuncName=True):
|
|||
for var in vars:
|
||||
args.append("(%s)%s=%s" % (var.GetTypeName(),
|
||||
var.GetName(),
|
||||
var.GetValue(frame)))
|
||||
var.GetValue()))
|
||||
if frame.GetFunction():
|
||||
name = frame.GetFunction().GetName()
|
||||
elif frame.GetSymbol():
|
||||
|
@ -472,7 +472,7 @@ def print_registers(frame, string_buffer = False):
|
|||
#print >> output, value
|
||||
print >> output, "%s (number of children = %d):" % (value.GetName(), value.GetNumChildren())
|
||||
for child in value:
|
||||
print >> output, "Name: %s, Value: %s" % (child.GetName(), child.GetValue(frame))
|
||||
print >> output, "Name: %s, Value: %s" % (child.GetName(), child.GetValue())
|
||||
|
||||
if string_buffer:
|
||||
return output.getvalue()
|
||||
|
|
|
@ -77,7 +77,7 @@ class FrameAPITestCase(TestBase):
|
|||
for val in valList:
|
||||
argList.append("(%s)%s=%s" % (val.GetTypeName(),
|
||||
val.GetName(),
|
||||
val.GetValue(frame)))
|
||||
val.GetValue()))
|
||||
print >> session, "%s(%s)" % (name, ", ".join(argList))
|
||||
|
||||
# Also check the generic pc & stack pointer. We can't test their absolute values,
|
||||
|
@ -85,10 +85,10 @@ class FrameAPITestCase(TestBase):
|
|||
gpr_reg_set = lldbutil.get_GPRs(frame)
|
||||
pc_value = gpr_reg_set.GetChildMemberWithName("pc")
|
||||
self.assertTrue (pc_value, "We should have a valid PC.")
|
||||
self.assertTrue (int(pc_value.GetValue(frame), 0) == frame.GetPC(), "PC gotten as a value should equal frame's GetPC")
|
||||
self.assertTrue (int(pc_value.GetValue(), 0) == frame.GetPC(), "PC gotten as a value should equal frame's GetPC")
|
||||
sp_value = gpr_reg_set.GetChildMemberWithName("sp")
|
||||
self.assertTrue (sp_value, "We should have a valid Stack Pointer.")
|
||||
self.assertTrue (int(sp_value.GetValue(frame), 0) == frame.GetSP(), "SP gotten as a value should equal frame's GetSP")
|
||||
self.assertTrue (int(sp_value.GetValue(), 0) == frame.GetSP(), "SP gotten as a value should equal frame's GetSP")
|
||||
|
||||
print >> session, "---"
|
||||
process.Continue()
|
||||
|
|
|
@ -54,7 +54,7 @@ class RegistersIteratorTestCase(TestBase):
|
|||
for reg in REGs:
|
||||
self.assertTrue(reg)
|
||||
if self.TraceOn():
|
||||
print "%s => %s" % (reg.GetName(), reg.GetValue(frame))
|
||||
print "%s => %s" % (reg.GetName(), reg.GetValue())
|
||||
|
||||
REGs = lldbutil.get_FPRs(frame)
|
||||
num = len(REGs)
|
||||
|
@ -63,7 +63,7 @@ class RegistersIteratorTestCase(TestBase):
|
|||
for reg in REGs:
|
||||
self.assertTrue(reg)
|
||||
if self.TraceOn():
|
||||
print "%s => %s" % (reg.GetName(), reg.GetValue(frame))
|
||||
print "%s => %s" % (reg.GetName(), reg.GetValue())
|
||||
|
||||
REGs = lldbutil.get_ESRs(frame)
|
||||
num = len(REGs)
|
||||
|
@ -72,7 +72,7 @@ class RegistersIteratorTestCase(TestBase):
|
|||
for reg in REGs:
|
||||
self.assertTrue(reg)
|
||||
if self.TraceOn():
|
||||
print "%s => %s" % (reg.GetName(), reg.GetValue(frame))
|
||||
print "%s => %s" % (reg.GetName(), reg.GetValue())
|
||||
|
||||
# And these should also work.
|
||||
for kind in ["General Purpose Registers",
|
||||
|
|
|
@ -86,11 +86,11 @@ class ProcessAPITestCase(TestBase):
|
|||
self.DebugSBValue(val)
|
||||
|
||||
# If the variable does not have a load address, there's no sense continuing.
|
||||
if not val.GetLocation(frame).startswith("0x"):
|
||||
if not val.GetLocation().startswith("0x"):
|
||||
return
|
||||
|
||||
# OK, let's get the hex location of the variable.
|
||||
location = int(val.GetLocation(frame), 16)
|
||||
location = int(val.GetLocation(), 16)
|
||||
|
||||
# Due to the typemap magic (see lldb.swig), we pass in 1 to ReadMemory and
|
||||
# expect to get a Python string as the result object!
|
||||
|
@ -128,11 +128,11 @@ class ProcessAPITestCase(TestBase):
|
|||
self.DebugSBValue(val)
|
||||
|
||||
# If the variable does not have a load address, there's no sense continuing.
|
||||
if not val.GetLocation(frame).startswith("0x"):
|
||||
if not val.GetLocation().startswith("0x"):
|
||||
return
|
||||
|
||||
# OK, let's get the hex location of the variable.
|
||||
location = int(val.GetLocation(frame), 16)
|
||||
location = int(val.GetLocation(), 16)
|
||||
|
||||
# The program logic makes the 'my_char' variable to have memory content as 'x'.
|
||||
# But we want to use the WriteMemory() API to assign 'a' to the variable.
|
||||
|
@ -179,11 +179,11 @@ class ProcessAPITestCase(TestBase):
|
|||
self.DebugSBValue(val)
|
||||
|
||||
# If the variable does not have a load address, there's no sense continuing.
|
||||
if not val.GetLocation(frame).startswith("0x"):
|
||||
if not val.GetLocation().startswith("0x"):
|
||||
return
|
||||
|
||||
# OK, let's get the hex location of the variable.
|
||||
location = int(val.GetLocation(frame), 16)
|
||||
location = int(val.GetLocation(), 16)
|
||||
|
||||
# Note that the canonical from of the bytearray is little endian.
|
||||
from lldbutil import int_to_bytearray, bytearray_to_int
|
||||
|
@ -212,14 +212,14 @@ class ProcessAPITestCase(TestBase):
|
|||
self.fail("SBProcess.WriteMemory() failed")
|
||||
|
||||
# Make sure that the val we got originally updates itself to notice the change:
|
||||
self.expect(val.GetValue(frame),
|
||||
self.expect(val.GetValue(),
|
||||
"SBProcess.ReadMemory() successfully writes (int)256 to the memory location for 'my_int'",
|
||||
exe=False,
|
||||
startstr = '256')
|
||||
|
||||
# And for grins, get the SBValue for the global variable 'my_int' again, to make sure that also tracks the new value:
|
||||
val = frame.FindValue("my_int", lldb.eValueTypeVariableGlobal)
|
||||
self.expect(val.GetValue(frame),
|
||||
self.expect(val.GetValue(),
|
||||
"SBProcess.ReadMemory() successfully writes (int)256 to the memory location for 'my_int'",
|
||||
exe=False,
|
||||
startstr = '256')
|
||||
|
|
Loading…
Reference in New Issue