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