Skip to content

Commit 198f9ba

Browse files
committed
make functions type-safe
1 parent 8087551 commit 198f9ba

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

pandas/_libs/src/klib/khash_python.h

+16-16
Original file line numberDiff line numberDiff line change
@@ -163,37 +163,37 @@ KHASH_MAP_INIT_COMPLEX128(complex128, size_t)
163163
#define kh_exist_complex128(h, k) (kh_exist(h, k))
164164

165165

166-
int PANDAS_INLINE floatobject_cmp(PyObject* a, PyObject* b){
166+
int PANDAS_INLINE floatobject_cmp(PyFloatObject* a, PyFloatObject* b){
167167
return Py_IS_NAN(PyFloat_AS_DOUBLE(a)) &&
168168
Py_IS_NAN(PyFloat_AS_DOUBLE(b));
169169
}
170170

171171

172-
int PANDAS_INLINE complexobject_cmp(PyObject* a, PyObject* b){
172+
int PANDAS_INLINE complexobject_cmp(PyComplexObject* a, PyComplexObject* b){
173173
return (
174-
Py_IS_NAN(PyComplex_RealAsDouble(a)) &&
175-
Py_IS_NAN(PyComplex_RealAsDouble(b)) &&
176-
Py_IS_NAN(PyComplex_ImagAsDouble(a)) &&
177-
Py_IS_NAN(PyComplex_ImagAsDouble(b))
174+
Py_IS_NAN(a->cval.real) &&
175+
Py_IS_NAN(b->cval.real) &&
176+
Py_IS_NAN(a->cval.imag) &&
177+
Py_IS_NAN(b->cval.imag)
178178
)
179179
||
180180
(
181-
Py_IS_NAN(PyComplex_RealAsDouble(a)) &&
182-
Py_IS_NAN(PyComplex_RealAsDouble(b)) &&
183-
PyComplex_ImagAsDouble(a) == PyComplex_ImagAsDouble(b)
181+
Py_IS_NAN(a->cval.real) &&
182+
Py_IS_NAN(b->cval.real) &&
183+
a->cval.imag == b->cval.imag
184184
)
185185
||
186186
(
187-
PyComplex_RealAsDouble(a) == PyComplex_RealAsDouble(b) &&
188-
Py_IS_NAN(PyComplex_ImagAsDouble(a)) &&
189-
Py_IS_NAN(PyComplex_ImagAsDouble(b))
187+
a->cval.real == b->cval.real &&
188+
Py_IS_NAN(a->cval.imag) &&
189+
Py_IS_NAN(b->cval.imag)
190190
);
191191
}
192192

193193
int PANDAS_INLINE pyobject_cmp(PyObject* a, PyObject* b);
194194

195195

196-
int PANDAS_INLINE tupleobject_cmp(PyObject* a, PyObject* b){
196+
int PANDAS_INLINE tupleobject_cmp(PyTupleObject* a, PyTupleObject* b){
197197
Py_ssize_t i;
198198

199199
if (Py_SIZE(a) != Py_SIZE(b)) {
@@ -220,13 +220,13 @@ int PANDAS_INLINE pyobject_cmp(PyObject* a, PyObject* b) {
220220
return 0;
221221
}
222222
if (PyFloat_CheckExact(a)) {
223-
return floatobject_cmp(a, b);
223+
return floatobject_cmp((PyFloatObject*)a, (PyFloatObject*)b);
224224
}
225225
if (PyComplex_CheckExact(a)) {
226-
return complexobject_cmp(a, b);
226+
return complexobject_cmp((PyComplexObject*)a, (PyComplexObject*)b);
227227
}
228228
if (PyTuple_CheckExact(a)) {
229-
return tupleobject_cmp(a, b);
229+
return tupleobject_cmp((PyTupleObject*)a, (PyTupleObject*)b);
230230
}
231231
}
232232
return result;

0 commit comments

Comments
 (0)