#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; }