From 664b047dceb8914ca9985459cf393462b45ebe7b Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" <SND\kernelnet_cp@9b283d60-5439-405e-af05-b73fd8c4d996> Date: Mon, 24 Jan 2011 16:41:47 +0000 Subject: [PATCH] [+] added : typedVarArray routine git-svn-id: https://pykd.svn.codeplex.com/svn@60656 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/dbgext.cpp | 1 + pykd/dbgtype.cpp | 15 +++++++++++++++ pykd/dbgtype.h | 3 +++ 3 files changed, 19 insertions(+) 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 );