[~] m_offset moved into typeClass instance

git-svn-id: https://pykd.svn.codeplex.com/svn@62029 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
SND\EreTIk_cp 2011-02-28 09:14:14 +00:00
parent 004a4067ea
commit 1b87344acb
2 changed files with 14 additions and 18 deletions

View File

@ -261,7 +261,6 @@ TypeInfo::TypeInfo( const std::string &moduleName, const std::string &typeName
m_size = 0; m_size = 0;
m_baseType = false; m_baseType = false;
m_pointer = false; m_pointer = false;
m_offset = 0;
try { try {
if ( typeName.find("*") < typeName.size() ) if ( typeName.find("*") < typeName.size() )
@ -338,10 +337,9 @@ TypeInfo::TypeInfo( const std::string &moduleName, const std::string &typeName
boost::python::object boost::python::object
TypeInfo::build( ULONG offset /* = 0 */ ) const TypeInfo::build( ULONG offset /* = 0 */ ) const
{ {
boost::shared_ptr<typeClass> ptr( new typeClass( *this ) ); boost::shared_ptr<typeClass> ptr( new typeClass( *this, offset ) );
boost::python::object var( ptr ); boost::python::object var( ptr );
ptr->setPyObj( var ); ptr->setPyObj( var );
ptr->getTypeInfo().setOffset(offset);
TypeFieldList::const_iterator field = m_fields.begin(); TypeFieldList::const_iterator field = m_fields.begin();
for ( field = m_fields.begin(); field != m_fields.end(); ++field ) 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 ) if ( m_baseType )
return loadBaseType( addr ); return loadBaseType( addr );
boost::shared_ptr<typedVarClass> ptr( new typedVarClass( *this, addr ) ); boost::shared_ptr<typedVarClass> ptr( new typedVarClass( *this, offset, addr ) );
boost::python::object var( ptr ); boost::python::object var( ptr );
ptr->setPyObj( var ); ptr->setPyObj( var );
ptr->getTypeInfo().setOffset(offset);
TypeFieldList::const_iterator field = m_fields.begin(); TypeFieldList::const_iterator field = m_fields.begin();
for ( field = m_fields.begin(); field != m_fields.end(); ++field ) for ( field = m_fields.begin(); field != m_fields.end(); ++field )

View File

@ -85,8 +85,7 @@ public:
TypeInfo() : TypeInfo() :
m_size( 0 ), m_size( 0 ),
m_baseType( false ), m_baseType( false ),
m_pointer( false ), m_pointer( false )
m_offset(0)
{} {}
TypeInfo( const std::string &moduleName, const std::string &typeName ); TypeInfo( const std::string &moduleName, const std::string &typeName );
@ -128,10 +127,6 @@ public:
return m_pointer; return m_pointer;
} }
// field offset getter/setter
void setOffset(ULONG offset) { m_offset = offset; }
ULONG getOffset() const { return m_offset; }
private: private:
static TypeInfoMap g_typeInfoCache; static TypeInfoMap g_typeInfoCache;
@ -154,7 +149,6 @@ private:
TypeFieldList m_fields; TypeFieldList m_fields;
std::string m_typeName; std::string m_typeName;
ULONG m_size; ULONG m_size;
ULONG m_offset;
}; };
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
@ -164,12 +158,15 @@ class typeClass
public: public:
typeClass() typeClass()
: m_offset(0)
{ {
} }
typeClass( typeClass(
const TypeInfo &typeInfo const TypeInfo &typeInfo,
ULONG offset
) : m_typeInfo(typeInfo) ) : m_typeInfo(typeInfo)
, m_offset(offset)
{ {
} }
@ -220,10 +217,12 @@ public:
// no data - nothing print // no data - nothing print
} }
ULONG getOffset() const { return m_typeInfo.getOffset(); } // field offset getter/setter
ULONG getOffset() const { return m_offset; }
private: private:
TypeInfo m_typeInfo; TypeInfo m_typeInfo;
ULONG m_offset;
boost::python::object m_pyobj; boost::python::object m_pyobj;
}; };
@ -233,11 +232,11 @@ class typedVarClass : public typeClass {
public: public:
typedVarClass() typedVarClass() : m_addr(0)
{} {}
typedVarClass( const TypeInfo &typeInfo, ULONG64 addr) : typedVarClass( const TypeInfo &typeInfo, ULONG offset, ULONG64 addr) :
typeClass( typeInfo ), typeClass( typeInfo, offset ),
m_addr( addr ) m_addr( addr )
{} {}