| #include "parts.h" | |
| #include "util.h" | |
| static PyObject * | |
| float_check(PyObject *Py_UNUSED(module), PyObject *obj) | |
| { | |
| NULLABLE(obj); | |
| return PyLong_FromLong(PyFloat_Check(obj)); | |
| } | |
| static PyObject * | |
| float_checkexact(PyObject *Py_UNUSED(module), PyObject *obj) | |
| { | |
| NULLABLE(obj); | |
| return PyLong_FromLong(PyFloat_CheckExact(obj)); | |
| } | |
| static PyObject * | |
| float_fromstring(PyObject *Py_UNUSED(module), PyObject *obj) | |
| { | |
| NULLABLE(obj); | |
| return PyFloat_FromString(obj); | |
| } | |
| static PyObject * | |
| float_fromdouble(PyObject *Py_UNUSED(module), PyObject *obj) | |
| { | |
| double d; | |
| if (!PyArg_Parse(obj, "d", &d)) { | |
| return NULL; | |
| } | |
| return PyFloat_FromDouble(d); | |
| } | |
| static PyObject * | |
| float_asdouble(PyObject *Py_UNUSED(module), PyObject *obj) | |
| { | |
| double d; | |
| NULLABLE(obj); | |
| d = PyFloat_AsDouble(obj); | |
| if (d == -1. && PyErr_Occurred()) { | |
| return NULL; | |
| } | |
| return PyFloat_FromDouble(d); | |
| } | |
| static PyObject * | |
| float_getinfo(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(arg)) | |
| { | |
| return PyFloat_GetInfo(); | |
| } | |
| static PyObject * | |
| float_getmax(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(arg)) | |
| { | |
| return PyFloat_FromDouble(PyFloat_GetMax()); | |
| } | |
| static PyObject * | |
| float_getmin(PyObject *Py_UNUSED(module), PyObject *Py_UNUSED(arg)) | |
| { | |
| return PyFloat_FromDouble(PyFloat_GetMin()); | |
| } | |
| static PyMethodDef test_methods[] = { | |
| {"float_check", float_check, METH_O}, | |
| {"float_checkexact", float_checkexact, METH_O}, | |
| {"float_fromstring", float_fromstring, METH_O}, | |
| {"float_fromdouble", float_fromdouble, METH_O}, | |
| {"float_asdouble", float_asdouble, METH_O}, | |
| {"float_getinfo", float_getinfo, METH_NOARGS}, | |
| {"float_getmax", float_getmax, METH_NOARGS}, | |
| {"float_getmin", float_getmin, METH_NOARGS}, | |
| {NULL}, | |
| }; | |
| int | |
| _PyTestLimitedCAPI_Init_Float(PyObject *mod) | |
| { | |
| if (PyModule_AddFunctions(mod, test_methods) < 0) { | |
| return -1; | |
| } | |
| return 0; | |
| } |