| 459 | } |
| 460 | |
| 461 | size_t iconv(const uint8_t** inbuf, int64_t* inbytesleft, uint8_t** outbuf, |
| 462 | int64_t* outbytesleft) { |
| 463 | // This iconv signature uses the types that Arrow C++ uses to minimize |
| 464 | // deviations from the style guide; however, iconv() uses pointers |
| 465 | // to char* and size_t instead of uint8_t and int64_t. |
| 466 | size_t inbytesleft_size_t = *inbytesleft; |
| 467 | size_t outbytesleft_size_t = *outbytesleft; |
| 468 | const char** inbuf_const_char = reinterpret_cast<const char**>(inbuf); |
| 469 | char** outbuf_char = reinterpret_cast<char**>(outbuf); |
| 470 | |
| 471 | size_t return_value = Riconv(handle_, inbuf_const_char, &inbytesleft_size_t, |
| 472 | outbuf_char, &outbytesleft_size_t); |
| 473 | |
| 474 | *inbytesleft = inbytesleft_size_t; |
| 475 | *outbytesleft = outbytesleft_size_t; |
| 476 | return return_value; |
| 477 | } |
| 478 | |
| 479 | ~RIconvWrapper() { |
| 480 | if (handle_ != ((void*)-1)) { |