diff --git a/pykd/module.h b/pykd/module.h index f665cdc..6d900bc 100644 --- a/pykd/module.h +++ b/pykd/module.h @@ -5,7 +5,7 @@ namespace pykd { -struct Module : public kdlib::Module +struct ModuleAdaptor : public kdlib::Module { static kdlib::ModulePtr loadModuleByName( const std::wstring &name ) @@ -22,9 +22,6 @@ struct Module : public kdlib::Module return L"PYKD MODULE"; } - //static kdlib::MEMOFFSET_64 convertToLong( kdlib::Module& module ) { - // return module.getBase(); - //} }; } // end namespace pykd diff --git a/pykd/pymod.cpp b/pykd/pymod.cpp index a06c078..55f33f5 100644 --- a/pykd/pymod.cpp +++ b/pykd/pymod.cpp @@ -322,44 +322,44 @@ BOOST_PYTHON_MODULE( pykd ) // python::def( "setSymbolPath", &setSymbolPath, "Set current symbol path"); // python::def( "appendSymbolPath", &appendSymbolPath, "Append current symbol path"); -python::class_( "numVariant", "numVariant", python::no_init ) - .def("__init__", python::make_constructor(&NumVariant::getVariant) ) - .def( "__eq__", &NumVariant::eq ) - .def( "__ne__", &NumVariant::ne) - .def( "__lt__", &NumVariant::lt) - .def( "__gt__", &NumVariant::gt ) - .def( "__le__", &NumVariant::le ) - .def( "__ge__", &NumVariant::ge ) - .def( "__add__", &NumVariant::add ) - .def( "__radd__", &NumVariant::add ) - .def( "__sub__", &NumVariant::sub ) - .def( "__rsub__", &NumVariant::rsub ) - .def( "__mul__", &NumVariant::mul ) - .def( "__rmul__", &NumVariant::mul ) - .def( "__div__", &NumVariant::div ) - .def( "__rdiv__", &NumVariant::rdiv ) - .def( "__mod__", &NumVariant::mod ) - .def( "__rmod__", &NumVariant::rmod ) - .def( "__rshift__", &NumVariant::rshift ) - .def( "__rrshift__", &NumVariant::rrshift ) - .def( "__lshift__", &NumVariant::lshift ) - .def( "__rlshift__", &NumVariant::rlshift ) - .def( "__and__", &NumVariant::and ) - .def( "__rand__", &NumVariant::and ) - .def( "__or__", &NumVariant::or ) - .def( "__ror__", &NumVariant::or ) - .def( "__xor__", &NumVariant::xor ) - .def( "__rxor__", &NumVariant::xor ) - .def( "__neg__", &NumVariant::neg ) - .def( "__pos__", &NumVariant::pos ) - .def( "__invert__", &NumVariant::invert ) - .def( "__nonzero__", &NumVariant::nonzero ) +python::class_( "numVariant", "numVariant", python::no_init ) + .def("__init__", python::make_constructor(&NumVariantAdaptor::getVariant) ) + .def( "__eq__", &NumVariantAdaptor::eq ) + .def( "__ne__", &NumVariantAdaptor::ne) + .def( "__lt__", &NumVariantAdaptor::lt) + .def( "__gt__", &NumVariantAdaptor::gt ) + .def( "__le__", &NumVariantAdaptor::le ) + .def( "__ge__", &NumVariantAdaptor::ge ) + .def( "__add__", &NumVariantAdaptor::add ) + .def( "__radd__", &NumVariantAdaptor::add ) + .def( "__sub__", &NumVariantAdaptor::sub ) + .def( "__rsub__", &NumVariantAdaptor::rsub ) + .def( "__mul__", &NumVariantAdaptor::mul ) + .def( "__rmul__", &NumVariantAdaptor::mul ) + .def( "__div__", &NumVariantAdaptor::div ) + .def( "__rdiv__", &NumVariantAdaptor::rdiv ) + .def( "__mod__", &NumVariantAdaptor::mod ) + .def( "__rmod__", &NumVariantAdaptor::rmod ) + .def( "__rshift__", &NumVariantAdaptor::rshift ) + .def( "__rrshift__", &NumVariantAdaptor::rrshift ) + .def( "__lshift__", &NumVariantAdaptor::lshift ) + .def( "__rlshift__", &NumVariantAdaptor::rlshift ) + .def( "__and__", &NumVariantAdaptor::and ) + .def( "__rand__", &NumVariantAdaptor::and ) + .def( "__or__", &NumVariantAdaptor::or ) + .def( "__ror__", &NumVariantAdaptor::or ) + .def( "__xor__", &NumVariantAdaptor::xor ) + .def( "__rxor__", &NumVariantAdaptor::xor ) + .def( "__neg__", &NumVariantAdaptor::neg ) + .def( "__pos__", &NumVariantAdaptor::pos ) + .def( "__invert__", &NumVariantAdaptor::invert ) + .def( "__nonzero__", &NumVariantAdaptor::nonzero ) //.def( "__str__", &pykd::NumVariant::str ) // .def( "__hex__", &pykd::NumVariant::hex ) - .def( "__long__", &NumVariant::long_ ) - .def( "__int__", &NumVariant::int_ ) - .def( "__index__", &NumVariant::long_ ) - .def( "__hash__", &NumVariant::long_ ) + .def( "__long__", &NumVariantAdaptor::long_ ) + .def( "__int__", &NumVariantAdaptor::int_ ) + .def( "__index__", &NumVariantAdaptor::long_ ) + .def( "__hash__", &NumVariantAdaptor::long_ ) ; //python::implicitly_convertible(); @@ -367,9 +367,9 @@ python::class_( "numVariant", "numV //python::implicitly_convertible(); //python::implicitly_convertible(); - python::class_, boost::noncopyable>("module", "Class representing executable module", python::no_init ) - .def("__init__", python::make_constructor(&Module::loadModuleByName ) ) - .def("__init__", python::make_constructor(&Module::loadModuleByOffset) ) + python::class_, boost::noncopyable>("module", "Class representing executable module", python::no_init ) + .def("__init__", python::make_constructor(&ModuleAdaptor::loadModuleByName ) ) + .def("__init__", python::make_constructor(&ModuleAdaptor::loadModuleByOffset) ) .def("begin", &kdlib::Module::getBase, "Return start address of the module" ) .def("end", &kdlib::Module::getEnd, @@ -429,7 +429,7 @@ python::class_( "numVariant", "numV // "Return tuple of the module's file version" ) .def("__getattr__", &kdlib::Module::getSymbolVa, "Return address of the symbol" ) - .def( "__str__", &Module::print ); + .def( "__str__", &ModuleAdaptor::print ); diff --git a/pykd/variant.h b/pykd/variant.h index 92a3a41..de4833d 100644 --- a/pykd/variant.h +++ b/pykd/variant.h @@ -4,14 +4,15 @@ namespace pykd { -class NumVariant : public kdlib::NumVariantGetter +class NumVariantAdaptor : public kdlib::NumBehavior { 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() ) ) { @@ -36,9 +37,9 @@ public: 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() ) return python::object( var.asInt() ); @@ -81,111 +82,111 @@ 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; } - static python::object ne( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object ne( kdlib::NumBehavior& var, python::object& 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; } - static python::object gt( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object gt( kdlib::NumBehavior& var, python::object& 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; } - static python::object ge( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object ge( kdlib::NumBehavior& var, python::object& 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; } - static python::object sub( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object sub( kdlib::NumBehavior& var, python::object& 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); } - static python::object mul( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object mul( kdlib::NumBehavior& var, python::object& 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; } - static python::object rdiv( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object rdiv( kdlib::NumBehavior& var, python::object& obj ) { 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; } - static python::object rmod( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object rmod( kdlib::NumBehavior& var, python::object& obj ) { 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; } - static python::object rrshift( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object rrshift( kdlib::NumBehavior& var, python::object& obj ) { 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; } - static python::object rlshift( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object rlshift( kdlib::NumBehavior& var, python::object& obj ) { 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; } - static python::object or( kdlib::NumVariantGetter& var, python::object& obj ) { + static python::object or( kdlib::NumBehavior& var, python::object& 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; } - static python::object neg(kdlib::NumVariantGetter& var) { + static python::object neg(kdlib::NumBehavior& var) { return 0 - convertToPython(var); } - static python::object pos(kdlib::NumVariantGetter& var) { + static python::object pos(kdlib::NumBehavior& var) { return 0 + convertToPython(var); } - static python::object invert(kdlib::NumVariantGetter& var) { + static python::object invert(kdlib::NumBehavior& var) { return convertToPython(var) ^ convertToPython(var); } - static python::object nonzero(kdlib::NumVariantGetter& var) { + static python::object nonzero(kdlib::NumBehavior& var) { return convertToPython(var) != 0; } - static python::object long_(kdlib::NumVariantGetter& var ) { + static python::object long_(kdlib::NumBehavior& var ) { return convertToPython(var); } - static python::object int_(kdlib::NumVariantGetter& var) { + static python::object int_(kdlib::NumBehavior& var) { return convertToPython(var); }