110 lines
3.7 KiB
Python
110 lines
3.7 KiB
Python
############################################################################
|
|
#
|
|
# 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 + "]")
|