(root)/
Python-3.12.0/
Modules/
_testcapi/
clinic/
float.c.h
       1  /*[clinic input]
       2  preserve
       3  [clinic start generated code]*/
       4  
       5  #if defined(Py_BUILD_CORE) && !defined(Py_BUILD_CORE_MODULE)
       6  #  include "pycore_gc.h"            // PyGC_Head
       7  #  include "pycore_runtime.h"       // _Py_ID()
       8  #endif
       9  
      10  
      11  PyDoc_STRVAR(_testcapi_float_pack__doc__,
      12  "float_pack($module, size, d, le, /)\n"
      13  "--\n"
      14  "\n"
      15  "Test PyFloat_Pack2(), PyFloat_Pack4() and PyFloat_Pack8()");
      16  
      17  #define _TESTCAPI_FLOAT_PACK_METHODDEF    \
      18      {"float_pack", _PyCFunction_CAST(_testcapi_float_pack), METH_FASTCALL, _testcapi_float_pack__doc__},
      19  
      20  static PyObject *
      21  _testcapi_float_pack_impl(PyObject *module, int size, double d, int le);
      22  
      23  static PyObject *
      24  _testcapi_float_pack(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
      25  {
      26      PyObject *return_value = NULL;
      27      int size;
      28      double d;
      29      int le;
      30  
      31      if (!_PyArg_CheckPositional("float_pack", nargs, 3, 3)) {
      32          goto exit;
      33      }
      34      size = _PyLong_AsInt(args[0]);
      35      if (size == -1 && PyErr_Occurred()) {
      36          goto exit;
      37      }
      38      if (PyFloat_CheckExact(args[1])) {
      39          d = PyFloat_AS_DOUBLE(args[1]);
      40      }
      41      else
      42      {
      43          d = PyFloat_AsDouble(args[1]);
      44          if (d == -1.0 && PyErr_Occurred()) {
      45              goto exit;
      46          }
      47      }
      48      le = _PyLong_AsInt(args[2]);
      49      if (le == -1 && PyErr_Occurred()) {
      50          goto exit;
      51      }
      52      return_value = _testcapi_float_pack_impl(module, size, d, le);
      53  
      54  exit:
      55      return return_value;
      56  }
      57  
      58  PyDoc_STRVAR(_testcapi_float_unpack__doc__,
      59  "float_unpack($module, data, le, /)\n"
      60  "--\n"
      61  "\n"
      62  "Test PyFloat_Unpack2(), PyFloat_Unpack4() and PyFloat_Unpack8()");
      63  
      64  #define _TESTCAPI_FLOAT_UNPACK_METHODDEF    \
      65      {"float_unpack", _PyCFunction_CAST(_testcapi_float_unpack), METH_FASTCALL, _testcapi_float_unpack__doc__},
      66  
      67  static PyObject *
      68  _testcapi_float_unpack_impl(PyObject *module, const char *data,
      69                              Py_ssize_t data_length, int le);
      70  
      71  static PyObject *
      72  _testcapi_float_unpack(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
      73  {
      74      PyObject *return_value = NULL;
      75      const char *data;
      76      Py_ssize_t data_length;
      77      int le;
      78  
      79      if (!_PyArg_ParseStack(args, nargs, "y#i:float_unpack",
      80          &data, &data_length, &le)) {
      81          goto exit;
      82      }
      83      return_value = _testcapi_float_unpack_impl(module, data, data_length, le);
      84  
      85  exit:
      86      return return_value;
      87  }
      88  /*[clinic end generated code: output=083e5df26cd5fbeb input=a9049054013a1b77]*/