1
1
#define PY_SSIZE_T_CLEAN
2
2
3
3
#include "parts.h"
4
+ #include "clinic/float.c.h"
4
5
5
6
6
- // Test PyFloat_Pack2(), PyFloat_Pack4() and PyFloat_Pack8()
7
+ /*[clinic input]
8
+ module _testcapi
9
+ [clinic start generated code]*/
10
+ /*[clinic end generated code: output=da39a3ee5e6b4b0d input=6361033e795369fc]*/
11
+
12
+ /*[clinic input]
13
+ _testcapi.float_pack
14
+
15
+ size: int
16
+ d: double
17
+ le: int
18
+ /
19
+
20
+ Test PyFloat_Pack2(), PyFloat_Pack4() and PyFloat_Pack8()
21
+ [clinic start generated code]*/
22
+
7
23
static PyObject *
8
- test_float_pack (PyObject * self , PyObject * args )
24
+ _testcapi_float_pack_impl (PyObject * module , int size , double d , int le )
25
+ /*[clinic end generated code: output=7899bd98f8b6cb04 input=52c9115121999c98]*/
9
26
{
10
- int size ;
11
- double d ;
12
- int le ;
13
- if (!PyArg_ParseTuple (args , "idi" , & size , & d , & le )) {
14
- return NULL ;
15
- }
16
27
switch (size )
17
28
{
18
29
case 2 :
@@ -47,19 +58,24 @@ test_float_pack(PyObject *self, PyObject *args)
47
58
}
48
59
49
60
50
- // Test PyFloat_Unpack2(), PyFloat_Unpack4() and PyFloat_Unpack8()
61
+ /*[clinic input]
62
+ _testcapi.float_unpack
63
+
64
+ data: str(accept={robuffer}, zeroes=True)
65
+ le: int
66
+ /
67
+
68
+ Test PyFloat_Unpack2(), PyFloat_Unpack4() and PyFloat_Unpack8()
69
+ [clinic start generated code]*/
70
+
51
71
static PyObject *
52
- test_float_unpack (PyObject * self , PyObject * args )
72
+ _testcapi_float_unpack_impl (PyObject * module , const char * data ,
73
+ Py_ssize_t data_length , int le )
74
+ /*[clinic end generated code: output=617059f889ddbfe4 input=c095e4bb75a696cd]*/
53
75
{
54
76
assert (!PyErr_Occurred ());
55
- const char * data ;
56
- Py_ssize_t size ;
57
- int le ;
58
- if (!PyArg_ParseTuple (args , "y#i" , & data , & size , & le )) {
59
- return NULL ;
60
- }
61
77
double d ;
62
- switch (size )
78
+ switch (data_length )
63
79
{
64
80
case 2 :
65
81
d = PyFloat_Unpack2 (data , le );
@@ -82,8 +98,8 @@ test_float_unpack(PyObject *self, PyObject *args)
82
98
}
83
99
84
100
static PyMethodDef test_methods [] = {
85
- { "float_pack" , test_float_pack , METH_VARARGS , NULL },
86
- { "float_unpack" , test_float_unpack , METH_VARARGS , NULL },
101
+ _TESTCAPI_FLOAT_PACK_METHODDEF
102
+ _TESTCAPI_FLOAT_UNPACK_METHODDEF
87
103
{NULL },
88
104
};
89
105
0 commit comments