mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
[0.3.x] added : numVariantL::__float__ method ( automatic convert to float values )
git-svn-id: https://pykd.svn.codeplex.com/svn@89569 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
8d92470b1d
commit
1f8b79e6c4
@ -489,6 +489,7 @@ BOOST_PYTHON_MODULE( pykd )
|
||||
.def( "__int__", &NumVariantAdaptor::int_ )
|
||||
.def( "__index__", &NumVariantAdaptor::long_ )
|
||||
.def( "__hash__", &NumVariantAdaptor::long_ )
|
||||
.def( "__float__", &NumVariantAdaptor::float_)
|
||||
.def( "isInteger", &NumVariantAdaptor::isInteger )
|
||||
;
|
||||
|
||||
|
@ -26,6 +26,12 @@ public:
|
||||
return var;
|
||||
}
|
||||
|
||||
if (PyFloat_Check(obj.ptr()))
|
||||
{
|
||||
var->m_variant.setDouble(PyFloat_AsDouble(obj.ptr()));
|
||||
return var;
|
||||
}
|
||||
|
||||
if ( PyInt_CheckExact( obj.ptr() ) )
|
||||
{
|
||||
var->m_variant.setLong( PyLong_AsLong( obj.ptr() ) );
|
||||
@ -73,10 +79,10 @@ public:
|
||||
return python::object( var.asUInt() );
|
||||
|
||||
if ( var.isFloat() )
|
||||
return python::object( var.asFloat() );
|
||||
return python::object( var.asInt() );
|
||||
|
||||
if ( var.isDouble() )
|
||||
return python::object( var.asDouble() );
|
||||
return python::object( var.asInt() );
|
||||
|
||||
return python::object( var.asInt() );
|
||||
}
|
||||
@ -214,6 +220,10 @@ public:
|
||||
return convertToPython(var);
|
||||
}
|
||||
|
||||
static python::object float_(kdlib::NumBehavior& var) {
|
||||
return python::object(var.asDouble());
|
||||
}
|
||||
|
||||
static python::object int_(kdlib::NumBehavior& var) {
|
||||
return convertToPython(var);
|
||||
}
|
||||
|
@ -161,17 +161,22 @@ class IntBaseTest( unittest.TestCase ):
|
||||
|
||||
def testLongConvert( self ):
|
||||
self.assertEqual( "100", "%d" % numVariant(100) )
|
||||
self.assertEqual( "64", "%x" % numVariant(100) )
|
||||
self.assertEqual( "FFFF", "%X" % numVariant(0xFFFF) )
|
||||
self.assertEqual( "-70000000000", "%d" % numVariant(-70000000000) )
|
||||
self.assertEqual( "FFFFFFFFFFFFFF", "%X" % numVariant(0xFFFFFFFFFFFFFF) )
|
||||
self.assertEqual( "0", "%d" % numVariant(False) )
|
||||
|
||||
def testConvert( self ):
|
||||
self.assertEqual( "100", "%d" % numVariant(100) )
|
||||
self.assertEqual( "64", "%x" % numVariant(100) )
|
||||
|
||||
def testFloatConvert(self):
|
||||
self.assertEqual( "1.0", "%1.1f" % float(numVariant(1.0)))
|
||||
self.assertEqual( "1", "%d" % int(numVariant(1.0)))
|
||||
self.assertEqual( "1.0", "%1.1f" % numVariant(1.0))
|
||||
self.assertEqual( "1", "%d" % numVariant(1.0))
|
||||
|
||||
def testStr(self):
|
||||
self.assertEqual( "100", str(numVariant(100)) )
|
||||
|
||||
def testHex(self):
|
||||
self.assertEqual( "0x64", hex(numVariant(100)) )
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user