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 );