forked from qt-creator/qt-creator
Add ability to display 64-bit QFlags
Adjusted the enum dumper script so that 64-bit (or any for that matter) QFlags can be correctly visualized. Removed unused parameter in displayEnum method. Note, the visualization is somewhat borked on Windows due to CDB (or the CDB extension, not sure) not handling 64-bit enums well. Fixes: QTCREATORBUG-31561 Change-Id: I4657e130109fd80c462aad927328253f362e52a3 Reviewed-by: hjk <hjk@qt.io> Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -3200,8 +3200,8 @@ typename))
|
||||
return "Value(name='%s',typeid=%s, type=%s,data=%s,address=%s)" \
|
||||
% (self.name, self.typeid, self.type.name, data, addr)
|
||||
|
||||
def displayEnum(self, form='%d', bitsize=None):
|
||||
return self.dumper.value_display_enum(self, form, bitsize)
|
||||
def displayEnum(self, form='%d'):
|
||||
return self.dumper.value_display_enum(self, form)
|
||||
|
||||
def display(self):
|
||||
if self.ldisplay is not None:
|
||||
@@ -4115,7 +4115,7 @@ typename))
|
||||
fdata = fdata[::-1]
|
||||
return int(fdata, 2)
|
||||
|
||||
def value_display_enum(self, value, form='%d', bitsize=None):
|
||||
def value_display_enum(self, value, form='%d'):
|
||||
size = value.type.size()
|
||||
intval = self.value_extract_integer(value, size, False)
|
||||
dd = self.type_enum_display_cache.get(value.typeid, None)
|
||||
|
@@ -584,7 +584,7 @@ def qdump__QEvent(d, value):
|
||||
(vtable, privateD, t, flags) = value.split("pp{short}{short}")
|
||||
event_type_name = d.qtNamespace() + "QEvent::Type"
|
||||
type_value = t.cast(event_type_name)
|
||||
d.putValue(type_value.displayEnum('0x%04x', bitsize=16))
|
||||
d.putValue(type_value.displayEnum('0x%04x'))
|
||||
d.putType(event_type_name)
|
||||
|
||||
# Show the rest of the class fields as usual.
|
||||
@@ -622,7 +622,7 @@ def qdump__QKeyEvent(d, value):
|
||||
|
||||
k_type_name = d.qtNamespace() + "Qt::Key"
|
||||
k_cast_to_enum_value = k.cast(k_type_name)
|
||||
k_name = k_cast_to_enum_value.displayEnum(bitsize=32)
|
||||
k_name = k_cast_to_enum_value.displayEnum()
|
||||
matches = re.search(r'Key_(\w+)', k_name)
|
||||
if matches:
|
||||
k_name = matches.group(1)
|
||||
@@ -677,7 +677,7 @@ def qdump__QKeyEvent(d, value):
|
||||
# Add a sub-item with the enum name and value.
|
||||
with SubItem(d, '[{}]'.format(k_type_name)):
|
||||
k_cast_to_enum_value = k.cast(k_type_name)
|
||||
d.putValue(k_cast_to_enum_value.displayEnum('0x%04x', bitsize=32))
|
||||
d.putValue(k_cast_to_enum_value.displayEnum('0x%04x'))
|
||||
d.putType(k_type_name)
|
||||
|
||||
# Show the rest of the class fields as usual.
|
||||
@@ -874,10 +874,11 @@ def qdump__QFiniteStack(d, value):
|
||||
|
||||
|
||||
def qdump__QFlags(d, value):
|
||||
i = value.split('{int}')[0]
|
||||
enumType = value.type[0]
|
||||
v = i.cast(enumType.name)
|
||||
d.putValue(v.displayEnum('0x%04x', bitsize=32))
|
||||
v = value.cast(enumType.name)
|
||||
size = enumType.size()
|
||||
# One byte is 2 hex digits
|
||||
d.putValue(v.displayEnum(f'0x%0{2 * size}x'))
|
||||
|
||||
|
||||
def qform__QHash():
|
||||
|
Reference in New Issue
Block a user