mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-29 11:53:23 +08:00
[~] 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:
parent
004a4067ea
commit
1b87344acb
@ -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 )
|
||||||
|
@ -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 )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user