From 1b87344acb6f4cae59bff23a871eefc8169ed1df Mon Sep 17 00:00:00 2001 From: "SND\\EreTIk_cp" Date: Mon, 28 Feb 2011 09:14:14 +0000 Subject: [PATCH] [~] m_offset moved into typeClass instance git-svn-id: https://pykd.svn.codeplex.com/svn@62029 9b283d60-5439-405e-af05-b73fd8c4d996 --- pykd/dbgtype.cpp | 7 ++----- pykd/dbgtype.h | 25 ++++++++++++------------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/pykd/dbgtype.cpp b/pykd/dbgtype.cpp index ce57734..75e5c77 100644 --- a/pykd/dbgtype.cpp +++ b/pykd/dbgtype.cpp @@ -261,7 +261,6 @@ TypeInfo::TypeInfo( const std::string &moduleName, const std::string &typeName m_size = 0; m_baseType = false; m_pointer = false; - m_offset = 0; try { if ( typeName.find("*") < typeName.size() ) @@ -338,10 +337,9 @@ TypeInfo::TypeInfo( const std::string &moduleName, const std::string &typeName boost::python::object TypeInfo::build( ULONG offset /* = 0 */ ) const { - boost::shared_ptr ptr( new typeClass( *this ) ); + boost::shared_ptr ptr( new typeClass( *this, offset ) ); boost::python::object var( ptr ); ptr->setPyObj( var ); - ptr->getTypeInfo().setOffset(offset); TypeFieldList::const_iterator field = m_fields.begin(); for ( field = m_fields.begin(); field != m_fields.end(); ++field ) @@ -383,10 +381,9 @@ TypeInfo::load( ULONG64 addr, ULONG offset /* = 0 */ ) const if ( m_baseType ) return loadBaseType( addr ); - boost::shared_ptr ptr( new typedVarClass( *this, addr ) ); + boost::shared_ptr ptr( new typedVarClass( *this, offset, addr ) ); boost::python::object var( ptr ); ptr->setPyObj( var ); - ptr->getTypeInfo().setOffset(offset); TypeFieldList::const_iterator field = m_fields.begin(); for ( field = m_fields.begin(); field != m_fields.end(); ++field ) diff --git a/pykd/dbgtype.h b/pykd/dbgtype.h index d3c8893..c648f96 100644 --- a/pykd/dbgtype.h +++ b/pykd/dbgtype.h @@ -85,8 +85,7 @@ public: TypeInfo() : m_size( 0 ), m_baseType( false ), - m_pointer( false ), - m_offset(0) + m_pointer( false ) {} TypeInfo( const std::string &moduleName, const std::string &typeName ); @@ -128,10 +127,6 @@ public: return m_pointer; } - // field offset getter/setter - void setOffset(ULONG offset) { m_offset = offset; } - ULONG getOffset() const { return m_offset; } - private: static TypeInfoMap g_typeInfoCache; @@ -154,7 +149,6 @@ private: TypeFieldList m_fields; std::string m_typeName; ULONG m_size; - ULONG m_offset; }; ///////////////////////////////////////////////////////////////////////////////// @@ -164,12 +158,15 @@ class typeClass public: typeClass() + : m_offset(0) { } typeClass( - const TypeInfo &typeInfo + const TypeInfo &typeInfo, + ULONG offset ) : m_typeInfo(typeInfo) + , m_offset(offset) { } @@ -220,10 +217,12 @@ public: // no data - nothing print } - ULONG getOffset() const { return m_typeInfo.getOffset(); } + // field offset getter/setter + ULONG getOffset() const { return m_offset; } private: TypeInfo m_typeInfo; + ULONG m_offset; boost::python::object m_pyobj; }; @@ -233,11 +232,11 @@ class typedVarClass : public typeClass { public: - typedVarClass() + typedVarClass() : m_addr(0) {} - - typedVarClass( const TypeInfo &typeInfo, ULONG64 addr) : - typeClass( typeInfo ), + + typedVarClass( const TypeInfo &typeInfo, ULONG offset, ULONG64 addr) : + typeClass( typeInfo, offset ), m_addr( addr ) {}