mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-20 03:23:23 +08:00
refactored numVariant class
This commit is contained in:
parent
b278f8b27f
commit
a2a3c7a9d4
2
kdlibcpp
2
kdlibcpp
@ -1 +1 @@
|
|||||||
Subproject commit 6f96e046f3e79bc464759c6729d6d344083587e4
|
Subproject commit 9fa21ea2cf01e91885b067f760f2ba1a9fd04ddd
|
@ -194,9 +194,6 @@
|
|||||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.static_mutex.cpp">
|
<ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.static_mutex.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.usinstances.cpp">
|
|
||||||
<Filter>Source Files</Filter>
|
|
||||||
</ClCompile>
|
|
||||||
<ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.w32_regex_traits.cpp">
|
<ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.w32_regex_traits.cpp">
|
||||||
<Filter>Source Files</Filter>
|
<Filter>Source Files</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
@ -311,6 +308,9 @@
|
|||||||
<ClCompile Include="boost.python\object\boost_python-src.object.stl_iterator.cpp">
|
<ClCompile Include="boost.python\object\boost_python-src.object.stl_iterator.cpp">
|
||||||
<Filter>boost.python</Filter>
|
<Filter>boost.python</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="$(MSBuildThisFileDirectory)..\lib\native\src\boost_regex-src.usinstances.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="pykd.def">
|
<None Include="pykd.def">
|
||||||
|
@ -609,8 +609,8 @@ void pykd_init()
|
|||||||
python::def("loadTaggedBuffer", pykd::loadTaggedBuffer,
|
python::def("loadTaggedBuffer", pykd::loadTaggedBuffer,
|
||||||
"Read the buffer of secondary callback data by ID" );
|
"Read the buffer of secondary callback data by ID" );
|
||||||
|
|
||||||
python::class_<kdlib::NumBehavior, boost::noncopyable>( "numVariant", "numVariant", python::no_init )
|
python::class_<kdlib::NumConvertable, boost::noncopyable>( "numVariant", "numVariant", python::no_init )
|
||||||
.def("__init__", python::make_constructor(&NumVariantAdaptor::getVariant) )
|
//.def("__init__", python::make_constructor(&NumVariantAdaptor::getVariant) )
|
||||||
.def( "__eq__", &NumVariantAdaptor::eq )
|
.def( "__eq__", &NumVariantAdaptor::eq )
|
||||||
.def( "__ne__", &NumVariantAdaptor::ne)
|
.def( "__ne__", &NumVariantAdaptor::ne)
|
||||||
.def( "__lt__", &NumVariantAdaptor::lt)
|
.def( "__lt__", &NumVariantAdaptor::lt)
|
||||||
@ -804,7 +804,7 @@ void pykd_init()
|
|||||||
"Return heap's entries iterator object")[python::return_value_policy<python::manage_new_object>()] )
|
"Return heap's entries iterator object")[python::return_value_policy<python::manage_new_object>()] )
|
||||||
;
|
;
|
||||||
|
|
||||||
python::class_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumBehavior>, boost::noncopyable>("module", "Class representing executable module", python::no_init)
|
python::class_<kdlib::Module, kdlib::ModulePtr, python::bases<kdlib::NumConvertable>, boost::noncopyable>("module", "Class representing executable module", python::no_init)
|
||||||
.def("__init__", python::make_constructor(&ModuleAdapter::loadModuleByName))
|
.def("__init__", python::make_constructor(&ModuleAdapter::loadModuleByName))
|
||||||
.def("__init__", python::make_constructor(&ModuleAdapter::loadModuleByOffset))
|
.def("__init__", python::make_constructor(&ModuleAdapter::loadModuleByOffset))
|
||||||
.def("begin", ModuleAdapter::getBase,
|
.def("begin", ModuleAdapter::getBase,
|
||||||
@ -870,7 +870,7 @@ void pykd_init()
|
|||||||
"Return address of the symbol" )
|
"Return address of the symbol" )
|
||||||
.def( "__str__", &ModuleAdapter::print );
|
.def( "__str__", &ModuleAdapter::print );
|
||||||
|
|
||||||
python::class_<kdlib::TypeInfo, kdlib::TypeInfoPtr, python::bases<kdlib::NumBehavior>, boost::noncopyable >("typeInfo", "Class representing typeInfo", python::no_init )
|
python::class_<kdlib::TypeInfo, kdlib::TypeInfoPtr, python::bases<kdlib::NumConvertable>, boost::noncopyable >("typeInfo", "Class representing typeInfo", python::no_init )
|
||||||
.def("__init__", python::make_constructor( pykd::getTypeInfoByName ) )
|
.def("__init__", python::make_constructor( pykd::getTypeInfoByName ) )
|
||||||
.def( "name", TypeInfoAdapter::getName,
|
.def( "name", TypeInfoAdapter::getName,
|
||||||
"Return type name" )
|
"Return type name" )
|
||||||
@ -963,7 +963,7 @@ void pykd_init()
|
|||||||
.def("next", &TypedVarIterator::next)
|
.def("next", &TypedVarIterator::next)
|
||||||
;
|
;
|
||||||
|
|
||||||
python::class_<kdlib::TypedVar, kdlib::TypedVarPtr, python::bases<kdlib::NumBehavior>, boost::noncopyable >("typedVar",
|
python::class_<kdlib::TypedVar, kdlib::TypedVarPtr, python::bases<kdlib::NumConvertable>, boost::noncopyable >("typedVar",
|
||||||
"Class of non-primitive type object, child class of typeClass. Data from target is copied into object instance", python::no_init )
|
"Class of non-primitive type object, child class of typeClass. Data from target is copied into object instance", python::no_init )
|
||||||
.def("__init__", python::make_constructor(pykd::getTypedVarByName) )
|
.def("__init__", python::make_constructor(pykd::getTypedVarByName) )
|
||||||
.def("__init__", python::make_constructor(pykd::getTypedVarByTypeName) )
|
.def("__init__", python::make_constructor(pykd::getTypedVarByTypeName) )
|
||||||
|
@ -226,11 +226,11 @@ python::object callTypedVar(kdlib::TypedVarPtr& funcobj, python::tuple& args)
|
|||||||
throw kdlib::TypeException(L"failed convert string argument");
|
throw kdlib::TypeException(L"failed convert string argument");
|
||||||
}
|
}
|
||||||
|
|
||||||
python::extract<kdlib::NumBehavior> getNumVar(args[i]);
|
python::extract<kdlib::NumConvertable> getNumVar(args[i]);
|
||||||
if ( getNumVar.check() )
|
if ( getNumVar.check() )
|
||||||
{
|
{
|
||||||
kdlib::NumVariant var = getNumVar();
|
kdlib::NumVariant var = getNumVar();
|
||||||
argLst.push_back( var );
|
argLst.push_back( kdlib::TypedValue(var) );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ python::object callTypedVar(kdlib::TypedVarPtr& funcobj, python::tuple& args)
|
|||||||
if ( python::extract<int>(args[i]).check() )
|
if ( python::extract<int>(args[i]).check() )
|
||||||
{
|
{
|
||||||
kdlib::NumVariant var= NumVariantAdaptor::convertToVariant(args[i]);
|
kdlib::NumVariant var= NumVariantAdaptor::convertToVariant(args[i]);
|
||||||
argLst.push_back( var );
|
argLst.push_back(kdlib::TypedValue(var));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -326,18 +326,18 @@ python::object callFunctionRaw( python::tuple& args, python::dict& kwargs)
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
python::extract<kdlib::NumBehavior> getNumVar(args[i]);
|
python::extract<kdlib::NumConvertable> getNumVar(args[i]);
|
||||||
if ( getNumVar.check() )
|
if ( getNumVar.check() )
|
||||||
{
|
{
|
||||||
kdlib::NumVariant var = getNumVar();
|
kdlib::NumVariant var = getNumVar();
|
||||||
argLst.push_back( var );
|
argLst.push_back(kdlib::TypedValue(var));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( python::extract<int>(args[i]).check() )
|
if ( python::extract<int>(args[i]).check() )
|
||||||
{
|
{
|
||||||
kdlib::NumVariant var= NumVariantAdaptor::convertToVariant(args[i]);
|
kdlib::NumVariant var= NumVariantAdaptor::convertToVariant(args[i]);
|
||||||
argLst.push_back( var );
|
argLst.push_back(kdlib::TypedValue(var));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
|
|
||||||
namespace pykd {
|
namespace pykd {
|
||||||
|
|
||||||
class NumVariantAdaptor : public kdlib::NumBehavior
|
class NumVariantAdaptor : public kdlib::NumConvertable
|
||||||
{
|
{
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -18,7 +18,7 @@ public:
|
|||||||
{
|
{
|
||||||
kdlib::NumVariant var;
|
kdlib::NumVariant var;
|
||||||
|
|
||||||
python::extract<kdlib::NumBehavior> getNumVar(obj);
|
python::extract<kdlib::NumConvertable> getNumVar(obj);
|
||||||
if ( getNumVar.check() )
|
if ( getNumVar.check() )
|
||||||
{
|
{
|
||||||
var = getNumVar();
|
var = getNumVar();
|
||||||
@ -68,7 +68,7 @@ public:
|
|||||||
return var;
|
return var;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object NumVariantAdaptor::convertToPython( kdlib::NumVariant& var )
|
static python::object NumVariantAdaptor::convertToPython( const kdlib::NumVariant& var )
|
||||||
{
|
{
|
||||||
if ( var.isChar() )
|
if ( var.isChar() )
|
||||||
return python::object( var.asInt() );
|
return python::object( var.asInt() );
|
||||||
@ -110,18 +110,16 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static kdlib::NumBehavior* NumVariantAdaptor::getVariant(const python::object &obj)
|
//static kdlib::NumConvertable* NumVariantAdaptor::getVariant(const python::object &obj)
|
||||||
{
|
//{
|
||||||
NumVariantAdaptor* var = new NumVariantAdaptor();
|
// //NumVariantAdaptor* var = new NumVariantAdaptor();
|
||||||
|
|
||||||
var->m_variant = NumVariantAdaptor::convertToVariant(obj);
|
// //var->m_variant = NumVariantAdaptor::convertToVariant(obj);
|
||||||
|
|
||||||
return var;
|
// //return var;
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
static python::object NumVariantAdaptor::convertToPython( kdlib::NumConvertable& num )
|
||||||
|
|
||||||
static python::object NumVariantAdaptor::convertToPython( kdlib::NumBehavior& num )
|
|
||||||
{
|
{
|
||||||
kdlib::NumVariant var;
|
kdlib::NumVariant var;
|
||||||
|
|
||||||
@ -135,7 +133,7 @@ public:
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
static python::object eq( kdlib::NumBehavior& var, python::object& obj )
|
static python::object eq( kdlib::NumConvertable& var, python::object& obj )
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
return convertToPython(var) == obj;
|
return convertToPython(var) == obj;
|
||||||
@ -146,7 +144,7 @@ public:
|
|||||||
return python::object(false);
|
return python::object(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object ne( kdlib::NumBehavior& var, python::object& obj )
|
static python::object ne( kdlib::NumConvertable& var, python::object& obj )
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
return convertToPython(var) != obj;
|
return convertToPython(var) != obj;
|
||||||
@ -157,103 +155,103 @@ public:
|
|||||||
return python::object(true);
|
return python::object(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object lt( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object lt( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) < obj;
|
return convertToPython(var) < obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object gt( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object gt( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) > obj;
|
return convertToPython(var) > obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object le( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object le( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) <= obj;
|
return convertToPython(var) <= obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object ge( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object ge( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) >= obj;
|
return convertToPython(var) >= obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object add( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object add( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) + obj;
|
return convertToPython(var) + obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object sub( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object sub( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) - obj;
|
return convertToPython(var) - obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rsub( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object rsub( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return obj - convertToPython(var);
|
return obj - convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object mul( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object mul( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) * obj;
|
return convertToPython(var) * obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object div( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object div( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) / obj;
|
return convertToPython(var) / obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object truediv(kdlib::NumBehavior& var, python::object& obj) {
|
static python::object truediv(kdlib::NumConvertable& var, python::object& obj) {
|
||||||
return convertToPython(var) / obj;
|
return convertToPython(var) / obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rtruediv(kdlib::NumBehavior& var, python::object& obj) {
|
static python::object rtruediv(kdlib::NumConvertable& var, python::object& obj) {
|
||||||
return obj / convertToPython(var);
|
return obj / convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rdiv( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object rdiv( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return obj / convertToPython(var);
|
return obj / convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object mod( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object mod( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) % obj;
|
return convertToPython(var) % obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rmod( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object rmod( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return obj % convertToPython(var);
|
return obj % convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rshift( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object rshift( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) >> obj;
|
return convertToPython(var) >> obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rrshift( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object rrshift( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return obj >> convertToPython(var);
|
return obj >> convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object lshift( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object lshift( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) << obj;
|
return convertToPython(var) << obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object rlshift( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object rlshift( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return obj << convertToPython(var);
|
return obj << convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object and( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object and( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) & obj;
|
return convertToPython(var) & obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object or( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object or( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) | obj;
|
return convertToPython(var) | obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object xor( kdlib::NumBehavior& var, python::object& obj ) {
|
static python::object xor( kdlib::NumConvertable& var, python::object& obj ) {
|
||||||
return convertToPython(var) ^ obj;
|
return convertToPython(var) ^ obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object neg(kdlib::NumBehavior& var) {
|
static python::object neg(kdlib::NumConvertable& var) {
|
||||||
return 0 - convertToPython(var);
|
return 0 - convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object pos(kdlib::NumBehavior& var) {
|
static python::object pos(kdlib::NumConvertable& var) {
|
||||||
return 0 + convertToPython(var);
|
return 0 + convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object invert(kdlib::NumBehavior& var) {
|
static python::object invert(kdlib::NumConvertable& var) {
|
||||||
return convertToPython(var) ^ convertToPython(var);
|
return convertToPython(var) ^ convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object nonzero(kdlib::NumBehavior& var) {
|
static python::object nonzero(kdlib::NumConvertable& var) {
|
||||||
try {
|
try {
|
||||||
return convertToPython(var) != 0;
|
return convertToPython(var) != 0;
|
||||||
}
|
}
|
||||||
@ -263,29 +261,30 @@ public:
|
|||||||
return python::object(true);
|
return python::object(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object long_(kdlib::NumBehavior& var ) {
|
static python::object long_(kdlib::NumConvertable& var ) {
|
||||||
return convertToPython(var);
|
return convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object float_(kdlib::NumBehavior& var) {
|
static python::object float_(kdlib::NumConvertable& var) {
|
||||||
return python::object(var.asDouble());
|
kdlib::NumVariant v = var;
|
||||||
|
return python::object(v.asDouble());
|
||||||
}
|
}
|
||||||
|
|
||||||
static python::object int_(kdlib::NumBehavior& var) {
|
static python::object int_(kdlib::NumConvertable& var) {
|
||||||
return convertToPython(var);
|
return convertToPython(var);
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::wstring str(kdlib::NumBehavior& var) {
|
static std::wstring str(kdlib::NumConvertable& var) {
|
||||||
kdlib::NumVariant v = var;
|
kdlib::NumVariant v = var;
|
||||||
return v.asStr();
|
return v.asStr();
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string hex(kdlib::NumBehavior& var) {
|
static std::string hex(kdlib::NumConvertable& var) {
|
||||||
kdlib::NumVariant v = var;
|
kdlib::NumVariant v = var;
|
||||||
return std::string("0x") + std::string(_bstr_t(v.asHex().c_str()));
|
return std::string("0x") + std::string(_bstr_t(v.asHex().c_str()));
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool isInteger(kdlib::NumBehavior& var) {
|
static bool isInteger(kdlib::NumConvertable& var) {
|
||||||
kdlib::NumVariant v = var;
|
kdlib::NumVariant v = var;
|
||||||
return v.isInteger();
|
return v.isInteger();
|
||||||
}
|
}
|
||||||
@ -307,7 +306,7 @@ private:
|
|||||||
|
|
||||||
static void* numConvertible( PyObject* obj_ptr)
|
static void* numConvertible( PyObject* obj_ptr)
|
||||||
{
|
{
|
||||||
python::extract<kdlib::NumBehavior> getNumVar(obj_ptr);
|
python::extract<kdlib::NumConvertable> getNumVar(obj_ptr);
|
||||||
|
|
||||||
if (getNumVar.check())
|
if (getNumVar.check())
|
||||||
return obj_ptr;
|
return obj_ptr;
|
||||||
@ -320,9 +319,9 @@ private:
|
|||||||
{
|
{
|
||||||
void* storage = ( (python::converter::rvalue_from_python_storage<T>*)data)->storage.bytes;
|
void* storage = ( (python::converter::rvalue_from_python_storage<T>*)data)->storage.bytes;
|
||||||
|
|
||||||
kdlib::NumBehavior* num = python::extract<kdlib::NumBehavior*>(obj_ptr);
|
kdlib::NumConvertable& num = python::extract<kdlib::NumConvertable&>(obj_ptr);
|
||||||
|
|
||||||
kdlib::NumVariant var = *num;
|
kdlib::NumVariant var = num;
|
||||||
|
|
||||||
new (storage ) T( static_cast<T>(var.asULongLong() ) );
|
new (storage ) T( static_cast<T>(var.asULongLong() ) );
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ import pykd
|
|||||||
|
|
||||||
import target
|
import target
|
||||||
|
|
||||||
import intbase
|
#import intbase
|
||||||
import memtest
|
import memtest
|
||||||
import moduletest
|
import moduletest
|
||||||
import typeinfo
|
import typeinfo
|
||||||
@ -47,7 +47,7 @@ def getTestSuite( singleName = "" ):
|
|||||||
if singleName == "":
|
if singleName == "":
|
||||||
return unittest.TestSuite(
|
return unittest.TestSuite(
|
||||||
[
|
[
|
||||||
unittest.TestLoader().loadTestsFromTestCase( intbase.IntBaseTest ),
|
#unittest.TestLoader().loadTestsFromTestCase( intbase.IntBaseTest ),
|
||||||
|
|
||||||
unittest.TestLoader().loadTestsFromTestCase( StartProcessWithoutParamsTest ),
|
unittest.TestLoader().loadTestsFromTestCase( StartProcessWithoutParamsTest ),
|
||||||
# *** Test without start/kill new processes
|
# *** Test without start/kill new processes
|
||||||
@ -83,14 +83,11 @@ if __name__ == "__main__":
|
|||||||
print( "\nTesting PyKd ver. %s" % pykd.__version__ )
|
print( "\nTesting PyKd ver. %s" % pykd.__version__ )
|
||||||
print( "Directory: %s" % os.path.dirname(pykd.__file__) )
|
print( "Directory: %s" % os.path.dirname(pykd.__file__) )
|
||||||
|
|
||||||
import time
|
|
||||||
# time.sleep(30)
|
|
||||||
|
|
||||||
target.appPath = os.path.join( os.path.dirname(pykd.__file__), "targetapp.exe" )
|
target.appPath = os.path.join( os.path.dirname(pykd.__file__), "targetapp.exe" )
|
||||||
target.moduleName = os.path.splitext(os.path.basename(target.appPath))[0]
|
target.moduleName = os.path.splitext(os.path.basename(target.appPath))[0]
|
||||||
|
|
||||||
unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
|
unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
|
||||||
#unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite("regtest.CpuRegTest.testSetRegValue") )
|
#unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite("typedvar.TypedVarTest.testAttr") )
|
||||||
|
|
||||||
try: input = raw_input
|
try: input = raw_input
|
||||||
except NameError: pass
|
except NameError: pass
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
<StartupFile>pykdtest.py</StartupFile>
|
<StartupFile>pykdtest.py</StartupFile>
|
||||||
<SearchPath>
|
<SearchPath>
|
||||||
</SearchPath>
|
</SearchPath>
|
||||||
<WorkingDirectory>..\..\out\x64\Debug_3.6</WorkingDirectory>
|
<WorkingDirectory>..\..\out\x64\Debug_2.7</WorkingDirectory>
|
||||||
<OutputPath>.</OutputPath>
|
<OutputPath>.</OutputPath>
|
||||||
<Name>pykdtest</Name>
|
<Name>pykdtest</Name>
|
||||||
<RootNamespace>pykdtest</RootNamespace>
|
<RootNamespace>pykdtest</RootNamespace>
|
||||||
@ -19,7 +19,7 @@
|
|||||||
</InterpreterArguments>
|
</InterpreterArguments>
|
||||||
<EnableNativeCodeDebugging>False</EnableNativeCodeDebugging>
|
<EnableNativeCodeDebugging>False</EnableNativeCodeDebugging>
|
||||||
<IsWindowsApplication>False</IsWindowsApplication>
|
<IsWindowsApplication>False</IsWindowsApplication>
|
||||||
<InterpreterId>Global|PythonCore|3.6</InterpreterId>
|
<InterpreterId>Global|PythonCore|2.7</InterpreterId>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -393,7 +393,7 @@ class TypedVarTest( unittest.TestCase ):
|
|||||||
funcptr = target.module.typedVar("StdcallFuncRet");
|
funcptr = target.module.typedVar("StdcallFuncRet");
|
||||||
ucharVar = target.module.typedVar( "ucharVar" );
|
ucharVar = target.module.typedVar( "ucharVar" );
|
||||||
self.assertEqual( 10, ucharVar )
|
self.assertEqual( 10, ucharVar )
|
||||||
self.assertEqual( 200000/10, funcptr( ucharVar, pykd.numVariant(200000) ) )
|
self.assertEqual( 200000/10, funcptr( ucharVar, 200000 ) )
|
||||||
|
|
||||||
def testCallWithWrongArgs(self):
|
def testCallWithWrongArgs(self):
|
||||||
self.assertRaises( pykd.TypeException, target.module.typedVar("StdcallFuncRet"), *(1,) )
|
self.assertRaises( pykd.TypeException, target.module.typedVar("StdcallFuncRet"), *(1,) )
|
||||||
|
Loading…
Reference in New Issue
Block a user