@@ -187,9 +187,11 @@ cdef extern from "parser/tokenizer.h":
187
187
int64_t skipfooter
188
188
# pick one, depending on whether the converter requires GIL
189
189
float64_t (* double_converter_nogil)(const char * , char ** ,
190
- char , char , char , int , int * ) nogil
190
+ char , char , char ,
191
+ int , int * , int * ) nogil
191
192
float64_t (* double_converter_withgil)(const char * , char ** ,
192
- char , char , char , int )
193
+ char , char , char ,
194
+ int , int * , int * )
193
195
194
196
# error handling
195
197
char * warn_msg
@@ -237,12 +239,15 @@ cdef extern from "parser/tokenizer.h":
237
239
uint64_t str_to_uint64(uint_state * state, char * p_item, int64_t int_max,
238
240
uint64_t uint_max, int * error, char tsep) nogil
239
241
240
- float64_t xstrtod(const char * p, char ** q, char decimal, char sci,
241
- char tsep, int skip_trailing, int * error) nogil
242
- float64_t precise_xstrtod(const char * p, char ** q, char decimal, char sci,
243
- char tsep, int skip_trailing, int * error) nogil
244
- float64_t round_trip(const char * p, char ** q, char decimal, char sci,
245
- char tsep, int skip_trailing) nogil
242
+ float64_t xstrtod(const char * p, char ** q, char decimal,
243
+ char sci, char tsep, int skip_trailing,
244
+ int * error, int * maybe_int) nogil
245
+ float64_t precise_xstrtod(const char * p, char ** q, char decimal,
246
+ char sci, char tsep, int skip_trailing,
247
+ int * error, int * maybe_int) nogil
248
+ float64_t round_trip(const char * p, char ** q, char decimal,
249
+ char sci, char tsep, int skip_trailing,
250
+ int * error, int * maybe_int) nogil
246
251
247
252
int to_boolean(const char * item, uint8_t * val) nogil
248
253
@@ -1737,7 +1742,8 @@ cdef _try_double(parser_t *parser, int64_t col,
1737
1742
assert parser.double_converter_withgil != NULL
1738
1743
error = _try_double_nogil(parser,
1739
1744
< float64_t (* )(const char * , char ** ,
1740
- char , char , char , int , int * )
1745
+ char , char , char ,
1746
+ int , int * , int * )
1741
1747
nogil> parser.double_converter_withgil,
1742
1748
col, line_start, line_end,
1743
1749
na_filter, na_hashset, use_na_flist,
@@ -1751,7 +1757,7 @@ cdef _try_double(parser_t *parser, int64_t col,
1751
1757
cdef inline int _try_double_nogil(parser_t * parser,
1752
1758
float64_t (* double_converter)(
1753
1759
const char * , char ** , char ,
1754
- char , char , int , int * ) nogil,
1760
+ char , char , int , int * , int * ) nogil,
1755
1761
int col, int line_start, int line_end,
1756
1762
bint na_filter, kh_str_starts_t * na_hashset,
1757
1763
bint use_na_flist,
@@ -1780,7 +1786,7 @@ cdef inline int _try_double_nogil(parser_t *parser,
1780
1786
else :
1781
1787
data[0 ] = double_converter(word, & p_end, parser.decimal,
1782
1788
parser.sci, parser.thousands,
1783
- 1 , & error)
1789
+ 1 , & error, NULL )
1784
1790
if error != 0 or p_end == word or p_end[0 ]:
1785
1791
error = 0
1786
1792
if (strcasecmp(word, cinf) == 0 or
@@ -1800,7 +1806,8 @@ cdef inline int _try_double_nogil(parser_t *parser,
1800
1806
for i in range (lines):
1801
1807
COLITER_NEXT(it, word)
1802
1808
data[0 ] = double_converter(word, & p_end, parser.decimal,
1803
- parser.sci, parser.thousands, 1 , & error)
1809
+ parser.sci, parser.thousands,
1810
+ 1 , & error, NULL )
1804
1811
if error != 0 or p_end == word or p_end[0 ]:
1805
1812
error = 0
1806
1813
if (strcasecmp(word, cinf) == 0 or
0 commit comments