From d12afc4cabed5dc1dd965a92057492112146b904 Mon Sep 17 00:00:00 2001
From: Mansard <nmansard@laas.fr>
Date: Tue, 25 Jan 2011 17:58:35 +0100
Subject: [PATCH] Enable conversion from int to float and double in argument of
 bound functions.

---
 src/entity-py.cc | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/entity-py.cc b/src/entity-py.cc
index a0895a3..7c009db 100644
--- a/src/entity-py.cc
+++ b/src/entity-py.cc
@@ -227,20 +227,28 @@ namespace dynamicgraph {
 	  return Value(ivalue);
 	  break;
 	case (Value::FLOAT) :
-	  if (!PyFloat_Check(pyObject)) {
+	  if (PyFloat_Check(pyObject)) {
+	    fvalue = (float)PyFloat_AsDouble(pyObject);
+	    return Value(fvalue);
+	  } else if (PyInt_Check(pyObject)) {
+	    fvalue = (float)PyInt_AS_LONG(pyObject);
+	    return Value(fvalue);
+	  } else {
 	    throw ExceptionFactory(ExceptionFactory::GENERIC,
 				   "float");
 	  }
-	  fvalue = (float)PyFloat_AsDouble(pyObject);
-	  return Value(fvalue);
 	  break;
 	case (Value::DOUBLE) :
-	  if (!PyFloat_Check(pyObject)) {
+	  if (PyFloat_Check(pyObject)) {
+	    dvalue = PyFloat_AsDouble(pyObject);
+	    return Value(dvalue);
+	  } else if (PyInt_Check(pyObject)) {
+	    dvalue = 0.0+PyInt_AS_LONG(pyObject);
+	    return Value(dvalue);
+	  } else {
 	    throw ExceptionFactory(ExceptionFactory::GENERIC,
-				   "float");
+				   "double");
 	  }
-	  dvalue = PyFloat_AsDouble(pyObject);
-	  return Value(dvalue);
 	  break;
 	case (Value::STRING) :
 	  if (!PyString_Check(pyObject)) {
-- 
GitLab