// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

#include <Rcpp.h>

using namespace Rcpp;

#ifdef RCPP_USE_GLOBAL_ROSTREAM
Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
#endif

// qs2_get_compress_level
int qs2_get_compress_level();
RcppExport SEXP _qs2_qs2_get_compress_level() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(qs2_get_compress_level());
    return rcpp_result_gen;
END_RCPP
}
// qs2_set_compress_level
void qs2_set_compress_level(int value);
RcppExport SEXP _qs2_qs2_set_compress_level(SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< int >::type value(valueSEXP);
    qs2_set_compress_level(value);
    return R_NilValue;
END_RCPP
}
// qs2_get_shuffle
bool qs2_get_shuffle();
RcppExport SEXP _qs2_qs2_get_shuffle() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(qs2_get_shuffle());
    return rcpp_result_gen;
END_RCPP
}
// qs2_set_shuffle
void qs2_set_shuffle(bool value);
RcppExport SEXP _qs2_qs2_set_shuffle(SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< bool >::type value(valueSEXP);
    qs2_set_shuffle(value);
    return R_NilValue;
END_RCPP
}
// qs2_get_nthreads
int qs2_get_nthreads();
RcppExport SEXP _qs2_qs2_get_nthreads() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(qs2_get_nthreads());
    return rcpp_result_gen;
END_RCPP
}
// qs2_set_nthreads
void qs2_set_nthreads(int value);
RcppExport SEXP _qs2_qs2_set_nthreads(SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< int >::type value(valueSEXP);
    qs2_set_nthreads(value);
    return R_NilValue;
END_RCPP
}
// qs2_get_validate_checksum
bool qs2_get_validate_checksum();
RcppExport SEXP _qs2_qs2_get_validate_checksum() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(qs2_get_validate_checksum());
    return rcpp_result_gen;
END_RCPP
}
// qs2_set_validate_checksum
void qs2_set_validate_checksum(bool value);
RcppExport SEXP _qs2_qs2_set_validate_checksum(SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< bool >::type value(valueSEXP);
    qs2_set_validate_checksum(value);
    return R_NilValue;
END_RCPP
}
// qs2_get_warn_unsupported_types
bool qs2_get_warn_unsupported_types();
RcppExport SEXP _qs2_qs2_get_warn_unsupported_types() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(qs2_get_warn_unsupported_types());
    return rcpp_result_gen;
END_RCPP
}
// qs2_set_warn_unsupported_types
void qs2_set_warn_unsupported_types(bool value);
RcppExport SEXP _qs2_qs2_set_warn_unsupported_types(SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< bool >::type value(valueSEXP);
    qs2_set_warn_unsupported_types(value);
    return R_NilValue;
END_RCPP
}
// qs2_get_use_alt_rep
bool qs2_get_use_alt_rep();
RcppExport SEXP _qs2_qs2_get_use_alt_rep() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(qs2_get_use_alt_rep());
    return rcpp_result_gen;
END_RCPP
}
// qs2_set_use_alt_rep
void qs2_set_use_alt_rep(bool value);
RcppExport SEXP _qs2_qs2_set_use_alt_rep(SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< bool >::type value(valueSEXP);
    qs2_set_use_alt_rep(value);
    return R_NilValue;
END_RCPP
}
// qs_save
SEXP qs_save(SEXP object, const std::string& file, const int compress_level, const bool shuffle, int nthreads);
RcppExport SEXP _qs2_qs_save(SEXP objectSEXP, SEXP fileSEXP, SEXP compress_levelSEXP, SEXP shuffleSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type object(objectSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type file(fileSEXP);
    Rcpp::traits::input_parameter< const int >::type compress_level(compress_levelSEXP);
    Rcpp::traits::input_parameter< const bool >::type shuffle(shuffleSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qs_save(object, file, compress_level, shuffle, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qs_serialize
SEXP qs_serialize(SEXP object, const int compress_level, const bool shuffle, int nthreads);
RcppExport SEXP _qs2_qs_serialize(SEXP objectSEXP, SEXP compress_levelSEXP, SEXP shuffleSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type object(objectSEXP);
    Rcpp::traits::input_parameter< const int >::type compress_level(compress_levelSEXP);
    Rcpp::traits::input_parameter< const bool >::type shuffle(shuffleSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qs_serialize(object, compress_level, shuffle, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qs_read
SEXP qs_read(const std::string& file, const bool validate_checksum, int nthreads);
RcppExport SEXP _qs2_qs_read(SEXP fileSEXP, SEXP validate_checksumSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type file(fileSEXP);
    Rcpp::traits::input_parameter< const bool >::type validate_checksum(validate_checksumSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qs_read(file, validate_checksum, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qs_deserialize
SEXP qs_deserialize(SEXP input, const bool validate_checksum, int nthreads);
RcppExport SEXP _qs2_qs_deserialize(SEXP inputSEXP, SEXP validate_checksumSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type input(inputSEXP);
    Rcpp::traits::input_parameter< const bool >::type validate_checksum(validate_checksumSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qs_deserialize(input, validate_checksum, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qd_save
SEXP qd_save(SEXP object, const std::string& file, const int compress_level, const bool shuffle, const bool warn_unsupported_types, int nthreads);
RcppExport SEXP _qs2_qd_save(SEXP objectSEXP, SEXP fileSEXP, SEXP compress_levelSEXP, SEXP shuffleSEXP, SEXP warn_unsupported_typesSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type object(objectSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type file(fileSEXP);
    Rcpp::traits::input_parameter< const int >::type compress_level(compress_levelSEXP);
    Rcpp::traits::input_parameter< const bool >::type shuffle(shuffleSEXP);
    Rcpp::traits::input_parameter< const bool >::type warn_unsupported_types(warn_unsupported_typesSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qd_save(object, file, compress_level, shuffle, warn_unsupported_types, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qd_serialize
SEXP qd_serialize(SEXP object, const int compress_level, const bool shuffle, const bool warn_unsupported_types, int nthreads);
RcppExport SEXP _qs2_qd_serialize(SEXP objectSEXP, SEXP compress_levelSEXP, SEXP shuffleSEXP, SEXP warn_unsupported_typesSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type object(objectSEXP);
    Rcpp::traits::input_parameter< const int >::type compress_level(compress_levelSEXP);
    Rcpp::traits::input_parameter< const bool >::type shuffle(shuffleSEXP);
    Rcpp::traits::input_parameter< const bool >::type warn_unsupported_types(warn_unsupported_typesSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qd_serialize(object, compress_level, shuffle, warn_unsupported_types, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qd_read
SEXP qd_read(const std::string& file, const bool use_alt_rep, const bool validate_checksum, int nthreads);
RcppExport SEXP _qs2_qd_read(SEXP fileSEXP, SEXP use_alt_repSEXP, SEXP validate_checksumSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type file(fileSEXP);
    Rcpp::traits::input_parameter< const bool >::type use_alt_rep(use_alt_repSEXP);
    Rcpp::traits::input_parameter< const bool >::type validate_checksum(validate_checksumSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qd_read(file, use_alt_rep, validate_checksum, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qd_deserialize
SEXP qd_deserialize(SEXP input, const bool use_alt_rep, const bool validate_checksum, int nthreads);
RcppExport SEXP _qs2_qd_deserialize(SEXP inputSEXP, SEXP use_alt_repSEXP, SEXP validate_checksumSEXP, SEXP nthreadsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP >::type input(inputSEXP);
    Rcpp::traits::input_parameter< const bool >::type use_alt_rep(use_alt_repSEXP);
    Rcpp::traits::input_parameter< const bool >::type validate_checksum(validate_checksumSEXP);
    Rcpp::traits::input_parameter< int >::type nthreads(nthreadsSEXP);
    rcpp_result_gen = Rcpp::wrap(qd_deserialize(input, use_alt_rep, validate_checksum, nthreads));
    return rcpp_result_gen;
END_RCPP
}
// qx_dump
List qx_dump(const std::string& file);
RcppExport SEXP _qs2_qx_dump(SEXP fileSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type file(fileSEXP);
    rcpp_result_gen = Rcpp::wrap(qx_dump(file));
    return rcpp_result_gen;
END_RCPP
}
// check_SIMD
std::string check_SIMD();
RcppExport SEXP _qs2_check_SIMD() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(check_SIMD());
    return rcpp_result_gen;
END_RCPP
}
// check_TBB
bool check_TBB();
RcppExport SEXP _qs2_check_TBB() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    rcpp_result_gen = Rcpp::wrap(check_TBB());
    return rcpp_result_gen;
END_RCPP
}
// loaded_in_fork_child
void loaded_in_fork_child(bool value);
RcppExport SEXP _qs2_loaded_in_fork_child(SEXP valueSEXP) {
BEGIN_RCPP
    Rcpp::traits::input_parameter< bool >::type value(valueSEXP);
    loaded_in_fork_child(value);
    return R_NilValue;
END_RCPP
}
// internal_is_utf8_locale
int internal_is_utf8_locale(int size);
RcppExport SEXP _qs2_internal_is_utf8_locale(SEXP sizeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< int >::type size(sizeSEXP);
    rcpp_result_gen = Rcpp::wrap(internal_is_utf8_locale(size));
    return rcpp_result_gen;
END_RCPP
}
// zstd_compress_raw
std::vector<unsigned char> zstd_compress_raw(SEXP const data, int compress_level);
RcppExport SEXP _qs2_zstd_compress_raw(SEXP dataSEXP, SEXP compress_levelSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP const >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type compress_level(compress_levelSEXP);
    rcpp_result_gen = Rcpp::wrap(zstd_compress_raw(data, compress_level));
    return rcpp_result_gen;
END_RCPP
}
// zstd_decompress_raw
RawVector zstd_decompress_raw(SEXP const data);
RcppExport SEXP _qs2_zstd_decompress_raw(SEXP dataSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP const >::type data(dataSEXP);
    rcpp_result_gen = Rcpp::wrap(zstd_decompress_raw(data));
    return rcpp_result_gen;
END_RCPP
}
// zstd_compress_bound
double zstd_compress_bound(SEXP const size);
RcppExport SEXP _qs2_zstd_compress_bound(SEXP sizeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP const >::type size(sizeSEXP);
    rcpp_result_gen = Rcpp::wrap(zstd_compress_bound(size));
    return rcpp_result_gen;
END_RCPP
}
// blosc_shuffle_raw
std::vector<unsigned char> blosc_shuffle_raw(SEXP const data, int bytesofsize);
RcppExport SEXP _qs2_blosc_shuffle_raw(SEXP dataSEXP, SEXP bytesofsizeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP const >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type bytesofsize(bytesofsizeSEXP);
    rcpp_result_gen = Rcpp::wrap(blosc_shuffle_raw(data, bytesofsize));
    return rcpp_result_gen;
END_RCPP
}
// blosc_unshuffle_raw
std::vector<unsigned char> blosc_unshuffle_raw(SEXP const data, int bytesofsize);
RcppExport SEXP _qs2_blosc_unshuffle_raw(SEXP dataSEXP, SEXP bytesofsizeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP const >::type data(dataSEXP);
    Rcpp::traits::input_parameter< int >::type bytesofsize(bytesofsizeSEXP);
    rcpp_result_gen = Rcpp::wrap(blosc_unshuffle_raw(data, bytesofsize));
    return rcpp_result_gen;
END_RCPP
}
// xxhash_raw
std::string xxhash_raw(SEXP const data);
RcppExport SEXP _qs2_xxhash_raw(SEXP dataSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< SEXP const >::type data(dataSEXP);
    rcpp_result_gen = Rcpp::wrap(xxhash_raw(data));
    return rcpp_result_gen;
END_RCPP
}
// base85_encode
std::string base85_encode(const RawVector& rawdata);
RcppExport SEXP _qs2_base85_encode(SEXP rawdataSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const RawVector& >::type rawdata(rawdataSEXP);
    rcpp_result_gen = Rcpp::wrap(base85_encode(rawdata));
    return rcpp_result_gen;
END_RCPP
}
// base85_decode
RawVector base85_decode(const std::string& encoded_string);
RcppExport SEXP _qs2_base85_decode(SEXP encoded_stringSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type encoded_string(encoded_stringSEXP);
    rcpp_result_gen = Rcpp::wrap(base85_decode(encoded_string));
    return rcpp_result_gen;
END_RCPP
}
// c_base91_encode
std::string c_base91_encode(const RawVector& rawdata);
RcppExport SEXP _qs2_c_base91_encode(SEXP rawdataSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const RawVector& >::type rawdata(rawdataSEXP);
    rcpp_result_gen = Rcpp::wrap(c_base91_encode(rawdata));
    return rcpp_result_gen;
END_RCPP
}
// c_base91_decode
RawVector c_base91_decode(const std::string& encoded_string);
RcppExport SEXP _qs2_c_base91_decode(SEXP encoded_stringSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type encoded_string(encoded_stringSEXP);
    rcpp_result_gen = Rcpp::wrap(c_base91_decode(encoded_string));
    return rcpp_result_gen;
END_RCPP
}
// internal_compute_qx_hash
std::string internal_compute_qx_hash(const std::string& file);
RcppExport SEXP _qs2_internal_compute_qx_hash(SEXP fileSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type file(fileSEXP);
    rcpp_result_gen = Rcpp::wrap(internal_compute_qx_hash(file));
    return rcpp_result_gen;
END_RCPP
}
// internal_write_qx_hash
SEXP internal_write_qx_hash(const std::string& file, const std::string& hash_string);
RcppExport SEXP _qs2_internal_write_qx_hash(SEXP fileSEXP, SEXP hash_stringSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type file(fileSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type hash_string(hash_stringSEXP);
    rcpp_result_gen = Rcpp::wrap(internal_write_qx_hash(file, hash_string));
    return rcpp_result_gen;
END_RCPP
}
// zstd_compress_file
SEXP zstd_compress_file(const std::string& input_file, const std::string& output_file, const int compress_level);
RcppExport SEXP _qs2_zstd_compress_file(SEXP input_fileSEXP, SEXP output_fileSEXP, SEXP compress_levelSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type input_file(input_fileSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type output_file(output_fileSEXP);
    Rcpp::traits::input_parameter< const int >::type compress_level(compress_levelSEXP);
    rcpp_result_gen = Rcpp::wrap(zstd_compress_file(input_file, output_file, compress_level));
    return rcpp_result_gen;
END_RCPP
}
// zstd_decompress_file
SEXP zstd_decompress_file(const std::string& input_file, const std::string& output_file, SEXP max_output_bytes);
RcppExport SEXP _qs2_zstd_decompress_file(SEXP input_fileSEXP, SEXP output_fileSEXP, SEXP max_output_bytesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< const std::string& >::type input_file(input_fileSEXP);
    Rcpp::traits::input_parameter< const std::string& >::type output_file(output_fileSEXP);
    Rcpp::traits::input_parameter< SEXP >::type max_output_bytes(max_output_bytesSEXP);
    rcpp_result_gen = Rcpp::wrap(zstd_decompress_file(input_file, output_file, max_output_bytes));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_qs2_qs2_get_compress_level", (DL_FUNC) &_qs2_qs2_get_compress_level, 0},
    {"_qs2_qs2_set_compress_level", (DL_FUNC) &_qs2_qs2_set_compress_level, 1},
    {"_qs2_qs2_get_shuffle", (DL_FUNC) &_qs2_qs2_get_shuffle, 0},
    {"_qs2_qs2_set_shuffle", (DL_FUNC) &_qs2_qs2_set_shuffle, 1},
    {"_qs2_qs2_get_nthreads", (DL_FUNC) &_qs2_qs2_get_nthreads, 0},
    {"_qs2_qs2_set_nthreads", (DL_FUNC) &_qs2_qs2_set_nthreads, 1},
    {"_qs2_qs2_get_validate_checksum", (DL_FUNC) &_qs2_qs2_get_validate_checksum, 0},
    {"_qs2_qs2_set_validate_checksum", (DL_FUNC) &_qs2_qs2_set_validate_checksum, 1},
    {"_qs2_qs2_get_warn_unsupported_types", (DL_FUNC) &_qs2_qs2_get_warn_unsupported_types, 0},
    {"_qs2_qs2_set_warn_unsupported_types", (DL_FUNC) &_qs2_qs2_set_warn_unsupported_types, 1},
    {"_qs2_qs2_get_use_alt_rep", (DL_FUNC) &_qs2_qs2_get_use_alt_rep, 0},
    {"_qs2_qs2_set_use_alt_rep", (DL_FUNC) &_qs2_qs2_set_use_alt_rep, 1},
    {"_qs2_qs_save", (DL_FUNC) &_qs2_qs_save, 5},
    {"_qs2_qs_serialize", (DL_FUNC) &_qs2_qs_serialize, 4},
    {"_qs2_qs_read", (DL_FUNC) &_qs2_qs_read, 3},
    {"_qs2_qs_deserialize", (DL_FUNC) &_qs2_qs_deserialize, 3},
    {"_qs2_qd_save", (DL_FUNC) &_qs2_qd_save, 6},
    {"_qs2_qd_serialize", (DL_FUNC) &_qs2_qd_serialize, 5},
    {"_qs2_qd_read", (DL_FUNC) &_qs2_qd_read, 4},
    {"_qs2_qd_deserialize", (DL_FUNC) &_qs2_qd_deserialize, 4},
    {"_qs2_qx_dump", (DL_FUNC) &_qs2_qx_dump, 1},
    {"_qs2_check_SIMD", (DL_FUNC) &_qs2_check_SIMD, 0},
    {"_qs2_check_TBB", (DL_FUNC) &_qs2_check_TBB, 0},
    {"_qs2_loaded_in_fork_child", (DL_FUNC) &_qs2_loaded_in_fork_child, 1},
    {"_qs2_internal_is_utf8_locale", (DL_FUNC) &_qs2_internal_is_utf8_locale, 1},
    {"_qs2_zstd_compress_raw", (DL_FUNC) &_qs2_zstd_compress_raw, 2},
    {"_qs2_zstd_decompress_raw", (DL_FUNC) &_qs2_zstd_decompress_raw, 1},
    {"_qs2_zstd_compress_bound", (DL_FUNC) &_qs2_zstd_compress_bound, 1},
    {"_qs2_blosc_shuffle_raw", (DL_FUNC) &_qs2_blosc_shuffle_raw, 2},
    {"_qs2_blosc_unshuffle_raw", (DL_FUNC) &_qs2_blosc_unshuffle_raw, 2},
    {"_qs2_xxhash_raw", (DL_FUNC) &_qs2_xxhash_raw, 1},
    {"_qs2_base85_encode", (DL_FUNC) &_qs2_base85_encode, 1},
    {"_qs2_base85_decode", (DL_FUNC) &_qs2_base85_decode, 1},
    {"_qs2_c_base91_encode", (DL_FUNC) &_qs2_c_base91_encode, 1},
    {"_qs2_c_base91_decode", (DL_FUNC) &_qs2_c_base91_decode, 1},
    {"_qs2_internal_compute_qx_hash", (DL_FUNC) &_qs2_internal_compute_qx_hash, 1},
    {"_qs2_internal_write_qx_hash", (DL_FUNC) &_qs2_internal_write_qx_hash, 2},
    {"_qs2_zstd_compress_file", (DL_FUNC) &_qs2_zstd_compress_file, 3},
    {"_qs2_zstd_decompress_file", (DL_FUNC) &_qs2_zstd_decompress_file, 3},
    {NULL, NULL, 0}
};

void qx_export_functions(DllInfo* dll);
RcppExport void R_init_qs2(DllInfo *dll) {
    R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
    R_useDynamicSymbols(dll, FALSE);
    qx_export_functions(dll);
}
