diff --git a/pykd/dbgext.cpp b/pykd/dbgext.cpp index 1f9fff1..ab43e66 100644 --- a/pykd/dbgext.cpp +++ b/pykd/dbgext.cpp @@ -102,6 +102,7 @@ BOOST_PYTHON_MODULE( pykd ) boost::python::def( "reg", &loadRegister ); boost::python::def( "typedVar", &loadTypedVar ); boost::python::def( "typedVarList", &loadTypedVarList ); + boost::python::def( "typedVarArray", &loadTypedVarArray ); boost::python::def( "containingRecord", &containingRecord ); boost::python::def( "sizeof", &sizeofType ); boost::python::def( "loadModule", &loadModule ); diff --git a/pykd/dbgtype.cpp b/pykd/dbgtype.cpp index 8c21fa0..0ec88ee 100644 --- a/pykd/dbgtype.cpp +++ b/pykd/dbgtype.cpp @@ -107,6 +107,21 @@ loadTypedVarList( ULONG64 address, const std::string &moduleName, const std::str ///////////////////////////////////////////////////////////////////////////////// +boost::python::object +loadTypedVarArray( ULONG64 address, const std::string &moduleName, const std::string &typeName, long number ) +{ + boost::python::dict objArr; + + const TypeInfo& typeInfo = TypeInfo::get( moduleName, typeName ); + + for( long i = 0; i < number; ++i ) + objArr[i] = loadTypedVar( moduleName, typeName, address + i * typeInfo.size() ); + + return objArr; +} + +///////////////////////////////////////////////////////////////////////////////// + bool isBaseType( const std::string &typeName ); diff --git a/pykd/dbgtype.h b/pykd/dbgtype.h index cc1a3d5..563eaf2 100644 --- a/pykd/dbgtype.h +++ b/pykd/dbgtype.h @@ -19,6 +19,9 @@ loadTypedVar( const std::string &moduleName, const std::string &typeName, ULONG6 boost::python::object loadTypedVarList( ULONG64 address, const std::string &moduleName, const std::string &typeName, const std::string &listEntryName ); +boost::python::object +loadTypedVarArray( ULONG64 address, const std::string &moduleName, const std::string &typeName, long number ); + boost::python::object containingRecord( ULONG64 address, const std::string &moduleName, const std::string &typeName, const std::string &fieldName );