mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
[0.2.x] added : symengine.h
git-svn-id: https://pykd.svn.codeplex.com/svn@78453 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
1931d9be5f
commit
011f1b4ad5
147
pykd/symengine.h
Normal file
147
pykd/symengine.h
Normal file
@ -0,0 +1,147 @@
|
||||
#pragma once
|
||||
|
||||
namespace pykd {
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class Symbol;
|
||||
typedef boost::shared_ptr< Symbol > SymbolPtr;
|
||||
typedef std::list< SymbolPtr > SymbolPtrList;
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
enum SymTagEnum
|
||||
{
|
||||
SymTagNull,
|
||||
SymTagExe,
|
||||
SymTagCompiland,
|
||||
SymTagCompilandDetails,
|
||||
SymTagCompilandEnv,
|
||||
SymTagFunction,
|
||||
SymTagBlock,
|
||||
SymTagData,
|
||||
SymTagAnnotation,
|
||||
SymTagLabel,
|
||||
SymTagPublicSymbol,
|
||||
SymTagUDT,
|
||||
SymTagEnum,
|
||||
SymTagFunctionType,
|
||||
SymTagPointerType,
|
||||
SymTagArrayType,
|
||||
SymTagBaseType,
|
||||
SymTagTypedef,
|
||||
SymTagBaseClass,
|
||||
SymTagFriend,
|
||||
SymTagFunctionArgType,
|
||||
SymTagFuncDebugStart,
|
||||
SymTagFuncDebugEnd,
|
||||
SymTagUsingNamespace,
|
||||
SymTagVTableShape,
|
||||
SymTagVTable,
|
||||
SymTagCustom,
|
||||
SymTagThunk,
|
||||
SymTagCustomType,
|
||||
SymTagManagedType,
|
||||
SymTagDimension,
|
||||
SymTagMax
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
enum LocationType
|
||||
{
|
||||
LocIsNull,
|
||||
LocIsStatic,
|
||||
LocIsTLS,
|
||||
LocIsRegRel,
|
||||
LocIsThisRel,
|
||||
LocIsEnregistered,
|
||||
LocIsBitField,
|
||||
LocIsSlot,
|
||||
LocIsIlRel,
|
||||
LocInMetaData,
|
||||
LocIsConstant,
|
||||
LocTypeMax
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
enum DataKind
|
||||
{
|
||||
DataIsUnknown,
|
||||
DataIsLocal,
|
||||
DataIsStaticLocal,
|
||||
DataIsParam,
|
||||
DataIsObjectPtr,
|
||||
DataIsFileStatic,
|
||||
DataIsGlobal,
|
||||
DataIsMember,
|
||||
DataIsStaticMember,
|
||||
DataIsConstant
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
enum BasicType
|
||||
{
|
||||
btNoType = 0,
|
||||
btVoid = 1,
|
||||
btChar = 2,
|
||||
btWChar = 3,
|
||||
btInt = 6,
|
||||
btUInt = 7,
|
||||
btFloat = 8,
|
||||
btBCD = 9,
|
||||
btBool = 10,
|
||||
btLong = 13,
|
||||
btULong = 14,
|
||||
btCurrency = 25,
|
||||
btDate = 26,
|
||||
btVariant = 27,
|
||||
btComplex = 28,
|
||||
btBit = 29,
|
||||
btBSTR = 30,
|
||||
btHresult = 31
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class Symbol {
|
||||
|
||||
public:
|
||||
|
||||
|
||||
virtual SymbolPtrList findChildren( ULONG symTag, const std::string &name = "", bool caseSensitive = FALSE ) = 0;
|
||||
virtual ULONG getBaseType() = 0;
|
||||
virtual ULONG getBitPosition() = 0;
|
||||
virtual SymbolPtr getChildByIndex(ULONG _index ) = 0;
|
||||
virtual SymbolPtr getChildByName(const std::string &_name) = 0;
|
||||
virtual ULONG getChildCount() = 0;
|
||||
virtual ULONG getChildCount(ULONG symTag ) = 0;
|
||||
virtual ULONG getCount() = 0;
|
||||
virtual ULONG getDataKind() = 0;
|
||||
virtual ULONG getLocType() = 0;
|
||||
virtual ULONG getMachineType() = 0;
|
||||
virtual std::string getName() = 0;
|
||||
virtual LONG getOffset() = 0;
|
||||
virtual ULONG getRva() = 0;
|
||||
virtual ULONGLONG getSize() = 0;
|
||||
virtual ULONG getSymTag() = 0;
|
||||
virtual SymbolPtr getType() = 0;
|
||||
virtual ULONGLONG getVa() = 0;
|
||||
virtual void getValue( VARIANT &vtValue) = 0;
|
||||
virtual ULONG getVirtualBaseDispIndex() = 0;
|
||||
virtual int getVirtualBasePointerOffset() = 0;
|
||||
virtual bool isVirtualBaseClass() = 0;
|
||||
virtual ULONG getVirtualBaseDispSize() = 0;
|
||||
};
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
std::string getBasicTypeName( ULONG basicType );
|
||||
|
||||
SymbolPtr loadSymbolFile(const std::string &filePath);
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
}; // end pykd endpoint
|
Loading…
Reference in New Issue
Block a user