diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-04-27 14:04:44 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2020-04-30 07:10:13 +0200 |
commit | 656bf562baa88d3410947177477c86f339591770 (patch) | |
tree | 111ca0d6a3edf04a7ef2cb3776a528ce22c416e8 /tools | |
parent | ad412dddebac53739f8f96bcce35a54954fc5a88 (diff) |
metaobject_dump.py: Make output of methods more verbose
Add parameter names and types.
Change-Id: I7f9471b4ec1d52d26b728678a03caf64b93e4b77
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Reviewed-by: Christian Tismer <tismer@stackless.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/dump_metaobject.py | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/tools/dump_metaobject.py b/tools/dump_metaobject.py index 7cb7312c9..fd95374ce 100644 --- a/tools/dump_metaobject.py +++ b/tools/dump_metaobject.py @@ -43,6 +43,10 @@ from PySide2.QtCore import (QMetaClassInfo, QMetaEnum, QMetaMethod, QMetaProperty, QMetaObject, QObject) +def _qbytearray_to_string(b): + return bytes(b.data()).decode('utf-8') + + def _dump_metaobject_helper(meta_obj, indent): print('{}class {}:'.format(indent, meta_obj.className())) indent += ' ' @@ -93,9 +97,9 @@ def _dump_metaobject_helper(meta_obj, indent): desc += ', writable' if meta_property.isResettable: desc += ', resettable' - if meta_property.hasNotifySignal() : + if meta_property.hasNotifySignal(): notify_name = meta_property.notifySignal().name() - desc += ', notify={}'.format(bytes(notify_name).decode('utf-8')) + desc += ', notify={}'.format(_qbytearray_to_string(notify_name)) print('{}{:4d} {} {}{}'.format(indent, p, meta_property.typeName(), name, desc)) @@ -105,14 +109,32 @@ def _dump_metaobject_helper(meta_obj, indent): print('{}Methods:'.format(indent)) for m in range(method_offset, method_count): method = meta_obj.method(m) - signature = bytes(method.methodSignature().data()).decode('utf-8') + signature = _qbytearray_to_string(method.methodSignature()) + access = '' + if method.access() == QMetaMethod.Protected: + access += 'protected ' + elif method.access() == QMetaMethod.Private: + access += 'private ' type = method.methodType() typeString = '' if type == QMetaMethod.Signal: typeString = ' (Signal)' elif type == QMetaMethod.Slot: typeString = ' (Slot)' - print('{}{:4d} {}{}'.format(indent, m, signature, typeString)) + elif type == QMetaMethod.Constructor: + typeString = ' (Ct)' + desc = '{}{:4d} {}{} {}{}'.format(indent, m, access, + method.typeName(), signature, + typeString) + parameter_names = method.parameterNames() + if parameter_names: + parameter_types = method.parameterTypes() + desc += ' Parameters:' + for p, bname in enumerate(parameter_names): + name = _qbytearray_to_string(bname) + type = _qbytearray_to_string(parameter_types[p]) + desc += ' {}: {}'.format(name if name else '<unnamed>', type) + print(desc) def dump_metaobject(meta_obj): |