From adfad183f24cb5751d09f8b4ba4961289b6204c8 Mon Sep 17 00:00:00 2001 From: "SND\\kernelnet_cp" <SND\kernelnet_cp@9b283d60-5439-405e-af05-b73fd8c4d996> Date: Fri, 9 Dec 2011 06:57:59 +0000 Subject: [PATCH] [0.1.x] update : module class can be used in the arithmetic expressions git-svn-id: https://pykd.svn.codeplex.com/svn@72133 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/dbgext.cpp | 2 +- pykd/module.h | 6 +++++- test/scripts/moduletest.py | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/pykd/dbgext.cpp b/pykd/dbgext.cpp index 2bd9381..420ea1a 100644 --- a/pykd/dbgext.cpp +++ b/pykd/dbgext.cpp @@ -388,7 +388,7 @@ BOOST_PYTHON_MODULE( pykd ) .def("__len__", &TypedVar::getElementCount ) .def("__getitem__", &TypedVar::getElementByIndex ); - python::class_<Module>("module", "Class representing executable module", python::no_init ) + python::class_<Module, python::bases<intBase> >("module", "Class representing executable module", python::no_init ) .def("begin", &Module::getBase, "Return start address of the module" ) .def("end", &Module::getEnd, diff --git a/pykd/module.h b/pykd/module.h index 4b7c784..d90de1b 100644 --- a/pykd/module.h +++ b/pykd/module.h @@ -12,7 +12,7 @@ namespace pykd { /////////////////////////////////////////////////////////////////////////////////// -class Module : private DbgObject { +class Module : public intBase, private DbgObject { public: @@ -80,6 +80,10 @@ private: return m_dia; } + BaseTypeVariant getValue() { + return BaseTypeVariant(m_base); + } + std::string m_name; std::string m_imageName; diff --git a/test/scripts/moduletest.py b/test/scripts/moduletest.py index e024f5d..2fe3541 100644 --- a/test/scripts/moduletest.py +++ b/test/scripts/moduletest.py @@ -21,6 +21,8 @@ class ModuleTest( unittest.TestCase ): def testBegin( self ): self.assertNotEqual( 0, target.module.begin() ) + self.assertEqual( target.module.begin(), target.module ) + self.assertEqual( target.module.begin() + 100, target.module + 100 ) def testEnd( self ): self.assertEqual( target.module.size(), target.module.end() - target.module.begin() ) @@ -37,7 +39,7 @@ class ModuleTest( unittest.TestCase ): pykd.loadModule( target.module.begin() - 0x10 ) self.assertTrue( False ) except pykd.BaseException: - self.assertTrue( True ) + self.assertTrue( True ) self.assertNotEqual( None, pykd.loadModule( target.module.begin() ) ) self.assertNotEqual( None, pykd.loadModule( target.module.begin() + 0x10) ) @@ -61,3 +63,4 @@ class ModuleTest( unittest.TestCase ): def testType( self ): self.assertEqual( "structTest", target.module.type("structTest").name() ); self.assertEqual( "structTest", target.module.type("g_structTest").name() ); +