// 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

// cpp_hex_quantize_ap3
NumericVector cpp_hex_quantize_ap3(double icosa_triangle_x, double icosa_triangle_y, int resolution);
RcppExport SEXP _hexify_cpp_hex_quantize_ap3(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_quantize_ap3(icosa_triangle_x, icosa_triangle_y, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_center_ap3
NumericVector cpp_hex_center_ap3(double i, double j, int resolution);
RcppExport SEXP _hexify_cpp_hex_center_ap3(SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_center_ap3(i, j, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_corners_ap3
List cpp_hex_corners_ap3(double i, double j, int resolution, double hex_radius);
RcppExport SEXP _hexify_cpp_hex_corners_ap3(SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP, SEXP hex_radiusSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< double >::type hex_radius(hex_radiusSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_corners_ap3(i, j, resolution, hex_radius));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_cell_ap3
NumericVector cpp_lonlat_to_cell_ap3(double lon_deg, double lat_deg, int resolution);
RcppExport SEXP _hexify_cpp_lonlat_to_cell_ap3(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_cell_ap3(lon_deg, lat_deg, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_lonlat_ap3
NumericVector cpp_cell_to_lonlat_ap3(int face, double i, double j, int resolution);
RcppExport SEXP _hexify_cpp_cell_to_lonlat_ap3(SEXP faceSEXP, SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_lonlat_ap3(face, i, j, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_quantize_ap4
NumericVector cpp_hex_quantize_ap4(double icosa_triangle_x, double icosa_triangle_y, int resolution);
RcppExport SEXP _hexify_cpp_hex_quantize_ap4(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_quantize_ap4(icosa_triangle_x, icosa_triangle_y, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_center_ap4
NumericVector cpp_hex_center_ap4(double i, double j, int resolution);
RcppExport SEXP _hexify_cpp_hex_center_ap4(SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_center_ap4(i, j, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_corners_ap4
List cpp_hex_corners_ap4(double i, double j, int resolution, double hex_radius);
RcppExport SEXP _hexify_cpp_hex_corners_ap4(SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP, SEXP hex_radiusSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< double >::type hex_radius(hex_radiusSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_corners_ap4(i, j, resolution, hex_radius));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_cell_ap4
NumericVector cpp_lonlat_to_cell_ap4(double lon_deg, double lat_deg, int resolution);
RcppExport SEXP _hexify_cpp_lonlat_to_cell_ap4(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_cell_ap4(lon_deg, lat_deg, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_lonlat_ap4
NumericVector cpp_cell_to_lonlat_ap4(int face, double i, double j, int resolution);
RcppExport SEXP _hexify_cpp_cell_to_lonlat_ap4(SEXP faceSEXP, SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_lonlat_ap4(face, i, j, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_quantize_ap7
NumericVector cpp_hex_quantize_ap7(double icosa_triangle_x, double icosa_triangle_y, int resolution);
RcppExport SEXP _hexify_cpp_hex_quantize_ap7(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_quantize_ap7(icosa_triangle_x, icosa_triangle_y, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_center_ap7
NumericVector cpp_hex_center_ap7(double i, double j, int resolution);
RcppExport SEXP _hexify_cpp_hex_center_ap7(SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_center_ap7(i, j, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_corners_ap7
List cpp_hex_corners_ap7(double i, double j, int resolution, double hex_radius);
RcppExport SEXP _hexify_cpp_hex_corners_ap7(SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP, SEXP hex_radiusSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< double >::type hex_radius(hex_radiusSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_corners_ap7(i, j, resolution, hex_radius));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_cell_ap7
NumericVector cpp_lonlat_to_cell_ap7(double lon_deg, double lat_deg, int resolution);
RcppExport SEXP _hexify_cpp_lonlat_to_cell_ap7(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_cell_ap7(lon_deg, lat_deg, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_lonlat_ap7
NumericVector cpp_cell_to_lonlat_ap7(int face, double i, double j, int resolution);
RcppExport SEXP _hexify_cpp_cell_to_lonlat_ap7(SEXP faceSEXP, SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_lonlat_ap7(face, i, j, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_quantize_mixed
NumericVector cpp_hex_quantize_mixed(double icosa_triangle_x, double icosa_triangle_y, IntegerVector ap_seq);
RcppExport SEXP _hexify_cpp_hex_quantize_mixed(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP ap_seqSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq(ap_seqSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_quantize_mixed(icosa_triangle_x, icosa_triangle_y, ap_seq));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_center_mixed
NumericVector cpp_hex_center_mixed(double i, double j, IntegerVector ap_seq);
RcppExport SEXP _hexify_cpp_hex_center_mixed(SEXP iSEXP, SEXP jSEXP, SEXP ap_seqSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq(ap_seqSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_center_mixed(i, j, ap_seq));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_corners_mixed
List cpp_hex_corners_mixed(double i, double j, IntegerVector ap_seq, double hex_radius);
RcppExport SEXP _hexify_cpp_hex_corners_mixed(SEXP iSEXP, SEXP jSEXP, SEXP ap_seqSEXP, SEXP hex_radiusSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq(ap_seqSEXP);
    Rcpp::traits::input_parameter< double >::type hex_radius(hex_radiusSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_corners_mixed(i, j, ap_seq, hex_radius));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_cell_mixed
NumericVector cpp_lonlat_to_cell_mixed(double lon_deg, double lat_deg, IntegerVector ap_seq);
RcppExport SEXP _hexify_cpp_lonlat_to_cell_mixed(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP ap_seqSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq(ap_seqSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_cell_mixed(lon_deg, lat_deg, ap_seq));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_lonlat_mixed
NumericVector cpp_cell_to_lonlat_mixed(int face, double i, double j, IntegerVector ap_seq);
RcppExport SEXP _hexify_cpp_cell_to_lonlat_mixed(SEXP faceSEXP, SEXP iSEXP, SEXP jSEXP, SEXP ap_seqSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq(ap_seqSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_lonlat_mixed(face, i, j, ap_seq));
    return rcpp_result_gen;
END_RCPP
}
// cpp_test_roundtrip_ap3
bool cpp_test_roundtrip_ap3(double icosa_triangle_x, double icosa_triangle_y, int resolution);
RcppExport SEXP _hexify_cpp_test_roundtrip_ap3(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_test_roundtrip_ap3(icosa_triangle_x, icosa_triangle_y, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_test_roundtrip_ap4
bool cpp_test_roundtrip_ap4(double icosa_triangle_x, double icosa_triangle_y, int resolution);
RcppExport SEXP _hexify_cpp_test_roundtrip_ap4(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_test_roundtrip_ap4(icosa_triangle_x, icosa_triangle_y, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_test_roundtrip_ap7
bool cpp_test_roundtrip_ap7(double icosa_triangle_x, double icosa_triangle_y, int resolution);
RcppExport SEXP _hexify_cpp_test_roundtrip_ap7(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_test_roundtrip_ap7(icosa_triangle_x, icosa_triangle_y, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_test_roundtrip_mixed
bool cpp_test_roundtrip_mixed(double icosa_triangle_x, double icosa_triangle_y, IntegerVector ap_seq);
RcppExport SEXP _hexify_cpp_test_roundtrip_mixed(SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP ap_seqSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq(ap_seqSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_test_roundtrip_mixed(icosa_triangle_x, icosa_triangle_y, ap_seq));
    return rcpp_result_gen;
END_RCPP
}
// cpp_batch_test_roundtrip_ap3
List cpp_batch_test_roundtrip_ap3(NumericVector tx_vec, NumericVector ty_vec, int resolution);
RcppExport SEXP _hexify_cpp_batch_test_roundtrip_ap3(SEXP tx_vecSEXP, SEXP ty_vecSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type tx_vec(tx_vecSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ty_vec(ty_vecSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_batch_test_roundtrip_ap3(tx_vec, ty_vec, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_batch_test_roundtrip_ap4
List cpp_batch_test_roundtrip_ap4(NumericVector tx_vec, NumericVector ty_vec, int resolution);
RcppExport SEXP _hexify_cpp_batch_test_roundtrip_ap4(SEXP tx_vecSEXP, SEXP ty_vecSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type tx_vec(tx_vecSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ty_vec(ty_vecSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_batch_test_roundtrip_ap4(tx_vec, ty_vec, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_batch_test_roundtrip_ap7
List cpp_batch_test_roundtrip_ap7(NumericVector tx_vec, NumericVector ty_vec, int resolution);
RcppExport SEXP _hexify_cpp_batch_test_roundtrip_ap7(SEXP tx_vecSEXP, SEXP ty_vecSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type tx_vec(tx_vecSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ty_vec(ty_vecSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_batch_test_roundtrip_ap7(tx_vec, ty_vec, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_decode_z7
DataFrame cpp_decode_z7(std::string index_body, int aperture);
RcppExport SEXP _hexify_cpp_decode_z7(SEXP index_bodySEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type index_body(index_bodySEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_decode_z7(index_body, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_icosa_tri_to_quad_ij
Rcpp::List cpp_icosa_tri_to_quad_ij(int icosa_triangle_face, double icosa_triangle_x, double icosa_triangle_y, int aperture, int resolution);
RcppExport SEXP _hexify_cpp_icosa_tri_to_quad_ij(SEXP icosa_triangle_faceSEXP, SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP, SEXP apertureSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type icosa_triangle_face(icosa_triangle_faceSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_icosa_tri_to_quad_ij(icosa_triangle_face, icosa_triangle_x, icosa_triangle_y, aperture, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_icosa_tri_to_quad_xy
Rcpp::List cpp_icosa_tri_to_quad_xy(int icosa_triangle_face, double icosa_triangle_x, double icosa_triangle_y);
RcppExport SEXP _hexify_cpp_icosa_tri_to_quad_xy(SEXP icosa_triangle_faceSEXP, SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type icosa_triangle_face(icosa_triangle_faceSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< double >::type icosa_triangle_y(icosa_triangle_ySEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_icosa_tri_to_quad_xy(icosa_triangle_face, icosa_triangle_x, icosa_triangle_y));
    return rcpp_result_gen;
END_RCPP
}
// cpp_quad_xy_to_icosa_tri
Rcpp::List cpp_quad_xy_to_icosa_tri(int quad, double quad_x, double quad_y);
RcppExport SEXP _hexify_cpp_quad_xy_to_icosa_tri(SEXP quadSEXP, SEXP quad_xSEXP, SEXP quad_ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type quad(quadSEXP);
    Rcpp::traits::input_parameter< double >::type quad_x(quad_xSEXP);
    Rcpp::traits::input_parameter< double >::type quad_y(quad_ySEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_quad_xy_to_icosa_tri(quad, quad_x, quad_y));
    return rcpp_result_gen;
END_RCPP
}
// cpp_quad_ij_to_xy
Rcpp::List cpp_quad_ij_to_xy(int quad, double i, double j, int aperture, int resolution);
RcppExport SEXP _hexify_cpp_quad_ij_to_xy(SEXP quadSEXP, SEXP iSEXP, SEXP jSEXP, SEXP apertureSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type quad(quadSEXP);
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_quad_ij_to_xy(quad, i, j, aperture, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_quad_ij
Rcpp::List cpp_lonlat_to_quad_ij(double lon_deg, double lat_deg, int aperture, int resolution);
RcppExport SEXP _hexify_cpp_lonlat_to_quad_ij(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP apertureSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_quad_ij(lon_deg, lat_deg, aperture, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_quad_ij_to_cell
NumericVector cpp_quad_ij_to_cell(IntegerVector quad, NumericVector i, NumericVector j, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_quad_ij_to_cell(SEXP quadSEXP, SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type quad(quadSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type i(iSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_quad_ij_to_cell(quad, i, j, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_cell
NumericVector cpp_lonlat_to_cell(NumericVector lon, NumericVector lat, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_lonlat_to_cell(SEXP lonSEXP, SEXP latSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type lon(lonSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type lat(latSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_cell(lon, lat, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_lonlat
DataFrame cpp_cell_to_lonlat(NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_cell_to_lonlat(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_lonlat(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_quad_ij
DataFrame cpp_cell_to_quad_ij(NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_cell_to_quad_ij(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_quad_ij(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_quad_xy
DataFrame cpp_cell_to_quad_xy(NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_cell_to_quad_xy(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_quad_xy(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_quad_xy_to_cell
NumericVector cpp_quad_xy_to_cell(IntegerVector quad, NumericVector quad_x, NumericVector quad_y, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_quad_xy_to_cell(SEXP quadSEXP, SEXP quad_xSEXP, SEXP quad_ySEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type quad(quadSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type quad_x(quad_xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type quad_y(quad_ySEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_quad_xy_to_cell(quad, quad_x, quad_y, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_icosa_tri
DataFrame cpp_cell_to_icosa_tri(NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_cell_to_icosa_tri(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_icosa_tri(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_quad_ij_to_icosa_tri
DataFrame cpp_quad_ij_to_icosa_tri(IntegerVector quad, NumericVector i, NumericVector j, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_quad_ij_to_icosa_tri(SEXP quadSEXP, SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type quad(quadSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type i(iSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_quad_ij_to_icosa_tri(quad, i, j, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_corners
List cpp_cell_to_corners(NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_cell_to_corners(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_corners(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_polygon
DataFrame cpp_cell_to_polygon(NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_cell_to_polygon(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_polygon(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_ap_seq_edge_dim
double cpp_ap_seq_edge_dim(IntegerVector ap_seq_in);
RcppExport SEXP _hexify_cpp_ap_seq_edge_dim(SEXP ap_seq_inSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq_in(ap_seq_inSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_ap_seq_edge_dim(ap_seq_in));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_cell_seq
NumericVector cpp_lonlat_to_cell_seq(NumericVector lon, NumericVector lat, IntegerVector ap_seq_in);
RcppExport SEXP _hexify_cpp_lonlat_to_cell_seq(SEXP lonSEXP, SEXP latSEXP, SEXP ap_seq_inSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type lon(lonSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type lat(latSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq_in(ap_seq_inSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_cell_seq(lon, lat, ap_seq_in));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_lonlat_seq
DataFrame cpp_cell_to_lonlat_seq(NumericVector cell_id, IntegerVector ap_seq_in);
RcppExport SEXP _hexify_cpp_cell_to_lonlat_seq(SEXP cell_idSEXP, SEXP ap_seq_inSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq_in(ap_seq_inSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_lonlat_seq(cell_id, ap_seq_in));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_quad_ij_seq
DataFrame cpp_cell_to_quad_ij_seq(NumericVector cell_id, IntegerVector ap_seq_in);
RcppExport SEXP _hexify_cpp_cell_to_quad_ij_seq(SEXP cell_idSEXP, SEXP ap_seq_inSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq_in(ap_seq_inSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_quad_ij_seq(cell_id, ap_seq_in));
    return rcpp_result_gen;
END_RCPP
}
// cpp_quad_ij_to_cell_seq
NumericVector cpp_quad_ij_to_cell_seq(IntegerVector quad, NumericVector i, NumericVector j, IntegerVector ap_seq_in);
RcppExport SEXP _hexify_cpp_quad_ij_to_cell_seq(SEXP quadSEXP, SEXP iSEXP, SEXP jSEXP, SEXP ap_seq_inSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type quad(quadSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type i(iSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type j(jSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq_in(ap_seq_inSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_quad_ij_to_cell_seq(quad, i, j, ap_seq_in));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_corners_seq
List cpp_cell_to_corners_seq(NumericVector cell_id, IntegerVector ap_seq_in);
RcppExport SEXP _hexify_cpp_cell_to_corners_seq(SEXP cell_idSEXP, SEXP ap_seq_inSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq_in(ap_seq_inSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_corners_seq(cell_id, ap_seq_in));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_polygon_seq
DataFrame cpp_cell_to_polygon_seq(NumericVector cell_id, IntegerVector ap_seq_in);
RcppExport SEXP _hexify_cpp_cell_to_polygon_seq(SEXP cell_idSEXP, SEXP ap_seq_inSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type ap_seq_in(ap_seq_inSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_polygon_seq(cell_id, ap_seq_in));
    return rcpp_result_gen;
END_RCPP
}
// cpp_get_neighbors_isea
Rcpp::List cpp_get_neighbors_isea(Rcpp::NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_get_neighbors_isea(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_get_neighbors_isea(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_get_neighbors_z7
Rcpp::List cpp_get_neighbors_z7(Rcpp::CharacterVector index_ids, int resolution);
RcppExport SEXP _hexify_cpp_get_neighbors_z7(SEXP index_idsSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type index_ids(index_idsSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_get_neighbors_z7(index_ids, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_icosa_tri_to_plane
DataFrame cpp_icosa_tri_to_plane(IntegerVector icosa_triangle_face, NumericVector icosa_triangle_x, NumericVector icosa_triangle_y);
RcppExport SEXP _hexify_cpp_icosa_tri_to_plane(SEXP icosa_triangle_faceSEXP, SEXP icosa_triangle_xSEXP, SEXP icosa_triangle_ySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< IntegerVector >::type icosa_triangle_face(icosa_triangle_faceSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type icosa_triangle_x(icosa_triangle_xSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type icosa_triangle_y(icosa_triangle_ySEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_icosa_tri_to_plane(icosa_triangle_face, icosa_triangle_x, icosa_triangle_y));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_plane
DataFrame cpp_cell_to_plane(NumericVector cell_id, int resolution, int aperture);
RcppExport SEXP _hexify_cpp_cell_to_plane(SEXP cell_idSEXP, SEXP resolutionSEXP, SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type cell_id(cell_idSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_plane(cell_id, resolution, aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_plane
DataFrame cpp_lonlat_to_plane(NumericVector lon, NumericVector lat);
RcppExport SEXP _hexify_cpp_lonlat_to_plane(SEXP lonSEXP, SEXP latSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type lon(lonSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type lat(latSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_plane(lon, lat));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_latLngToCell
Rcpp::CharacterVector cpp_h3_latLngToCell(Rcpp::NumericVector lon_deg, Rcpp::NumericVector lat_deg, int resolution);
RcppExport SEXP _hexify_cpp_h3_latLngToCell(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_latLngToCell(lon_deg, lat_deg, resolution));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_cellToLatLng
Rcpp::DataFrame cpp_h3_cellToLatLng(Rcpp::CharacterVector cell_ids);
RcppExport SEXP _hexify_cpp_h3_cellToLatLng(SEXP cell_idsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_cellToLatLng(cell_ids));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_isValidCell
Rcpp::LogicalVector cpp_h3_isValidCell(Rcpp::CharacterVector cell_ids);
RcppExport SEXP _hexify_cpp_h3_isValidCell(SEXP cell_idsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_isValidCell(cell_ids));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_cellToParent
Rcpp::CharacterVector cpp_h3_cellToParent(Rcpp::CharacterVector cell_ids, int parent_res);
RcppExport SEXP _hexify_cpp_h3_cellToParent(SEXP cell_idsSEXP, SEXP parent_resSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    Rcpp::traits::input_parameter< int >::type parent_res(parent_resSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_cellToParent(cell_ids, parent_res));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_cellToChildren
Rcpp::List cpp_h3_cellToChildren(Rcpp::CharacterVector cell_ids, int child_res);
RcppExport SEXP _hexify_cpp_h3_cellToChildren(SEXP cell_idsSEXP, SEXP child_resSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    Rcpp::traits::input_parameter< int >::type child_res(child_resSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_cellToChildren(cell_ids, child_res));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_cellToBoundary
Rcpp::List cpp_h3_cellToBoundary(Rcpp::CharacterVector cell_ids);
RcppExport SEXP _hexify_cpp_h3_cellToBoundary(SEXP cell_idsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_cellToBoundary(cell_ids));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_polygonToCells
Rcpp::CharacterVector cpp_h3_polygonToCells(Rcpp::NumericMatrix coords, int resolution, Rcpp::Nullable<Rcpp::List> holes, int flags);
RcppExport SEXP _hexify_cpp_h3_polygonToCells(SEXP coordsSEXP, SEXP resolutionSEXP, SEXP holesSEXP, SEXP flagsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type coords(coordsSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<Rcpp::List> >::type holes(holesSEXP);
    Rcpp::traits::input_parameter< int >::type flags(flagsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_polygonToCells(coords, resolution, holes, flags));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_getResolution
Rcpp::IntegerVector cpp_h3_getResolution(Rcpp::CharacterVector cell_ids);
RcppExport SEXP _hexify_cpp_h3_getResolution(SEXP cell_idsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_getResolution(cell_ids));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_cellAreaKm2
Rcpp::NumericVector cpp_h3_cellAreaKm2(Rcpp::CharacterVector cell_ids);
RcppExport SEXP _hexify_cpp_h3_cellAreaKm2(SEXP cell_idsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_cellAreaKm2(cell_ids));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_gridDisk
Rcpp::List cpp_h3_gridDisk(Rcpp::CharacterVector cell_ids, int k);
RcppExport SEXP _hexify_cpp_h3_gridDisk(SEXP cell_idsSEXP, SEXP kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    Rcpp::traits::input_parameter< int >::type k(kSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_gridDisk(cell_ids, k));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_gridDiskDistances
Rcpp::List cpp_h3_gridDiskDistances(Rcpp::CharacterVector cell_ids, int k);
RcppExport SEXP _hexify_cpp_h3_gridDiskDistances(SEXP cell_idsSEXP, SEXP kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    Rcpp::traits::input_parameter< int >::type k(kSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_gridDiskDistances(cell_ids, k));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_gridRingUnsafe
Rcpp::List cpp_h3_gridRingUnsafe(Rcpp::CharacterVector cell_ids, int k);
RcppExport SEXP _hexify_cpp_h3_gridRingUnsafe(SEXP cell_idsSEXP, SEXP kSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    Rcpp::traits::input_parameter< int >::type k(kSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_gridRingUnsafe(cell_ids, k));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_compactCells
Rcpp::CharacterVector cpp_h3_compactCells(Rcpp::CharacterVector cell_ids);
RcppExport SEXP _hexify_cpp_h3_compactCells(SEXP cell_idsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_compactCells(cell_ids));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_uncompactCells
Rcpp::CharacterVector cpp_h3_uncompactCells(Rcpp::CharacterVector cell_ids, int target_res);
RcppExport SEXP _hexify_cpp_h3_uncompactCells(SEXP cell_idsSEXP, SEXP target_resSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    Rcpp::traits::input_parameter< int >::type target_res(target_resSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_uncompactCells(cell_ids, target_res));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_isPentagon
Rcpp::LogicalVector cpp_h3_isPentagon(Rcpp::CharacterVector cell_ids);
RcppExport SEXP _hexify_cpp_h3_isPentagon(SEXP cell_idsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cell_ids(cell_idsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_isPentagon(cell_ids));
    return rcpp_result_gen;
END_RCPP
}
// cpp_h3_gridDistance
Rcpp::IntegerVector cpp_h3_gridDistance(Rcpp::CharacterVector origin, Rcpp::CharacterVector destination);
RcppExport SEXP _hexify_cpp_h3_gridDistance(SEXP originSEXP, SEXP destinationSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type origin(originSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type destination(destinationSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_h3_gridDistance(origin, destination));
    return rcpp_result_gen;
END_RCPP
}
// cpp_cell_to_index
std::string cpp_cell_to_index(int face, double i, double j, int resolution, int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_cell_to_index(SEXP faceSEXP, SEXP iSEXP, SEXP jSEXP, SEXP resolutionSEXP, SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    Rcpp::traits::input_parameter< double >::type i(iSEXP);
    Rcpp::traits::input_parameter< double >::type j(jSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_cell_to_index(face, i, j, resolution, aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_index_to_cell
Rcpp::List cpp_index_to_cell(std::string index, int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_index_to_cell(SEXP indexSEXP, SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type index(indexSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_index_to_cell(index, aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_get_parent_index
std::string cpp_get_parent_index(std::string index, int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_get_parent_index(SEXP indexSEXP, SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type index(indexSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_get_parent_index(index, aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_get_children_indices
Rcpp::StringVector cpp_get_children_indices(std::string index, int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_get_children_indices(SEXP indexSEXP, SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type index(indexSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_get_children_indices(index, aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_get_index_resolution
int cpp_get_index_resolution(std::string index, int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_get_index_resolution(SEXP indexSEXP, SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type index(indexSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_get_index_resolution(index, aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_compare_indices
int cpp_compare_indices(std::string idx1, std::string idx2);
RcppExport SEXP _hexify_cpp_compare_indices(SEXP idx1SEXP, SEXP idx2SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type idx1(idx1SEXP);
    Rcpp::traits::input_parameter< std::string >::type idx2(idx2SEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_compare_indices(idx1, idx2));
    return rcpp_result_gen;
END_RCPP
}
// cpp_is_valid_index_type
bool cpp_is_valid_index_type(int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_is_valid_index_type(SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_is_valid_index_type(aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_get_default_index_type
std::string cpp_get_default_index_type(int aperture);
RcppExport SEXP _hexify_cpp_get_default_index_type(SEXP apertureSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_get_default_index_type(aperture));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_index_ap3
std::string cpp_lonlat_to_index_ap3(double lon_deg, double lat_deg, int resolution, std::string index_type);
RcppExport SEXP _hexify_cpp_lonlat_to_index_ap3(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_index_ap3(lon_deg, lat_deg, resolution, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_index_ap4
std::string cpp_lonlat_to_index_ap4(double lon_deg, double lat_deg, int resolution, std::string index_type);
RcppExport SEXP _hexify_cpp_lonlat_to_index_ap4(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_index_ap4(lon_deg, lat_deg, resolution, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_index_ap7
std::string cpp_lonlat_to_index_ap7(double lon_deg, double lat_deg, int resolution, std::string index_type);
RcppExport SEXP _hexify_cpp_lonlat_to_index_ap7(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_index_ap7(lon_deg, lat_deg, resolution, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_lonlat_to_index
std::string cpp_lonlat_to_index(double lon_deg, double lat_deg, int resolution, int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_lonlat_to_index(SEXP lon_degSEXP, SEXP lat_degSEXP, SEXP resolutionSEXP, SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    Rcpp::traits::input_parameter< int >::type resolution(resolutionSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_lonlat_to_index(lon_deg, lat_deg, resolution, aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_index_to_lonlat
Rcpp::NumericVector cpp_index_to_lonlat(std::string index, int aperture, std::string index_type);
RcppExport SEXP _hexify_cpp_index_to_lonlat(SEXP indexSEXP, SEXP apertureSEXP, SEXP index_typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type index(indexSEXP);
    Rcpp::traits::input_parameter< int >::type aperture(apertureSEXP);
    Rcpp::traits::input_parameter< std::string >::type index_type(index_typeSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_index_to_lonlat(index, aperture, index_type));
    return rcpp_result_gen;
END_RCPP
}
// cpp_z7_canonical_form
std::string cpp_z7_canonical_form(std::string index, int max_iterations);
RcppExport SEXP _hexify_cpp_z7_canonical_form(SEXP indexSEXP, SEXP max_iterationsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type index(indexSEXP);
    Rcpp::traits::input_parameter< int >::type max_iterations(max_iterationsSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_z7_canonical_form(index, max_iterations));
    return rcpp_result_gen;
END_RCPP
}
// cpp_build_icosa
void cpp_build_icosa(double vert0_lon_deg, double vert0_lat_deg, double azimuth_deg);
RcppExport SEXP _hexify_cpp_build_icosa(SEXP vert0_lon_degSEXP, SEXP vert0_lat_degSEXP, SEXP azimuth_degSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type vert0_lon_deg(vert0_lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type vert0_lat_deg(vert0_lat_degSEXP);
    Rcpp::traits::input_parameter< double >::type azimuth_deg(azimuth_degSEXP);
    cpp_build_icosa(vert0_lon_deg, vert0_lat_deg, azimuth_deg);
    return R_NilValue;
END_RCPP
}
// cpp_which_face
int cpp_which_face(double lon_deg, double lat_deg);
RcppExport SEXP _hexify_cpp_which_face(SEXP lon_degSEXP, SEXP lat_degSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_which_face(lon_deg, lat_deg));
    return rcpp_result_gen;
END_RCPP
}
// cpp_face_centers
DataFrame cpp_face_centers();
RcppExport SEXP _hexify_cpp_face_centers() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(cpp_face_centers());
    return rcpp_result_gen;
END_RCPP
}
// cpp_snyder_forward
NumericVector cpp_snyder_forward(double lon_deg, double lat_deg);
RcppExport SEXP _hexify_cpp_snyder_forward(SEXP lon_degSEXP, SEXP lat_degSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_snyder_forward(lon_deg, lat_deg));
    return rcpp_result_gen;
END_RCPP
}
// cpp_project_to_icosa_triangle
NumericVector cpp_project_to_icosa_triangle(int face, double lon_deg, double lat_deg);
RcppExport SEXP _hexify_cpp_project_to_icosa_triangle(SEXP faceSEXP, SEXP lon_degSEXP, SEXP lat_degSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    Rcpp::traits::input_parameter< double >::type lon_deg(lon_degSEXP);
    Rcpp::traits::input_parameter< double >::type lat_deg(lat_degSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_project_to_icosa_triangle(face, lon_deg, lat_deg));
    return rcpp_result_gen;
END_RCPP
}
// cpp_snyder_inv_set_precision
void cpp_snyder_inv_set_precision(std::string mode, Rcpp::Nullable<double> tol, Rcpp::Nullable<int> max_iters);
RcppExport SEXP _hexify_cpp_snyder_inv_set_precision(SEXP modeSEXP, SEXP tolSEXP, SEXP max_itersSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type mode(modeSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<double> >::type tol(tolSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type max_iters(max_itersSEXP);
    cpp_snyder_inv_set_precision(mode, tol, max_iters);
    return R_NilValue;
END_RCPP
}
// cpp_snyder_inv_get_precision
Rcpp::NumericVector cpp_snyder_inv_get_precision();
RcppExport SEXP _hexify_cpp_snyder_inv_get_precision() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(cpp_snyder_inv_get_precision());
    return rcpp_result_gen;
END_RCPP
}
// cpp_snyder_inv_set_verbose
void cpp_snyder_inv_set_verbose(bool v);
RcppExport SEXP _hexify_cpp_snyder_inv_set_verbose(SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< bool >::type v(vSEXP);
    cpp_snyder_inv_set_verbose(v);
    return R_NilValue;
END_RCPP
}
// cpp_snyder_inv_get_stats_and_reset
Rcpp::IntegerVector cpp_snyder_inv_get_stats_and_reset();
RcppExport SEXP _hexify_cpp_snyder_inv_get_stats_and_reset() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(cpp_snyder_inv_get_stats_and_reset());
    return rcpp_result_gen;
END_RCPP
}
// cpp_face_xy_to_ll
Rcpp::NumericVector cpp_face_xy_to_ll(double x, double y, int face, Rcpp::Nullable<double> tol, Rcpp::Nullable<int> max_iters);
RcppExport SEXP _hexify_cpp_face_xy_to_ll(SEXP xSEXP, SEXP ySEXP, SEXP faceSEXP, SEXP tolSEXP, SEXP max_itersSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type x(xSEXP);
    Rcpp::traits::input_parameter< double >::type y(ySEXP);
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<double> >::type tol(tolSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type max_iters(max_itersSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_face_xy_to_ll(x, y, face, tol, max_iters));
    return rcpp_result_gen;
END_RCPP
}
// cpp_icosa_face_params
Rcpp::NumericVector cpp_icosa_face_params(int face);
RcppExport SEXP _hexify_cpp_icosa_face_params(SEXP faceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type face(faceSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_icosa_face_params(face));
    return rcpp_result_gen;
END_RCPP
}
// cpp_hex_index_face_to_lonlat
Rcpp::NumericVector cpp_hex_index_face_to_lonlat(double x, double y, double cen_lat, double cen_lon, double face_azimuth_offset, bool degrees, Rcpp::Nullable<double> tol, Rcpp::Nullable<int> max_iters);
RcppExport SEXP _hexify_cpp_hex_index_face_to_lonlat(SEXP xSEXP, SEXP ySEXP, SEXP cen_latSEXP, SEXP cen_lonSEXP, SEXP face_azimuth_offsetSEXP, SEXP degreesSEXP, SEXP tolSEXP, SEXP max_itersSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< double >::type x(xSEXP);
    Rcpp::traits::input_parameter< double >::type y(ySEXP);
    Rcpp::traits::input_parameter< double >::type cen_lat(cen_latSEXP);
    Rcpp::traits::input_parameter< double >::type cen_lon(cen_lonSEXP);
    Rcpp::traits::input_parameter< double >::type face_azimuth_offset(face_azimuth_offsetSEXP);
    Rcpp::traits::input_parameter< bool >::type degrees(degreesSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<double> >::type tol(tolSEXP);
    Rcpp::traits::input_parameter< Rcpp::Nullable<int> >::type max_iters(max_itersSEXP);
    rcpp_result_gen = Rcpp::wrap(cpp_hex_index_face_to_lonlat(x, y, cen_lat, cen_lon, face_azimuth_offset, degrees, tol, max_iters));
    return rcpp_result_gen;
END_RCPP
}

static const R_CallMethodDef CallEntries[] = {
    {"_hexify_cpp_hex_quantize_ap3", (DL_FUNC) &_hexify_cpp_hex_quantize_ap3, 3},
    {"_hexify_cpp_hex_center_ap3", (DL_FUNC) &_hexify_cpp_hex_center_ap3, 3},
    {"_hexify_cpp_hex_corners_ap3", (DL_FUNC) &_hexify_cpp_hex_corners_ap3, 4},
    {"_hexify_cpp_lonlat_to_cell_ap3", (DL_FUNC) &_hexify_cpp_lonlat_to_cell_ap3, 3},
    {"_hexify_cpp_cell_to_lonlat_ap3", (DL_FUNC) &_hexify_cpp_cell_to_lonlat_ap3, 4},
    {"_hexify_cpp_hex_quantize_ap4", (DL_FUNC) &_hexify_cpp_hex_quantize_ap4, 3},
    {"_hexify_cpp_hex_center_ap4", (DL_FUNC) &_hexify_cpp_hex_center_ap4, 3},
    {"_hexify_cpp_hex_corners_ap4", (DL_FUNC) &_hexify_cpp_hex_corners_ap4, 4},
    {"_hexify_cpp_lonlat_to_cell_ap4", (DL_FUNC) &_hexify_cpp_lonlat_to_cell_ap4, 3},
    {"_hexify_cpp_cell_to_lonlat_ap4", (DL_FUNC) &_hexify_cpp_cell_to_lonlat_ap4, 4},
    {"_hexify_cpp_hex_quantize_ap7", (DL_FUNC) &_hexify_cpp_hex_quantize_ap7, 3},
    {"_hexify_cpp_hex_center_ap7", (DL_FUNC) &_hexify_cpp_hex_center_ap7, 3},
    {"_hexify_cpp_hex_corners_ap7", (DL_FUNC) &_hexify_cpp_hex_corners_ap7, 4},
    {"_hexify_cpp_lonlat_to_cell_ap7", (DL_FUNC) &_hexify_cpp_lonlat_to_cell_ap7, 3},
    {"_hexify_cpp_cell_to_lonlat_ap7", (DL_FUNC) &_hexify_cpp_cell_to_lonlat_ap7, 4},
    {"_hexify_cpp_hex_quantize_mixed", (DL_FUNC) &_hexify_cpp_hex_quantize_mixed, 3},
    {"_hexify_cpp_hex_center_mixed", (DL_FUNC) &_hexify_cpp_hex_center_mixed, 3},
    {"_hexify_cpp_hex_corners_mixed", (DL_FUNC) &_hexify_cpp_hex_corners_mixed, 4},
    {"_hexify_cpp_lonlat_to_cell_mixed", (DL_FUNC) &_hexify_cpp_lonlat_to_cell_mixed, 3},
    {"_hexify_cpp_cell_to_lonlat_mixed", (DL_FUNC) &_hexify_cpp_cell_to_lonlat_mixed, 4},
    {"_hexify_cpp_test_roundtrip_ap3", (DL_FUNC) &_hexify_cpp_test_roundtrip_ap3, 3},
    {"_hexify_cpp_test_roundtrip_ap4", (DL_FUNC) &_hexify_cpp_test_roundtrip_ap4, 3},
    {"_hexify_cpp_test_roundtrip_ap7", (DL_FUNC) &_hexify_cpp_test_roundtrip_ap7, 3},
    {"_hexify_cpp_test_roundtrip_mixed", (DL_FUNC) &_hexify_cpp_test_roundtrip_mixed, 3},
    {"_hexify_cpp_batch_test_roundtrip_ap3", (DL_FUNC) &_hexify_cpp_batch_test_roundtrip_ap3, 3},
    {"_hexify_cpp_batch_test_roundtrip_ap4", (DL_FUNC) &_hexify_cpp_batch_test_roundtrip_ap4, 3},
    {"_hexify_cpp_batch_test_roundtrip_ap7", (DL_FUNC) &_hexify_cpp_batch_test_roundtrip_ap7, 3},
    {"_hexify_cpp_decode_z7", (DL_FUNC) &_hexify_cpp_decode_z7, 2},
    {"_hexify_cpp_icosa_tri_to_quad_ij", (DL_FUNC) &_hexify_cpp_icosa_tri_to_quad_ij, 5},
    {"_hexify_cpp_icosa_tri_to_quad_xy", (DL_FUNC) &_hexify_cpp_icosa_tri_to_quad_xy, 3},
    {"_hexify_cpp_quad_xy_to_icosa_tri", (DL_FUNC) &_hexify_cpp_quad_xy_to_icosa_tri, 3},
    {"_hexify_cpp_quad_ij_to_xy", (DL_FUNC) &_hexify_cpp_quad_ij_to_xy, 5},
    {"_hexify_cpp_lonlat_to_quad_ij", (DL_FUNC) &_hexify_cpp_lonlat_to_quad_ij, 4},
    {"_hexify_cpp_quad_ij_to_cell", (DL_FUNC) &_hexify_cpp_quad_ij_to_cell, 5},
    {"_hexify_cpp_lonlat_to_cell", (DL_FUNC) &_hexify_cpp_lonlat_to_cell, 4},
    {"_hexify_cpp_cell_to_lonlat", (DL_FUNC) &_hexify_cpp_cell_to_lonlat, 3},
    {"_hexify_cpp_cell_to_quad_ij", (DL_FUNC) &_hexify_cpp_cell_to_quad_ij, 3},
    {"_hexify_cpp_cell_to_quad_xy", (DL_FUNC) &_hexify_cpp_cell_to_quad_xy, 3},
    {"_hexify_cpp_quad_xy_to_cell", (DL_FUNC) &_hexify_cpp_quad_xy_to_cell, 5},
    {"_hexify_cpp_cell_to_icosa_tri", (DL_FUNC) &_hexify_cpp_cell_to_icosa_tri, 3},
    {"_hexify_cpp_quad_ij_to_icosa_tri", (DL_FUNC) &_hexify_cpp_quad_ij_to_icosa_tri, 5},
    {"_hexify_cpp_cell_to_corners", (DL_FUNC) &_hexify_cpp_cell_to_corners, 3},
    {"_hexify_cpp_cell_to_polygon", (DL_FUNC) &_hexify_cpp_cell_to_polygon, 3},
    {"_hexify_cpp_ap_seq_edge_dim", (DL_FUNC) &_hexify_cpp_ap_seq_edge_dim, 1},
    {"_hexify_cpp_lonlat_to_cell_seq", (DL_FUNC) &_hexify_cpp_lonlat_to_cell_seq, 3},
    {"_hexify_cpp_cell_to_lonlat_seq", (DL_FUNC) &_hexify_cpp_cell_to_lonlat_seq, 2},
    {"_hexify_cpp_cell_to_quad_ij_seq", (DL_FUNC) &_hexify_cpp_cell_to_quad_ij_seq, 2},
    {"_hexify_cpp_quad_ij_to_cell_seq", (DL_FUNC) &_hexify_cpp_quad_ij_to_cell_seq, 4},
    {"_hexify_cpp_cell_to_corners_seq", (DL_FUNC) &_hexify_cpp_cell_to_corners_seq, 2},
    {"_hexify_cpp_cell_to_polygon_seq", (DL_FUNC) &_hexify_cpp_cell_to_polygon_seq, 2},
    {"_hexify_cpp_get_neighbors_isea", (DL_FUNC) &_hexify_cpp_get_neighbors_isea, 3},
    {"_hexify_cpp_get_neighbors_z7", (DL_FUNC) &_hexify_cpp_get_neighbors_z7, 2},
    {"_hexify_cpp_icosa_tri_to_plane", (DL_FUNC) &_hexify_cpp_icosa_tri_to_plane, 3},
    {"_hexify_cpp_cell_to_plane", (DL_FUNC) &_hexify_cpp_cell_to_plane, 3},
    {"_hexify_cpp_lonlat_to_plane", (DL_FUNC) &_hexify_cpp_lonlat_to_plane, 2},
    {"_hexify_cpp_h3_latLngToCell", (DL_FUNC) &_hexify_cpp_h3_latLngToCell, 3},
    {"_hexify_cpp_h3_cellToLatLng", (DL_FUNC) &_hexify_cpp_h3_cellToLatLng, 1},
    {"_hexify_cpp_h3_isValidCell", (DL_FUNC) &_hexify_cpp_h3_isValidCell, 1},
    {"_hexify_cpp_h3_cellToParent", (DL_FUNC) &_hexify_cpp_h3_cellToParent, 2},
    {"_hexify_cpp_h3_cellToChildren", (DL_FUNC) &_hexify_cpp_h3_cellToChildren, 2},
    {"_hexify_cpp_h3_cellToBoundary", (DL_FUNC) &_hexify_cpp_h3_cellToBoundary, 1},
    {"_hexify_cpp_h3_polygonToCells", (DL_FUNC) &_hexify_cpp_h3_polygonToCells, 4},
    {"_hexify_cpp_h3_getResolution", (DL_FUNC) &_hexify_cpp_h3_getResolution, 1},
    {"_hexify_cpp_h3_cellAreaKm2", (DL_FUNC) &_hexify_cpp_h3_cellAreaKm2, 1},
    {"_hexify_cpp_h3_gridDisk", (DL_FUNC) &_hexify_cpp_h3_gridDisk, 2},
    {"_hexify_cpp_h3_gridDiskDistances", (DL_FUNC) &_hexify_cpp_h3_gridDiskDistances, 2},
    {"_hexify_cpp_h3_gridRingUnsafe", (DL_FUNC) &_hexify_cpp_h3_gridRingUnsafe, 2},
    {"_hexify_cpp_h3_compactCells", (DL_FUNC) &_hexify_cpp_h3_compactCells, 1},
    {"_hexify_cpp_h3_uncompactCells", (DL_FUNC) &_hexify_cpp_h3_uncompactCells, 2},
    {"_hexify_cpp_h3_isPentagon", (DL_FUNC) &_hexify_cpp_h3_isPentagon, 1},
    {"_hexify_cpp_h3_gridDistance", (DL_FUNC) &_hexify_cpp_h3_gridDistance, 2},
    {"_hexify_cpp_cell_to_index", (DL_FUNC) &_hexify_cpp_cell_to_index, 6},
    {"_hexify_cpp_index_to_cell", (DL_FUNC) &_hexify_cpp_index_to_cell, 3},
    {"_hexify_cpp_get_parent_index", (DL_FUNC) &_hexify_cpp_get_parent_index, 3},
    {"_hexify_cpp_get_children_indices", (DL_FUNC) &_hexify_cpp_get_children_indices, 3},
    {"_hexify_cpp_get_index_resolution", (DL_FUNC) &_hexify_cpp_get_index_resolution, 3},
    {"_hexify_cpp_compare_indices", (DL_FUNC) &_hexify_cpp_compare_indices, 2},
    {"_hexify_cpp_is_valid_index_type", (DL_FUNC) &_hexify_cpp_is_valid_index_type, 2},
    {"_hexify_cpp_get_default_index_type", (DL_FUNC) &_hexify_cpp_get_default_index_type, 1},
    {"_hexify_cpp_lonlat_to_index_ap3", (DL_FUNC) &_hexify_cpp_lonlat_to_index_ap3, 4},
    {"_hexify_cpp_lonlat_to_index_ap4", (DL_FUNC) &_hexify_cpp_lonlat_to_index_ap4, 4},
    {"_hexify_cpp_lonlat_to_index_ap7", (DL_FUNC) &_hexify_cpp_lonlat_to_index_ap7, 4},
    {"_hexify_cpp_lonlat_to_index", (DL_FUNC) &_hexify_cpp_lonlat_to_index, 5},
    {"_hexify_cpp_index_to_lonlat", (DL_FUNC) &_hexify_cpp_index_to_lonlat, 3},
    {"_hexify_cpp_z7_canonical_form", (DL_FUNC) &_hexify_cpp_z7_canonical_form, 2},
    {"_hexify_cpp_build_icosa", (DL_FUNC) &_hexify_cpp_build_icosa, 3},
    {"_hexify_cpp_which_face", (DL_FUNC) &_hexify_cpp_which_face, 2},
    {"_hexify_cpp_face_centers", (DL_FUNC) &_hexify_cpp_face_centers, 0},
    {"_hexify_cpp_snyder_forward", (DL_FUNC) &_hexify_cpp_snyder_forward, 2},
    {"_hexify_cpp_project_to_icosa_triangle", (DL_FUNC) &_hexify_cpp_project_to_icosa_triangle, 3},
    {"_hexify_cpp_snyder_inv_set_precision", (DL_FUNC) &_hexify_cpp_snyder_inv_set_precision, 3},
    {"_hexify_cpp_snyder_inv_get_precision", (DL_FUNC) &_hexify_cpp_snyder_inv_get_precision, 0},
    {"_hexify_cpp_snyder_inv_set_verbose", (DL_FUNC) &_hexify_cpp_snyder_inv_set_verbose, 1},
    {"_hexify_cpp_snyder_inv_get_stats_and_reset", (DL_FUNC) &_hexify_cpp_snyder_inv_get_stats_and_reset, 0},
    {"_hexify_cpp_face_xy_to_ll", (DL_FUNC) &_hexify_cpp_face_xy_to_ll, 5},
    {"_hexify_cpp_icosa_face_params", (DL_FUNC) &_hexify_cpp_icosa_face_params, 1},
    {"_hexify_cpp_hex_index_face_to_lonlat", (DL_FUNC) &_hexify_cpp_hex_index_face_to_lonlat, 8},
    {NULL, NULL, 0}
};

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