summaryrefslogtreecommitdiffstats
path: root/lldb/scripts/Python
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/scripts/Python')
-rw-r--r--lldb/scripts/Python/interface/SBType.i87
1 files changed, 86 insertions, 1 deletions
diff --git a/lldb/scripts/Python/interface/SBType.i b/lldb/scripts/Python/interface/SBType.i
index c77788e678f..e2904f85a23 100644
--- a/lldb/scripts/Python/interface/SBType.i
+++ b/lldb/scripts/Python/interface/SBType.i
@@ -37,6 +37,12 @@ public:
uint64_t
GetOffsetInBits();
+ bool
+ IsBitfield();
+
+ uint32_t
+ GetBitfieldSizeInBits();
+
%pythoncode %{
__swig_getmethods__["name"] = GetName
if _newclass: name = property(GetName, None, doc='''A read only property that returns the name for this member as a string.''')
@@ -49,7 +55,14 @@ public:
__swig_getmethods__["bit_offset"] = GetOffsetInBits
if _newclass: bit_offset = property(GetOffsetInBits, None, doc='''A read only property that returns offset in bits for this member as an integer.''')
- %}
+
+ __swig_getmethods__["is_bitfield"] = IsBitfield
+ if _newclass: is_bitfield = property(IsBitfield, None, doc='''A read only property that returns true if this member is a bitfield.''')
+
+ __swig_getmethods__["bitfield_bit_size"] = GetBitfieldSizeInBits
+ if _newclass: bitfield_bit_size = property(GetBitfieldSizeInBits, None, doc='''A read only property that returns the bitfield size in bits for this member as an integer, or zero if this member is not a bitfield.''')
+
+ %}
protected:
std::auto_ptr<lldb_private::TypeMemberImpl> m_opaque_ap;
@@ -245,6 +258,78 @@ public:
__swig_getmethods__["is_complete"] = IsTypeComplete
if _newclass: is_complete = property(IsTypeComplete, None, doc='''A read only property that returns a boolean value that indicates if this type is a complete type (True) or a forward declaration (False).''')
+
+ def get_bases_array(self):
+ '''An accessor function that returns a list() that contains all direct base classes in a lldb.SBType object.'''
+ bases = []
+ for idx in range(self.GetNumberOfDirectBaseClasses()):
+ bases.append(self.GetDirectBaseClassAtIndex(idx))
+ return bases
+
+ def get_vbases_array(self):
+ '''An accessor function that returns a list() that contains all fields in a lldb.SBType object.'''
+ vbases = []
+ for idx in range(self.GetNumberOfVirtualBaseClasses()):
+ vbases.append(self.GetVirtualBaseClassAtIndex(idx))
+ return vbases
+
+ def get_fields_array(self):
+ '''An accessor function that returns a list() that contains all fields in a lldb.SBType object.'''
+ fields = []
+ for idx in range(self.GetNumberOfFields()):
+ fields.append(self.GetFieldAtIndex(idx))
+ return fields
+
+ def get_members_array(self):
+ '''An accessor function that returns a list() that contains all members (base classes and fields) in a lldb.SBType object in ascending bit offset order.'''
+ members = []
+ bases = self.get_bases_array()
+ fields = self.get_fields_array()
+ vbases = self.get_vbases_array()
+ for base in bases:
+ bit_offset = base.bit_offset
+ added = False
+ for idx, member in enumerate(members):
+ if member.bit_offset > bit_offset:
+ members.insert(idx, base)
+ added = True
+ break
+ if not added:
+ members.append(base)
+ for vbase in vbases:
+ bit_offset = vbase.bit_offset
+ added = False
+ for idx, member in enumerate(members):
+ if member.bit_offset > bit_offset:
+ members.insert(idx, vbase)
+ added = True
+ break
+ if not added:
+ members.append(vbase)
+ for field in fields:
+ bit_offset = field.bit_offset
+ added = False
+ for idx, member in enumerate(members):
+ if member.bit_offset > bit_offset:
+ members.insert(idx, field)
+ added = True
+ break
+ if not added:
+ members.append(field)
+ return members
+
+ __swig_getmethods__["bases"] = get_bases_array
+ if _newclass: bases = property(get_bases_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the direct base classes for this type.''')
+
+ __swig_getmethods__["vbases"] = get_vbases_array
+ if _newclass: vbases = property(get_vbases_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the virtual base classes for this type.''')
+
+ __swig_getmethods__["fields"] = get_fields_array
+ if _newclass: fields = property(get_fields_array, None, doc='''A read only property that returns a list() of lldb.SBTypeMember objects that represent all of the fields for this type.''')
+
+ __swig_getmethods__["members"] = get_members_array
+ if _newclass: members = property(get_members_array, None, doc='''A read only property that returns a list() of all lldb.SBTypeMember objects that represent all of the base classes, virtual base classes and fields for this type in ascending bit offset order.''')
+
%}
};
OpenPOWER on IntegriCloud