From dfdad6edf0ffb3446ce5f873e1423a8688746102 Mon Sep 17 00:00:00 2001 From: clement rouault Date: Mon, 21 Jun 2021 10:46:54 +0200 Subject: [PATCH] Added some fields to windows.debug.symbols.SymbolType --- windows/debug/symbols.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/windows/debug/symbols.py b/windows/debug/symbols.py index b9c6b0d..aa63107 100644 --- a/windows/debug/symbols.py +++ b/windows/debug/symbols.py @@ -190,6 +190,10 @@ class SymbolType(object): def basetype(self): return gdef.BasicType.mapper[self._get_type_info(gdef.TI_GET_BASETYPE)] + @property + def parent(self): + return self.new_typeid(self._get_type_info(gdef.TI_GET_CLASSPARENTID)) + @property def datakind(self): return gdef.DataKind.mapper[self._get_type_info(gdef.TI_GET_DATAKIND)] @@ -206,6 +210,10 @@ class SymbolType(object): def nb_children(self): return self._get_type_info(gdef.TI_GET_CHILDRENCOUNT) + @property + def value(self): + return self._get_type_info(gdef.TI_GET_VALUE) + @property def children(self): count = self.nb_children @@ -228,7 +236,10 @@ class SymbolType(object): def __repr__(self): if self.tag == gdef.SymTagBaseType: - return '<{0} {1}>'.format(type(self).__name__, self.basetype) + return '<{0} {1!r}>'.format(type(self).__name__, self.basetype) + elif self.tag == gdef.SymTagPointerType: + target_type = self.type.name + return '<{0} PTR TO "{1}" tag={2}>'.format(type(self).__name__, target_type, self.tag) return '<{0} name="{1}" tag={2}>'.format(type(self).__name__, self.name, self.tag) @@ -729,4 +740,5 @@ TST_TYPE_RES_TYPE = { gdef.TI_GET_ADDRESS: gdef.ULONG64, gdef.TI_GTIEX_REQS_VALID: gdef.ULONG64, gdef.TI_GET_SYMTAG: gdef.SymTagEnum, + gdef.TI_GET_VALUE: windows.com.Variant, }