mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
[0.3.x] updated: variant class
git-svn-id: https://pykd.svn.codeplex.com/svn@83751 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
e079fc98eb
commit
df525b6973
@ -5,7 +5,7 @@
|
|||||||
namespace pykd {
|
namespace pykd {
|
||||||
|
|
||||||
|
|
||||||
struct Module : public kdlib::Module
|
struct ModuleAdaptor : public kdlib::Module
|
||||||
{
|
{
|
||||||
|
|
||||||
static kdlib::ModulePtr loadModuleByName( const std::wstring &name )
|
static kdlib::ModulePtr loadModuleByName( const std::wstring &name )
|
||||||
@ -22,9 +22,6 @@ struct Module : public kdlib::Module
|
|||||||
return L"PYKD MODULE";
|
return L"PYKD MODULE";
|
||||||
}
|
}
|
||||||
|
|
||||||
//static kdlib::MEMOFFSET_64 convertToLong( kdlib::Module& module ) {
|
|
||||||
// return module.getBase();
|
|
||||||
//}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // end namespace pykd
|
} // end namespace pykd
|
||||||
|
@ -322,44 +322,44 @@ BOOST_PYTHON_MODULE( pykd )
|
|||||||
// python::def( "setSymbolPath", &setSymbolPath, "Set current symbol path");
|
// python::def( "setSymbolPath", &setSymbolPath, "Set current symbol path");
|
||||||
// python::def( "appendSymbolPath", &appendSymbolPath, "Append current symbol path");
|
// python::def( "appendSymbolPath", &appendSymbolPath, "Append current symbol path");
|
||||||
|
|
||||||
python::class_<kdlib::NumVariantGetter, boost::noncopyable>( "numVariant", "numVariant", python::no_init )
|
python::class_<kdlib::NumBehavior, boost::noncopyable>( "numVariant", "numVariant", python::no_init )
|
||||||
.def("__init__", python::make_constructor(&NumVariant::getVariant) )
|
.def("__init__", python::make_constructor(&NumVariantAdaptor::getVariant) )
|
||||||
.def( "__eq__", &NumVariant::eq )
|
.def( "__eq__", &NumVariantAdaptor::eq )
|
||||||
.def( "__ne__", &NumVariant::ne)
|
.def( "__ne__", &NumVariantAdaptor::ne)
|
||||||
.def( "__lt__", &NumVariant::lt)
|
.def( "__lt__", &NumVariantAdaptor::lt)
|
||||||
.def( "__gt__", &NumVariant::gt )
|
.def( "__gt__", &NumVariantAdaptor::gt )
|
||||||
.def( "__le__", &NumVariant::le )
|
.def( "__le__", &NumVariantAdaptor::le )
|
||||||
.def( "__ge__", &NumVariant::ge )
|
.def( "__ge__", &NumVariantAdaptor::ge )
|
||||||
.def( "__add__", &NumVariant::add )
|
.def( "__add__", &NumVariantAdaptor::add )
|
||||||
.def( "__radd__", &NumVariant::add )
|
.def( "__radd__", &NumVariantAdaptor::add )
|
||||||
.def( "__sub__", &NumVariant::sub )
|
.def( "__sub__", &NumVariantAdaptor::sub )
|
||||||
.def( "__rsub__", &NumVariant::rsub )
|
.def( "__rsub__", &NumVariantAdaptor::rsub )
|
||||||
.def( "__mul__", &NumVariant::mul )
|
.def( "__mul__", &NumVariantAdaptor::mul )
|
||||||
.def( "__rmul__", &NumVariant::mul )
|
.def( "__rmul__", &NumVariantAdaptor::mul )
|
||||||
.def( "__div__", &NumVariant::div )
|
.def( "__div__", &NumVariantAdaptor::div )
|
||||||
.def( "__rdiv__", &NumVariant::rdiv )
|
.def( "__rdiv__", &NumVariantAdaptor::rdiv )
|
||||||
.def( "__mod__", &NumVariant::mod )
|
.def( "__mod__", &NumVariantAdaptor::mod )
|
||||||
.def( "__rmod__", &NumVariant::rmod )
|
.def( "__rmod__", &NumVariantAdaptor::rmod )
|
||||||
.def( "__rshift__", &NumVariant::rshift )
|
.def( "__rshift__", &NumVariantAdaptor::rshift )
|
||||||
.def( "__rrshift__", &NumVariant::rrshift )
|
.def( "__rrshift__", &NumVariantAdaptor::rrshift )
|
||||||
.def( "__lshift__", &NumVariant::lshift )
|
.def( "__lshift__", &NumVariantAdaptor::lshift )
|
||||||
.def( "__rlshift__", &NumVariant::rlshift )
|
.def( "__rlshift__", &NumVariantAdaptor::rlshift )
|
||||||
.def( "__and__", &NumVariant::and )
|
.def( "__and__", &NumVariantAdaptor::and )
|
||||||
.def( "__rand__", &NumVariant::and )
|
.def( "__rand__", &NumVariantAdaptor::and )
|
||||||
.def( "__or__", &NumVariant::or )
|
.def( "__or__", &NumVariantAdaptor::or )
|
||||||
.def( "__ror__", &NumVariant::or )
|
.def( "__ror__", &NumVariantAdaptor::or )
|
||||||
.def( "__xor__", &NumVariant::xor )
|
.def( "__xor__", &NumVariantAdaptor::xor )
|
||||||
.def( "__rxor__", &NumVariant::xor )
|
.def( "__rxor__", &NumVariantAdaptor::xor )
|
||||||
.def( "__neg__", &NumVariant::neg )
|
.def( "__neg__", &NumVariantAdaptor::neg )
|
||||||
.def( "__pos__", &NumVariant::pos )
|
.def( "__pos__", &NumVariantAdaptor::pos )
|
||||||
.def( "__invert__", &NumVariant::invert )
|
.def( "__invert__", &NumVariantAdaptor::invert )
|
||||||
.def( "__nonzero__", &NumVariant::nonzero )
|
.def( "__nonzero__", &NumVariantAdaptor::nonzero )
|
||||||
//.def( "__str__", &pykd::NumVariant::str )
|
//.def( "__str__", &pykd::NumVariant::str )
|
||||||
// .def( "__hex__", &pykd::NumVariant::hex )
|
// .def( "__hex__", &pykd::NumVariant::hex )
|
||||||
.def( "__long__", &NumVariant::long_ )
|
.def( "__long__", &NumVariantAdaptor::long_ )
|
||||||
.def( "__int__", &NumVariant::int_ )
|
.def( "__int__", &NumVariantAdaptor::int_ )
|
||||||
.def( "__index__", &NumVariant::long_ )
|
.def( "__index__", &NumVariantAdaptor::long_ )
|
||||||
.def( "__hash__", &NumVariant::long_ )
|
.def( "__hash__", &NumVariantAdaptor::long_ )
|
||||||
;
|
;
|
||||||
|
|
||||||
//python::implicitly_convertible<kdlib::NumVariantGetter, unsigned long long>();
|
//python::implicitly_convertible<kdlib::NumVariantGetter, unsigned long long>();
|
||||||
@ -367,9 +367,9 @@ python::class_<kdlib::NumVariantGetter, boost::noncopyable>( "numVariant", "numV
|
|||||||
//python::implicitly_convertible<kdlib::NumVariantGetter, unsigned long>();
|
//python::implicitly_convertible<kdlib::NumVariantGetter, unsigned long>();
|
||||||
//python::implicitly_convertible<kdlib::NumVariantGetter, long>();
|
//python::implicitly_convertible<kdlib::NumVariantGetter, long>();
|
||||||
|
|
||||||
python::class_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumVariantGetter>, boost::noncopyable>("module", "Class representing executable module", python::no_init )
|
python::class_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumBehavior>, boost::noncopyable>("module", "Class representing executable module", python::no_init )
|
||||||
.def("__init__", python::make_constructor(&Module::loadModuleByName ) )
|
.def("__init__", python::make_constructor(&ModuleAdaptor::loadModuleByName ) )
|
||||||
.def("__init__", python::make_constructor(&Module::loadModuleByOffset) )
|
.def("__init__", python::make_constructor(&ModuleAdaptor::loadModuleByOffset) )
|
||||||
.def("begin", &kdlib::Module::getBase,
|
.def("begin", &kdlib::Module::getBase,
|
||||||
"Return start address of the module" )
|
"Return start address of the module" )
|
||||||
.def("end", &kdlib::Module::getEnd,
|
.def("end", &kdlib::Module::getEnd,
|
||||||
@ -429,7 +429,7 @@ python::class_<kdlib::NumVariantGetter, boost::noncopyable>( "numVariant", "numV
|
|||||||
// "Return tuple of the module's file version" )
|
// "Return tuple of the module's file version" )
|
||||||
.def("__getattr__", &kdlib::Module::getSymbolVa,
|
.def("__getattr__", &kdlib::Module::getSymbolVa,
|
||||||
"Return address of the symbol" )
|
"Return address of the symbol" )
|
||||||
.def( "__str__", &Module::print );
|
.def( "__str__", &ModuleAdaptor::print );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -4,14 +4,15 @@
|
|||||||
|
|
||||||
namespace pykd {
|
namespace pykd {
|
||||||
|
|
||||||
class NumVariant : public kdlib::NumVariantGetter
|
class NumVariantAdaptor : public kdlib::NumBehavior
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static kdlib::NumVariantGetter* getVariant( const python::object &obj )
|
|
||||||
|
static kdlib::NumBehavior* NumVariantAdaptor::getVariant( const python::object &obj )
|
||||||
{
|
{
|
||||||
NumVariant* var = new NumVariant();
|
NumVariantAdaptor* var = new NumVariantAdaptor();
|
||||||
|
|
||||||
if ( PyBool_Check( obj.ptr() ) )
|
if ( PyBool_Check( obj.ptr() ) )
|
||||||
{
|
{
|
||||||
@ -36,9 +37,9 @@ public:
|
|||||||
return var;
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object convertToPython( kdlib::NumVariantGetter& v )
|
static python::object NumVariantAdaptor::convertToPython( kdlib::NumBehavior& num )
|
||||||
{
|
{
|
||||||
kdlib::NumVariant var = v;
|
kdlib::NumVariant var = kdlib::NumVariant( num );
|
||||||
|
|
||||||
if ( var.isChar() )
|
if ( var.isChar() )
|
||||||
return python::object( var.asInt() );
|
return python::object( var.asInt() );
|
||||||
@ -81,111 +82,111 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static python::object eq( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object eq( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) == obj;
|
return convertToPython(var) == obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object ne( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object ne( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) != obj;
|
return convertToPython(var) != obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object lt( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object lt( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) < obj;
|
return convertToPython(var) < obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object gt( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object gt( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) > obj;
|
return convertToPython(var) > obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object le( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object le( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) <= obj;
|
return convertToPython(var) <= obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object ge( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object ge( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) >= obj;
|
return convertToPython(var) >= obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object add( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object add( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) + obj;
|
return convertToPython(var) + obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object sub( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object sub( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) - obj;
|
return convertToPython(var) - obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rsub( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object rsub( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return obj - convertToPython(var);
|
return obj - convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object mul( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object mul( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) * obj;
|
return convertToPython(var) * obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object div( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object div( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) / obj;
|
return convertToPython(var) / obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rdiv( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object rdiv( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return obj / convertToPython(var);
|
return obj / convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object mod( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object mod( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) % obj;
|
return convertToPython(var) % obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rmod( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object rmod( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return obj % convertToPython(var);
|
return obj % convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rshift( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object rshift( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) >> obj;
|
return convertToPython(var) >> obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rrshift( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object rrshift( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return obj >> convertToPython(var);
|
return obj >> convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object lshift( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object lshift( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) << obj;
|
return convertToPython(var) << obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rlshift( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object rlshift( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return obj << convertToPython(var);
|
return obj << convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object and( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object and( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) & obj;
|
return convertToPython(var) & obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object or( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object or( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) | obj;
|
return convertToPython(var) | obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object xor( kdlib::NumVariantGetter& var, python::object& obj ) {
|
static python::object xor( kdlib::NumBehavior& var, python::object& obj ) {
|
||||||
return convertToPython(var) ^ obj;
|
return convertToPython(var) ^ obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object neg(kdlib::NumVariantGetter& var) {
|
static python::object neg(kdlib::NumBehavior& var) {
|
||||||
return 0 - convertToPython(var);
|
return 0 - convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object pos(kdlib::NumVariantGetter& var) {
|
static python::object pos(kdlib::NumBehavior& var) {
|
||||||
return 0 + convertToPython(var);
|
return 0 + convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object invert(kdlib::NumVariantGetter& var) {
|
static python::object invert(kdlib::NumBehavior& var) {
|
||||||
return convertToPython(var) ^ convertToPython(var);
|
return convertToPython(var) ^ convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object nonzero(kdlib::NumVariantGetter& var) {
|
static python::object nonzero(kdlib::NumBehavior& var) {
|
||||||
return convertToPython(var) != 0;
|
return convertToPython(var) != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object long_(kdlib::NumVariantGetter& var ) {
|
static python::object long_(kdlib::NumBehavior& var ) {
|
||||||
return convertToPython(var);
|
return convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object int_(kdlib::NumVariantGetter& var) {
|
static python::object int_(kdlib::NumBehavior& var) {
|
||||||
return convertToPython(var);
|
return convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user