[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:
SND\kernelnet_cp 2013-05-22 06:25:24 +00:00 committed by Mikhail I. Izmestev
parent e079fc98eb
commit df525b6973
3 changed files with 74 additions and 76 deletions

View File

@ -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

View File

@ -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_<kdlib::NumVariantGetter, boost::noncopyable>( "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_<kdlib::NumBehavior, boost::noncopyable>( "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<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, long>();
python::class_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumVariantGetter>, 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_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumBehavior>, 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_<kdlib::NumVariantGetter, boost::noncopyable>( "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 );

View File

@ -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);
}