Add QtCreator debugging helpers (wip)
This commit is contained in:
parent
bdd32ad40f
commit
a106fd660d
1 changed files with 110 additions and 0 deletions
110
psemektypes.py
Normal file
110
psemektypes.py
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
############################################################################
|
||||
#
|
||||
# Copyright (C) 2016 The Qt Company Ltd.
|
||||
# Contact: https://www.qt.io/licensing/
|
||||
#
|
||||
# This file is part of Qt Creator.
|
||||
#
|
||||
# Commercial License Usage
|
||||
# Licensees holding valid commercial Qt licenses may use this file in
|
||||
# accordance with the commercial license agreement provided with the
|
||||
# Software or, alternatively, in accordance with the terms contained in
|
||||
# a written agreement between you and The Qt Company. For licensing terms
|
||||
# and conditions see https://www.qt.io/terms-conditions. For further
|
||||
# information use the contact form at https://www.qt.io/contact-us.
|
||||
#
|
||||
# GNU General Public License Usage
|
||||
# Alternatively, this file may be used under the terms of the GNU
|
||||
# General Public License version 3 as published by the Free Software
|
||||
# Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||
# included in the packaging of this file. Please review the following
|
||||
# information to ensure the GNU General Public License requirements will
|
||||
# be met: https://www.gnu.org/licenses/gpl-3.0.html.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
# This is a place to add your own dumpers for testing purposes.
|
||||
# Any contents here will be picked up by GDB, LLDB, and CDB based
|
||||
# debugging in Qt Creator automatically.
|
||||
|
||||
# NOTE: This file will get overwritten when updating Qt Creator.
|
||||
#
|
||||
# To add dumpers that don't get overwritten, copy this file here
|
||||
# to a safe location outside the Qt Creator installation and
|
||||
# make this location known to Qt Creator using the Debugger >
|
||||
# Locals & Expressions > Extra Debugging Helpers setting.
|
||||
|
||||
# Example to display a simple type
|
||||
# template<typename U, typename V> struct MapNode
|
||||
# {
|
||||
# U key;
|
||||
# V data;
|
||||
# }
|
||||
#
|
||||
# def qdump__MapNode(d, value):
|
||||
# d.putValue("This is the value column contents")
|
||||
# d.putExpandable()
|
||||
# if d.isExpanded():
|
||||
# with Children(d):
|
||||
# # Compact simple case.
|
||||
# d.putSubItem("key", value["key"])
|
||||
# # Same effect, with more customization possibilities.
|
||||
# with SubItem(d, "data")
|
||||
# d.putItem("data", value["data"])
|
||||
|
||||
# Check http://doc.qt.io/qtcreator/creator-debugging-helpers.html
|
||||
# for more details or look at qttypes.py, stdtypes.py, boosttypes.py
|
||||
# for more complex examples.
|
||||
|
||||
import dumper
|
||||
import struct
|
||||
|
||||
######################## Your code below #######################
|
||||
|
||||
typeFormats = {
|
||||
'float': 'f',
|
||||
'double': 'd',
|
||||
'int': 'i',
|
||||
}
|
||||
|
||||
def qdump__psemek__geom__vector(d, value):
|
||||
size = value.type[1]
|
||||
coordType = value.type[0]
|
||||
canPrint = coordType.name in typeFormats
|
||||
d.putExpandable()
|
||||
if d.isExpanded() or not canPrint:
|
||||
d.putItemCount(size)
|
||||
d.putArrayData(value.address(), size, value.type[0])
|
||||
else:
|
||||
desc = ""
|
||||
arr = None
|
||||
for m in value.members(False):
|
||||
if m.name == 'coords':
|
||||
arr = m.data()
|
||||
break
|
||||
f = typeFormats[coordType.name]
|
||||
for v in struct.iter_unpack(f, arr):
|
||||
if len(desc) > 0:
|
||||
desc += ", "
|
||||
desc += '{:.5f}'.format(v[0])
|
||||
d.putValue("(" + desc + ")")
|
||||
|
||||
def qdump__psemek__geom__point(d, value):
|
||||
qdump__psemek__geom__vector(d, value)
|
||||
|
||||
def qdump__psemek__geom__interval(d, value):
|
||||
coordType = value.type[0]
|
||||
canPrint = coordType.name in typeFormats
|
||||
d.putExpandable()
|
||||
if d.isExpanded() or not canPrint:
|
||||
# TODO
|
||||
pass
|
||||
else:
|
||||
desc = ""
|
||||
arr = value.data()
|
||||
f = typeFormats[coordType.name]
|
||||
for v in struct.iter_unpack(f, arr):
|
||||
if len(desc) > 0:
|
||||
desc += ", "
|
||||
desc += '{:.5f}'.format(v[0])
|
||||
d.putValue("[" + desc + "]")
|
||||
Loading…
Add table
Reference in a new issue