mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 21:03:23 +08:00
[0.1.x] fixed : issue #10627 ( print typeInfo() output insufficient information )
git-svn-id: https://pykd.svn.codeplex.com/svn@75403 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
1d0963832e
commit
fba83511b0
@ -1,5 +1,7 @@
|
|||||||
#include "stdafx.h"
|
#include "stdafx.h"
|
||||||
|
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
#include "typeinfo.h"
|
#include "typeinfo.h"
|
||||||
#include "dbgclient.h"
|
#include "dbgclient.h"
|
||||||
|
|
||||||
@ -536,6 +538,29 @@ ULONG UdtTypeInfo::getFieldCount()
|
|||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
std::string UdtTypeInfo::print()
|
||||||
|
{
|
||||||
|
std::stringstream sstr;
|
||||||
|
|
||||||
|
sstr << "struct/class: " << getName() << "Size: 0x" << std::hex << getSize() << " (" << std::dec << getSize() << ")" << std::endl;
|
||||||
|
|
||||||
|
ULONG fieldCount = getFieldCount();
|
||||||
|
|
||||||
|
for ( ULONG i = 0; i < fieldCount; ++i )
|
||||||
|
{
|
||||||
|
TypeInfoPtr fieldType = getFieldByIndex(i);
|
||||||
|
|
||||||
|
sstr << " +" << std::right << std::setw(4) << std::setfill('0') << std::hex << fieldType->getOffset();
|
||||||
|
sstr << " " << std::left << std::setw( 20 ) << std::setfill(' ') << getFieldNameByIndex(i) << ':';
|
||||||
|
sstr << " " << std::left << fieldType->getName();
|
||||||
|
sstr << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sstr.str();
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
bool
|
bool
|
||||||
UdtTypeInfo::getBaseField(
|
UdtTypeInfo::getBaseField(
|
||||||
pyDia::SymbolPtr symUdt,
|
pyDia::SymbolPtr symUdt,
|
||||||
@ -652,6 +677,28 @@ python::dict EnumTypeInfo::asMap()
|
|||||||
return dct;
|
return dct;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
std::string EnumTypeInfo::print()
|
||||||
|
{
|
||||||
|
std::stringstream sstr;
|
||||||
|
|
||||||
|
sstr << "enum: " << getName() << std::endl;
|
||||||
|
|
||||||
|
pyDia::SymbolPtrList symbolsList = m_dia->findChildrenImpl(SymTagData, "", nsfCaseSensitive );
|
||||||
|
|
||||||
|
for ( pyDia::SymbolPtrList::iterator it = symbolsList.begin(); it != symbolsList.end(); it++ )
|
||||||
|
{
|
||||||
|
CComVariant val;
|
||||||
|
(*it)->getValue( val );
|
||||||
|
|
||||||
|
sstr << " " << (*it)->getName();
|
||||||
|
sstr << " = " << std::hex << val.ulVal << " (" << std::dec << val.ulVal << ')';
|
||||||
|
sstr << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return sstr.str();
|
||||||
|
}
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
@ -242,6 +242,8 @@ protected:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual std::string print();
|
||||||
|
|
||||||
static bool getBaseField(
|
static bool getBaseField(
|
||||||
pyDia::SymbolPtr symUdt,
|
pyDia::SymbolPtr symUdt,
|
||||||
const std::string &fieldName,
|
const std::string &fieldName,
|
||||||
@ -287,6 +289,8 @@ protected:
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual std::string print();
|
||||||
|
|
||||||
pyDia::SymbolPtr m_dia;
|
pyDia::SymbolPtr m_dia;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user