Allowing PyBool lists as well.
OK?

http://reviews.llvm.org/D10821

Files:
  scripts/Python/python-typemaps.swig
  test/python_api/sbdata/TestSBData.py

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/
Index: scripts/Python/python-typemaps.swig
===================================================================
--- scripts/Python/python-typemaps.swig
+++ scripts/Python/python-typemaps.swig
@@ -244,11 +244,22 @@
       if (PyInt_Check(o)) {
         $1[i] = PyInt_AsLong(o);
       }
+      else if (PyLong_Check(o)) {
+        $1[i] = PyLong_AsUnsignedLongLong(o);
+      }
+      else if (PyBool_Check(o)) {
+        $1[i] = o == Py_True ? 1 : 0;
+      }
       else {
         PyErr_SetString(PyExc_TypeError,"list must contain numbers");
         free($1);
         return NULL;
       }
+
+      if (PyErr_Occurred()) {
+        free($1);
+        return NULL;
+      }
     }
   } else if ($input == Py_None) {
     $1 =  NULL;
@@ -275,11 +286,22 @@
       if (PyInt_Check(o)) {
         $1[i] = PyInt_AsLong(o);
       }
+      else if (PyLong_Check(o)) {
+        $1[i] = PyLong_AsUnsignedLong(o);
+      }
+      else if (PyBool_Check(o)) {
+        $1[i] = o == Py_True ? 1 : 0;
+      }
       else {
         PyErr_SetString(PyExc_TypeError,"list must contain numbers");
         free($1);
         return NULL;
       }
+
+      if (PyErr_Occurred()) {
+        free($1);
+        return NULL;
+      }
     }
   } else if ($input == Py_None) {
     $1 =  NULL;
@@ -306,11 +328,22 @@
       if (PyInt_Check(o)) {
         $1[i] = PyInt_AsLong(o);
       }
+      else if (PyLong_Check(o)) {
+        $1[i] = PyLong_AsLongLong(o);
+      }
+      else if (PyBool_Check(o)) {
+        $1[i] = o == Py_True ? 1 : 0;
+      }
       else {
         PyErr_SetString(PyExc_TypeError,"list must contain numbers");
         free($1);
         return NULL;
       }
+
+      if (PyErr_Occurred()) {
+        free($1);
+        return NULL;
+      }
     }
   } else if ($input == Py_None) {
     $1 =  NULL;
@@ -337,11 +370,22 @@
       if (PyInt_Check(o)) {
         $1[i] = PyInt_AsLong(o);
       }
+      else if (PyLong_Check(o)) {
+        $1[i] = PyLong_AsLong(o);
+      }
+      else if (PyBool_Check(o)) {
+        $1[i] = o == Py_True ? 1 : 0;
+      }
       else {
         PyErr_SetString(PyExc_TypeError,"list must contain numbers");
         free($1);
         return NULL;
       }
+
+      if (PyErr_Occurred()) {
+        free($1);
+        return NULL;
+      }
     }
   } else if ($input == Py_None) {
     $1 =  NULL;
Index: test/python_api/sbdata/TestSBData.py
===================================================================
--- test/python_api/sbdata/TestSBData.py
+++ test/python_api/sbdata/TestSBData.py
@@ -242,30 +242,56 @@
         self.assert_data(data2.GetUnsignedInt8, 3, 108) # l
         self.assertTrue(data2.uint8[4] == 111, 'o == 111')
         self.assert_data(data2.GetUnsignedInt8, 5, 33) # !
+
+        uint_lists = [ [1,2,3,4,5], [long(i) for i in [1, 2, 3, 4, 5]] ]
+        int_lists = [ [2, -2], [long(i) for i in [2, -2]] ]
+
+        for l in uint_lists:
+            data2 = lldb.SBData.CreateDataFromUInt64Array(process.GetByteOrder(), process.GetAddressByteSize(), l)
+            self.assert_data(data2.GetUnsignedInt64, 0, 1)
+            self.assert_data(data2.GetUnsignedInt64, 8, 2)
+            self.assert_data(data2.GetUnsignedInt64, 16, 3)
+            self.assert_data(data2.GetUnsignedInt64, 24, 4)
+            self.assert_data(data2.GetUnsignedInt64, 32, 5)
         
-        data2 = lldb.SBData.CreateDataFromUInt64Array(process.GetByteOrder(),process.GetAddressByteSize(),[1,2,3,4,5])
-        self.assert_data(data2.GetUnsignedInt64, 0, 1)
-        self.assert_data(data2.GetUnsignedInt64, 8, 2)
-        self.assert_data(data2.GetUnsignedInt64, 16, 3)
-        self.assert_data(data2.GetUnsignedInt64, 24, 4)
-        self.assert_data(data2.GetUnsignedInt64, 32, 5)
-        
-        self.assertTrue(data2.uint64s == [1,2,3,4,5], 'read_data_helper failure: data2 == [1,2,3,4,5]')
+            self.assertTrue(data2.uint64s == [1,2,3,4,5], 'read_data_helper failure: data2 == [1,2,3,4,5]')
 
-        data2 = lldb.SBData.CreateDataFromSInt32Array(process.GetByteOrder(),process.GetAddressByteSize(),[2, -2])
-        self.assertTrue(data2.sint32[0:2] == [2,-2], 'signed32 data2 = [2,-2]')
+        for l in int_lists:
+            data2 = lldb.SBData.CreateDataFromSInt32Array(process.GetByteOrder(), process.GetAddressByteSize(), l)
+            self.assertTrue(data2.sint32[0:2] == [2,-2], 'signed32 data2 = [2,-2]')
         
-        data2.Append(lldb.SBData.CreateDataFromSInt64Array(process.GetByteOrder(),process.GetAddressByteSize(),[2, -2]))
+        data2.Append(lldb.SBData.CreateDataFromSInt64Array(process.GetByteOrder(), process.GetAddressByteSize(), int_lists[0]))
         self.assert_data(data2.GetSignedInt32, 0, 2)
         self.assert_data(data2.GetSignedInt32, 4, -2)
         self.assertTrue(data2.sint64[1:3] == [2,-2], 'signed64 data2 = [2,-2]')
-        
-        data2 = lldb.SBData.CreateDataFromUInt32Array(process.GetByteOrder(),process.GetAddressByteSize(),[1,2,3,4,5])
-        self.assert_data(data2.GetUnsignedInt32,0, 1)
-        self.assert_data(data2.GetUnsignedInt32,4, 2)
-        self.assert_data(data2.GetUnsignedInt32,8, 3)
-        self.assert_data(data2.GetUnsignedInt32,12, 4)
-        self.assert_data(data2.GetUnsignedInt32,16, 5)
+
+        for l in int_lists:
+            data2 = lldb.SBData.CreateDataFromSInt64Array(process.GetByteOrder(), process.GetAddressByteSize(), l)
+            self.assert_data(data2.GetSignedInt64, 0, 2)
+            self.assert_data(data2.GetSignedInt64, 8, -2)
+            self.assertTrue(data2.sint64[0:2] == [2,-2], 'signed64 data2 = [2,-2]')
+
+        for l in uint_lists:
+            data2 = lldb.SBData.CreateDataFromUInt32Array(process.GetByteOrder(), process.GetAddressByteSize(), l)
+            self.assert_data(data2.GetUnsignedInt32,0, 1)
+            self.assert_data(data2.GetUnsignedInt32,4, 2)
+            self.assert_data(data2.GetUnsignedInt32,8, 3)
+            self.assert_data(data2.GetUnsignedInt32,12, 4)
+            self.assert_data(data2.GetUnsignedInt32,16, 5)
+
+        bool_list = [True, True, False, False, True, False]
+
+        data2 = lldb.SBData.CreateDataFromSInt32Array(process.GetByteOrder(), process.GetAddressByteSize(), bool_list)
+        self.assertTrue(data2.sint32[0:6] == [1, 1, 0, 0, 1, 0], 'signed32 data2 = [1, 1, 0, 0, 1, 0]')
+
+        data2 = lldb.SBData.CreateDataFromUInt32Array(process.GetByteOrder(), process.GetAddressByteSize(), bool_list)
+        self.assertTrue(data2.uint32[0:6] == [1, 1, 0, 0, 1, 0], 'unsigned32 data2 = [1, 1, 0, 0, 1, 0]')
+
+        data2 = lldb.SBData.CreateDataFromSInt64Array(process.GetByteOrder(), process.GetAddressByteSize(), bool_list)
+        self.assertTrue(data2.sint64[0:6] == [1, 1, 0, 0, 1, 0], 'signed64 data2 = [1, 1, 0, 0, 1, 0]')
+
+        data2 = lldb.SBData.CreateDataFromUInt64Array(process.GetByteOrder(), process.GetAddressByteSize(), bool_list)
+        self.assertTrue(data2.uint64[0:6] == [1, 1, 0, 0, 1, 0], 'signed64 data2 = [1, 1, 0, 0, 1, 0]')
         
         data2 = lldb.SBData.CreateDataFromDoubleArray(process.GetByteOrder(),process.GetAddressByteSize(),[3.14,6.28,2.71])
         self.assertTrue( fabs(data2.GetDouble(error,0) - 3.14) < 0.5, 'double data2[0] = 3.14')
_______________________________________________
lldb-commits mailing list
lldb-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

Reply via email to