'spam',
10,
-10,
+ 100.0,
]
for obj in shareables:
with self.subTest(obj):
object,
object(),
Exception(),
- 100.0,
# user-defined types and objects
Cheese,
Cheese('Wensleydale'),
with self.assertRaises(OverflowError):
_testinternalcapi.get_crossinterp_data(i)
+ def test_float(self):
+ self._assert_values([0.0, 1.1, -1.0, 0.12345678, -0.12345678])
+
class ModuleTests(TestBase):
return 0;
}
+static PyObject *
+_new_float_object(_PyCrossInterpreterData *data)
+{
+ double * value_ptr = data->data;
+ return PyFloat_FromDouble(*value_ptr);
+}
+
+static int
+_float_shared(PyThreadState *tstate, PyObject *obj,
+ _PyCrossInterpreterData *data)
+{
+ if (_PyCrossInterpreterData_InitWithSize(
+ data, tstate->interp, sizeof(double), NULL,
+ _new_float_object
+ ) < 0)
+ {
+ return -1;
+ }
+ double *shared = (double *)data->data;
+ *shared = PyFloat_AsDouble(obj);
+ return 0;
+}
+
static PyObject *
_new_none_object(_PyCrossInterpreterData *data)
{
if (_xidregistry_add_type(xidregistry, &PyUnicode_Type, _str_shared) != 0) {
Py_FatalError("could not register str for cross-interpreter sharing");
}
+
+ // float
+ if (_xidregistry_add_type(xidregistry, &PyFloat_Type, _float_shared) != 0) {
+ Py_FatalError("could not register float for cross-interpreter sharing");
+ }
}