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

#include "../inst/include/sf.h"
#include <Rcpp.h>
#include <string>
#include <set>

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

// CPL_get_bbox
Rcpp::NumericVector CPL_get_bbox(Rcpp::List sf, int depth);
RcppExport SEXP _sf_CPL_get_bbox(SEXP sfSEXP, SEXP depthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sf(sfSEXP);
    Rcpp::traits::input_parameter< int >::type depth(depthSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_bbox(sf, depth));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdal_init
void CPL_gdal_init();
RcppExport SEXP _sf_CPL_gdal_init() {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    CPL_gdal_init();
    return R_NilValue;
END_RCPP
}
// CPL_gdal_cleanup_all
void CPL_gdal_cleanup_all();
RcppExport SEXP _sf_CPL_gdal_cleanup_all() {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    CPL_gdal_cleanup_all();
    return R_NilValue;
END_RCPP
}
// CPL_gdal_version
const char* CPL_gdal_version(const char* what);
RcppExport SEXP _sf_CPL_gdal_version(SEXP whatSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< const char* >::type what(whatSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdal_version(what));
    return rcpp_result_gen;
END_RCPP
}
// CPL_crs_parameters
Rcpp::List CPL_crs_parameters(Rcpp::List crs);
RcppExport SEXP _sf_CPL_crs_parameters(SEXP crsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type crs(crsSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_crs_parameters(crs));
    return rcpp_result_gen;
END_RCPP
}
// CPL_crs_equivalent
Rcpp::LogicalVector CPL_crs_equivalent(Rcpp::List crs1, Rcpp::List crs2);
RcppExport SEXP _sf_CPL_crs_equivalent(SEXP crs1SEXP, SEXP crs2SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type crs1(crs1SEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type crs2(crs2SEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_crs_equivalent(crs1, crs2));
    return rcpp_result_gen;
END_RCPP
}
// CPL_crs_from_input
Rcpp::List CPL_crs_from_input(Rcpp::CharacterVector input);
RcppExport SEXP _sf_CPL_crs_from_input(SEXP inputSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type input(inputSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_crs_from_input(input));
    return rcpp_result_gen;
END_RCPP
}
// CPL_roundtrip
Rcpp::List CPL_roundtrip(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_roundtrip(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_roundtrip(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_circularstring_to_linestring
Rcpp::List CPL_circularstring_to_linestring(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_circularstring_to_linestring(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_circularstring_to_linestring(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_multisurface_to_multipolygon
Rcpp::List CPL_multisurface_to_multipolygon(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_multisurface_to_multipolygon(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_multisurface_to_multipolygon(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_compoundcurve_to_linear
Rcpp::List CPL_compoundcurve_to_linear(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_compoundcurve_to_linear(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_compoundcurve_to_linear(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_curve_to_linestring
Rcpp::List CPL_curve_to_linestring(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_curve_to_linestring(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_curve_to_linestring(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_transform
Rcpp::List CPL_transform(Rcpp::List sfc, Rcpp::List crs, Rcpp::NumericVector AOI, Rcpp::CharacterVector pipeline, bool reverse, double desired_accuracy, bool allow_ballpark);
RcppExport SEXP _sf_CPL_transform(SEXP sfcSEXP, SEXP crsSEXP, SEXP AOISEXP, SEXP pipelineSEXP, SEXP reverseSEXP, SEXP desired_accuracySEXP, SEXP allow_ballparkSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type crs(crsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type AOI(AOISEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type pipeline(pipelineSEXP);
    Rcpp::traits::input_parameter< bool >::type reverse(reverseSEXP);
    Rcpp::traits::input_parameter< double >::type desired_accuracy(desired_accuracySEXP);
    Rcpp::traits::input_parameter< bool >::type allow_ballpark(allow_ballparkSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_transform(sfc, crs, AOI, pipeline, reverse, desired_accuracy, allow_ballpark));
    return rcpp_result_gen;
END_RCPP
}
// CPL_wrap_dateline
Rcpp::List CPL_wrap_dateline(Rcpp::List sfc, Rcpp::CharacterVector opt, bool quiet);
RcppExport SEXP _sf_CPL_wrap_dateline(SEXP sfcSEXP, SEXP optSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type opt(optSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_wrap_dateline(sfc, opt, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_gdal_drivers
Rcpp::List CPL_get_gdal_drivers(int dummy);
RcppExport SEXP _sf_CPL_get_gdal_drivers(SEXP dummySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type dummy(dummySEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_gdal_drivers(dummy));
    return rcpp_result_gen;
END_RCPP
}
// CPL_sfc_from_wkt
Rcpp::List CPL_sfc_from_wkt(Rcpp::CharacterVector wkt);
RcppExport SEXP _sf_CPL_sfc_from_wkt(SEXP wktSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type wkt(wktSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_sfc_from_wkt(wkt));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdal_with_geos
Rcpp::LogicalVector CPL_gdal_with_geos();
RcppExport SEXP _sf_CPL_gdal_with_geos() {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    rcpp_result_gen = Rcpp::wrap(CPL_gdal_with_geos());
    return rcpp_result_gen;
END_RCPP
}
// CPL_axis_order_authority_compliant
Rcpp::LogicalVector CPL_axis_order_authority_compliant(Rcpp::LogicalVector authority_compliant);
RcppExport SEXP _sf_CPL_axis_order_authority_compliant(SEXP authority_compliantSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::LogicalVector >::type authority_compliant(authority_compliantSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_axis_order_authority_compliant(authority_compliant));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_proj_search_paths
Rcpp::CharacterVector CPL_get_proj_search_paths(Rcpp::CharacterVector paths);
RcppExport SEXP _sf_CPL_get_proj_search_paths(SEXP pathsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type paths(pathsSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_proj_search_paths(paths));
    return rcpp_result_gen;
END_RCPP
}
// CPL_set_proj_search_paths
Rcpp::CharacterVector CPL_set_proj_search_paths(Rcpp::CharacterVector paths);
RcppExport SEXP _sf_CPL_set_proj_search_paths(SEXP pathsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type paths(pathsSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_set_proj_search_paths(paths));
    return rcpp_result_gen;
END_RCPP
}
// CPL_area
Rcpp::NumericVector CPL_area(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_area(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_area(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdal_dimension
Rcpp::IntegerVector CPL_gdal_dimension(Rcpp::List sfc, bool NA_if_empty);
RcppExport SEXP _sf_CPL_gdal_dimension(SEXP sfcSEXP, SEXP NA_if_emptySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< bool >::type NA_if_empty(NA_if_emptySEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdal_dimension(sfc, NA_if_empty));
    return rcpp_result_gen;
END_RCPP
}
// CPL_length
Rcpp::NumericVector CPL_length(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_length(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_length(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdal_segmentize
Rcpp::List CPL_gdal_segmentize(Rcpp::List sfc, double dfMaxLength);
RcppExport SEXP _sf_CPL_gdal_segmentize(SEXP sfcSEXP, SEXP dfMaxLengthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< double >::type dfMaxLength(dfMaxLengthSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdal_segmentize(sfc, dfMaxLength));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdal_linestring_sample
Rcpp::List CPL_gdal_linestring_sample(Rcpp::List sfc, Rcpp::List distLst);
RcppExport SEXP _sf_CPL_gdal_linestring_sample(SEXP sfcSEXP, SEXP distLstSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type distLst(distLstSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdal_linestring_sample(sfc, distLst));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_layers
Rcpp::List CPL_get_layers(Rcpp::CharacterVector datasource, Rcpp::CharacterVector options, bool do_count);
RcppExport SEXP _sf_CPL_get_layers(SEXP datasourceSEXP, SEXP optionsSEXP, SEXP do_countSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type datasource(datasourceSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< bool >::type do_count(do_countSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_layers(datasource, options, do_count));
    return rcpp_result_gen;
END_RCPP
}
// CPL_read_ogr
Rcpp::List CPL_read_ogr(Rcpp::CharacterVector datasource, Rcpp::CharacterVector layer, Rcpp::CharacterVector query, Rcpp::CharacterVector options, bool quiet, Rcpp::NumericVector toTypeUser, Rcpp::CharacterVector fid_column_name, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool promote_to_multi, bool int64_as_string, bool dsn_exists, bool dsn_isdb, int width);
RcppExport SEXP _sf_CPL_read_ogr(SEXP datasourceSEXP, SEXP layerSEXP, SEXP querySEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP toTypeUserSEXP, SEXP fid_column_nameSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP promote_to_multiSEXP, SEXP int64_as_stringSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP widthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type datasource(datasourceSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type layer(layerSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type query(querySEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type toTypeUser(toTypeUserSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type drivers(driversSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type wkt_filter(wkt_filterSEXP);
    Rcpp::traits::input_parameter< bool >::type promote_to_multi(promote_to_multiSEXP);
    Rcpp::traits::input_parameter< bool >::type int64_as_string(int64_as_stringSEXP);
    Rcpp::traits::input_parameter< bool >::type dsn_exists(dsn_existsSEXP);
    Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP);
    Rcpp::traits::input_parameter< int >::type width(widthSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_read_ogr(datasource, layer, query, options, quiet, toTypeUser, fid_column_name, drivers, wkt_filter, promote_to_multi, int64_as_string, dsn_exists, dsn_isdb, width));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalinfo
Rcpp::CharacterVector CPL_gdalinfo(Rcpp::CharacterVector obj, Rcpp::CharacterVector options, Rcpp::CharacterVector oo);
RcppExport SEXP _sf_CPL_gdalinfo(SEXP objSEXP, SEXP optionsSEXP, SEXP ooSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type obj(objSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalinfo(obj, options, oo));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdaladdo
Rcpp::LogicalVector CPL_gdaladdo(Rcpp::CharacterVector obj, Rcpp::CharacterVector method, Rcpp::IntegerVector overviews, Rcpp::IntegerVector bands, Rcpp::CharacterVector oo, bool clean, bool read_only);
RcppExport SEXP _sf_CPL_gdaladdo(SEXP objSEXP, SEXP methodSEXP, SEXP overviewsSEXP, SEXP bandsSEXP, SEXP ooSEXP, SEXP cleanSEXP, SEXP read_onlySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type obj(objSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type method(methodSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type overviews(overviewsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type bands(bandsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< bool >::type clean(cleanSEXP);
    Rcpp::traits::input_parameter< bool >::type read_only(read_onlySEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdaladdo(obj, method, overviews, bands, oo, clean, read_only));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalwarp
Rcpp::LogicalVector CPL_gdalwarp(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, Rcpp::CharacterVector doo, bool quiet, bool overwrite);
RcppExport SEXP _sf_CPL_gdalwarp(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP dooSEXP, SEXP quietSEXP, SEXP overwriteSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type doo(dooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    Rcpp::traits::input_parameter< bool >::type overwrite(overwriteSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalwarp(src, dst, options, oo, doo, quiet, overwrite));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalrasterize
Rcpp::LogicalVector CPL_gdalrasterize(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, Rcpp::CharacterVector doo, bool overwrite, bool quiet);
RcppExport SEXP _sf_CPL_gdalrasterize(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP dooSEXP, SEXP overwriteSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type doo(dooSEXP);
    Rcpp::traits::input_parameter< bool >::type overwrite(overwriteSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalrasterize(src, dst, options, oo, doo, overwrite, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdaltranslate
Rcpp::LogicalVector CPL_gdaltranslate(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, bool quiet);
RcppExport SEXP _sf_CPL_gdaltranslate(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdaltranslate(src, dst, options, oo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalvectortranslate
Rcpp::LogicalVector CPL_gdalvectortranslate(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, Rcpp::CharacterVector doo, bool quiet);
RcppExport SEXP _sf_CPL_gdalvectortranslate(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP dooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type doo(dooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalvectortranslate(src, dst, options, oo, doo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalbuildvrt
Rcpp::LogicalVector CPL_gdalbuildvrt(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, bool quiet);
RcppExport SEXP _sf_CPL_gdalbuildvrt(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalbuildvrt(src, dst, options, oo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdaldemprocessing
Rcpp::LogicalVector CPL_gdaldemprocessing(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector processing, Rcpp::CharacterVector colorfilename, Rcpp::CharacterVector oo, bool quiet);
RcppExport SEXP _sf_CPL_gdaldemprocessing(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP processingSEXP, SEXP colorfilenameSEXP, SEXP ooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type processing(processingSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type colorfilename(colorfilenameSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdaldemprocessing(src, dst, options, processing, colorfilename, oo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalnearblack
Rcpp::LogicalVector CPL_gdalnearblack(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, Rcpp::CharacterVector doo, bool quiet);
RcppExport SEXP _sf_CPL_gdalnearblack(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP dooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type doo(dooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalnearblack(src, dst, options, oo, doo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalgrid
Rcpp::LogicalVector CPL_gdalgrid(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, bool quiet);
RcppExport SEXP _sf_CPL_gdalgrid(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalgrid(src, dst, options, oo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalmdiminfo
Rcpp::CharacterVector CPL_gdalmdiminfo(Rcpp::CharacterVector obj, Rcpp::CharacterVector options, Rcpp::CharacterVector oo);
RcppExport SEXP _sf_CPL_gdalmdiminfo(SEXP objSEXP, SEXP optionsSEXP, SEXP ooSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type obj(objSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalmdiminfo(obj, options, oo));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdalmdimtranslate
Rcpp::LogicalVector CPL_gdalmdimtranslate(Rcpp::CharacterVector src, Rcpp::CharacterVector dst, Rcpp::CharacterVector options, Rcpp::CharacterVector oo, bool quiet);
RcppExport SEXP _sf_CPL_gdalmdimtranslate(SEXP srcSEXP, SEXP dstSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type src(srcSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dst(dstSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdalmdimtranslate(src, dst, options, oo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_gdal_warper
Rcpp::LogicalVector CPL_gdal_warper(Rcpp::CharacterVector infile, Rcpp::CharacterVector outfile, Rcpp::IntegerVector options, Rcpp::CharacterVector oo, Rcpp::CharacterVector doo, bool quiet);
RcppExport SEXP _sf_CPL_gdal_warper(SEXP infileSEXP, SEXP outfileSEXP, SEXP optionsSEXP, SEXP ooSEXP, SEXP dooSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type infile(infileSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type outfile(outfileSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type doo(dooSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_gdal_warper(infile, outfile, options, oo, doo, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_write_ogr
int CPL_write_ogr(Rcpp::List obj, Rcpp::CharacterVector dsn, Rcpp::CharacterVector layer, Rcpp::CharacterVector driver, Rcpp::CharacterVector dco, Rcpp::CharacterVector lco, Rcpp::List geom, Rcpp::CharacterVector dim, Rcpp::CharacterVector fids, Rcpp::CharacterVector ConfigOptions, bool quiet, Rcpp::LogicalVector append, bool delete_dsn, bool delete_layer, bool write_geometries, int width);
RcppExport SEXP _sf_CPL_write_ogr(SEXP objSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP driverSEXP, SEXP dcoSEXP, SEXP lcoSEXP, SEXP geomSEXP, SEXP dimSEXP, SEXP fidsSEXP, SEXP ConfigOptionsSEXP, SEXP quietSEXP, SEXP appendSEXP, SEXP delete_dsnSEXP, SEXP delete_layerSEXP, SEXP write_geometriesSEXP, SEXP widthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type obj(objSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dsn(dsnSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type layer(layerSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type driver(driverSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dco(dcoSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type lco(lcoSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type geom(geomSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fids(fidsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type ConfigOptions(ConfigOptionsSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    Rcpp::traits::input_parameter< Rcpp::LogicalVector >::type append(appendSEXP);
    Rcpp::traits::input_parameter< bool >::type delete_dsn(delete_dsnSEXP);
    Rcpp::traits::input_parameter< bool >::type delete_layer(delete_layerSEXP);
    Rcpp::traits::input_parameter< bool >::type write_geometries(write_geometriesSEXP);
    Rcpp::traits::input_parameter< int >::type width(widthSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_write_ogr(obj, dsn, layer, driver, dco, lco, geom, dim, fids, ConfigOptions, quiet, append, delete_dsn, delete_layer, write_geometries, width));
    return rcpp_result_gen;
END_RCPP
}
// CPL_delete_ogr
int CPL_delete_ogr(Rcpp::CharacterVector dsn, Rcpp::CharacterVector layer, Rcpp::CharacterVector driver, bool quiet);
RcppExport SEXP _sf_CPL_delete_ogr(SEXP dsnSEXP, SEXP layerSEXP, SEXP driverSEXP, SEXP quietSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type dsn(dsnSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type layer(layerSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type driver(driverSEXP);
    Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_delete_ogr(dsn, layer, driver, quiet));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_binop
Rcpp::List CPL_geos_binop(Rcpp::List sfc0, Rcpp::List sfc1, std::string op, double par, std::string pattern, bool prepared);
RcppExport SEXP _sf_CPL_geos_binop(SEXP sfc0SEXP, SEXP sfc1SEXP, SEXP opSEXP, SEXP parSEXP, SEXP patternSEXP, SEXP preparedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc0(sfc0SEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc1(sfc1SEXP);
    Rcpp::traits::input_parameter< std::string >::type op(opSEXP);
    Rcpp::traits::input_parameter< double >::type par(parSEXP);
    Rcpp::traits::input_parameter< std::string >::type pattern(patternSEXP);
    Rcpp::traits::input_parameter< bool >::type prepared(preparedSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_binop(sfc0, sfc1, op, par, pattern, prepared));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_is_valid_reason
Rcpp::CharacterVector CPL_geos_is_valid_reason(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_geos_is_valid_reason(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_is_valid_reason(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_make_valid
Rcpp::List CPL_geos_make_valid(Rcpp::List sfc, std::string method, bool keep_collapsed);
RcppExport SEXP _sf_CPL_geos_make_valid(SEXP sfcSEXP, SEXP methodSEXP, SEXP keep_collapsedSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< std::string >::type method(methodSEXP);
    Rcpp::traits::input_parameter< bool >::type keep_collapsed(keep_collapsedSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_make_valid(sfc, method, keep_collapsed));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_is_valid
Rcpp::LogicalVector CPL_geos_is_valid(Rcpp::List sfc, bool NA_on_exception);
RcppExport SEXP _sf_CPL_geos_is_valid(SEXP sfcSEXP, SEXP NA_on_exceptionSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< bool >::type NA_on_exception(NA_on_exceptionSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_is_valid(sfc, NA_on_exception));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_is_simple
Rcpp::LogicalVector CPL_geos_is_simple(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_geos_is_simple(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_is_simple(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_is_empty
Rcpp::LogicalVector CPL_geos_is_empty(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_geos_is_empty(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_is_empty(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_normalize
Rcpp::List CPL_geos_normalize(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_geos_normalize(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_normalize(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_union
Rcpp::List CPL_geos_union(Rcpp::List sfc, bool by_feature, bool is_coverage);
RcppExport SEXP _sf_CPL_geos_union(SEXP sfcSEXP, SEXP by_featureSEXP, SEXP is_coverageSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< bool >::type by_feature(by_featureSEXP);
    Rcpp::traits::input_parameter< bool >::type is_coverage(is_coverageSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_union(sfc, by_feature, is_coverage));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_snap
Rcpp::List CPL_geos_snap(Rcpp::List sfc0, Rcpp::List sfc1, Rcpp::NumericVector tolerance);
RcppExport SEXP _sf_CPL_geos_snap(SEXP sfc0SEXP, SEXP sfc1SEXP, SEXP toleranceSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc0(sfc0SEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc1(sfc1SEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type tolerance(toleranceSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_snap(sfc0, sfc1, tolerance));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_op
Rcpp::List CPL_geos_op(std::string op, Rcpp::List sfc, Rcpp::NumericVector bufferDist, Rcpp::IntegerVector nQuadSegs, Rcpp::NumericVector dTolerance, Rcpp::LogicalVector preserveTopology, int bOnlyEdges, Rcpp::IntegerVector endCapStyle, Rcpp::IntegerVector joinStyle, Rcpp::NumericVector mitreLimit, Rcpp::LogicalVector singleside);
RcppExport SEXP _sf_CPL_geos_op(SEXP opSEXP, SEXP sfcSEXP, SEXP bufferDistSEXP, SEXP nQuadSegsSEXP, SEXP dToleranceSEXP, SEXP preserveTopologySEXP, SEXP bOnlyEdgesSEXP, SEXP endCapStyleSEXP, SEXP joinStyleSEXP, SEXP mitreLimitSEXP, SEXP singlesideSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type op(opSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type bufferDist(bufferDistSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type nQuadSegs(nQuadSegsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type dTolerance(dToleranceSEXP);
    Rcpp::traits::input_parameter< Rcpp::LogicalVector >::type preserveTopology(preserveTopologySEXP);
    Rcpp::traits::input_parameter< int >::type bOnlyEdges(bOnlyEdgesSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type endCapStyle(endCapStyleSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type joinStyle(joinStyleSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type mitreLimit(mitreLimitSEXP);
    Rcpp::traits::input_parameter< Rcpp::LogicalVector >::type singleside(singlesideSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_op(op, sfc, bufferDist, nQuadSegs, dTolerance, preserveTopology, bOnlyEdges, endCapStyle, joinStyle, mitreLimit, singleside));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_voronoi
Rcpp::List CPL_geos_voronoi(Rcpp::List sfc, Rcpp::List env, double dTolerance, int bOnlyEdges);
RcppExport SEXP _sf_CPL_geos_voronoi(SEXP sfcSEXP, SEXP envSEXP, SEXP dToleranceSEXP, SEXP bOnlyEdgesSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type env(envSEXP);
    Rcpp::traits::input_parameter< double >::type dTolerance(dToleranceSEXP);
    Rcpp::traits::input_parameter< int >::type bOnlyEdges(bOnlyEdgesSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_voronoi(sfc, env, dTolerance, bOnlyEdges));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_op2
Rcpp::List CPL_geos_op2(std::string op, Rcpp::List sfcx, Rcpp::List sfcy);
RcppExport SEXP _sf_CPL_geos_op2(SEXP opSEXP, SEXP sfcxSEXP, SEXP sfcySEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type op(opSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfcx(sfcxSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfcy(sfcySEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_op2(op, sfcx, sfcy));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_version
std::string CPL_geos_version(bool runtime, bool capi);
RcppExport SEXP _sf_CPL_geos_version(SEXP runtimeSEXP, SEXP capiSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< bool >::type runtime(runtimeSEXP);
    Rcpp::traits::input_parameter< bool >::type capi(capiSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_version(runtime, capi));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_dist
Rcpp::NumericMatrix CPL_geos_dist(Rcpp::List sfc0, Rcpp::List sfc1, Rcpp::CharacterVector which, double par);
RcppExport SEXP _sf_CPL_geos_dist(SEXP sfc0SEXP, SEXP sfc1SEXP, SEXP whichSEXP, SEXP parSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc0(sfc0SEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc1(sfc1SEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type which(whichSEXP);
    Rcpp::traits::input_parameter< double >::type par(parSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_dist(sfc0, sfc1, which, par));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_nearest_feature
Rcpp::IntegerVector CPL_geos_nearest_feature(Rcpp::List sfc0, Rcpp::List sfc1);
RcppExport SEXP _sf_CPL_geos_nearest_feature(SEXP sfc0SEXP, SEXP sfc1SEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc0(sfc0SEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc1(sfc1SEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_nearest_feature(sfc0, sfc1));
    return rcpp_result_gen;
END_RCPP
}
// CPL_geos_nearest_points
Rcpp::List CPL_geos_nearest_points(Rcpp::List sfc0, Rcpp::List sfc1, bool pairwise);
RcppExport SEXP _sf_CPL_geos_nearest_points(SEXP sfc0SEXP, SEXP sfc1SEXP, SEXP pairwiseSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc0(sfc0SEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc1(sfc1SEXP);
    Rcpp::traits::input_parameter< bool >::type pairwise(pairwiseSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_geos_nearest_points(sfc0, sfc1, pairwise));
    return rcpp_result_gen;
END_RCPP
}
// CPL_transpose_sparse_incidence
Rcpp::List CPL_transpose_sparse_incidence(Rcpp::List m, int n);
RcppExport SEXP _sf_CPL_transpose_sparse_incidence(SEXP mSEXP, SEXP nSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type m(mSEXP);
    Rcpp::traits::input_parameter< int >::type n(nSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_transpose_sparse_incidence(m, n));
    return rcpp_result_gen;
END_RCPP
}
// CPL_nary_difference
Rcpp::List CPL_nary_difference(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_nary_difference(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_nary_difference(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_nary_intersection
Rcpp::List CPL_nary_intersection(Rcpp::List sfc);
RcppExport SEXP _sf_CPL_nary_intersection(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_nary_intersection(sfc));
    return rcpp_result_gen;
END_RCPP
}
// CPL_hex_to_raw
Rcpp::List CPL_hex_to_raw(Rcpp::CharacterVector cx);
RcppExport SEXP _sf_CPL_hex_to_raw(SEXP cxSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type cx(cxSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_hex_to_raw(cx));
    return rcpp_result_gen;
END_RCPP
}
// CPL_raw_to_hex
Rcpp::CharacterVector CPL_raw_to_hex(Rcpp::RawVector raw);
RcppExport SEXP _sf_CPL_raw_to_hex(SEXP rawSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::RawVector >::type raw(rawSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_raw_to_hex(raw));
    return rcpp_result_gen;
END_RCPP
}
// CPL_read_mdim
List CPL_read_mdim(CharacterVector file, CharacterVector array_names, CharacterVector oo, IntegerVector offset, IntegerVector count, IntegerVector step, bool proxy, bool debug);
RcppExport SEXP _sf_CPL_read_mdim(SEXP fileSEXP, SEXP array_namesSEXP, SEXP ooSEXP, SEXP offsetSEXP, SEXP countSEXP, SEXP stepSEXP, SEXP proxySEXP, SEXP debugSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type file(fileSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type array_names(array_namesSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type oo(ooSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type count(countSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type step(stepSEXP);
    Rcpp::traits::input_parameter< bool >::type proxy(proxySEXP);
    Rcpp::traits::input_parameter< bool >::type debug(debugSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_read_mdim(file, array_names, oo, offset, count, step, proxy, debug));
    return rcpp_result_gen;
END_RCPP
}
// CPL_write_mdim
List CPL_write_mdim(CharacterVector name, CharacterVector driver, IntegerVector dimensions, List variables, CharacterVector wkt, CharacterVector xy, CharacterVector RootGroupOptions, CharacterVector CreationOptions, bool as_float);
RcppExport SEXP _sf_CPL_write_mdim(SEXP nameSEXP, SEXP driverSEXP, SEXP dimensionsSEXP, SEXP variablesSEXP, SEXP wktSEXP, SEXP xySEXP, SEXP RootGroupOptionsSEXP, SEXP CreationOptionsSEXP, SEXP as_floatSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type name(nameSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type dimensions(dimensionsSEXP);
    Rcpp::traits::input_parameter< List >::type variables(variablesSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type wkt(wktSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type xy(xySEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type RootGroupOptions(RootGroupOptionsSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type CreationOptions(CreationOptionsSEXP);
    Rcpp::traits::input_parameter< bool >::type as_float(as_floatSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_write_mdim(name, driver, dimensions, variables, wkt, xy, RootGroupOptions, CreationOptions, as_float));
    return rcpp_result_gen;
END_RCPP
}
// opp_sfc
SEXP opp_sfc(SEXP geom, SEXP value, SEXP mult, SEXP crs);
RcppExport SEXP _sf_opp_sfc(SEXP geomSEXP, SEXP valueSEXP, SEXP multSEXP, SEXP crsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type geom(geomSEXP);
    Rcpp::traits::input_parameter< SEXP >::type value(valueSEXP);
    Rcpp::traits::input_parameter< SEXP >::type mult(multSEXP);
    Rcpp::traits::input_parameter< SEXP >::type crs(crsSEXP);
    rcpp_result_gen = Rcpp::wrap(opp_sfc(geom, value, mult, crs));
    return rcpp_result_gen;
END_RCPP
}
// normalize_sfc
SEXP normalize_sfc(SEXP geom, SEXP min, SEXP range, SEXP crs);
RcppExport SEXP _sf_normalize_sfc(SEXP geomSEXP, SEXP minSEXP, SEXP rangeSEXP, SEXP crsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type geom(geomSEXP);
    Rcpp::traits::input_parameter< SEXP >::type min(minSEXP);
    Rcpp::traits::input_parameter< SEXP >::type range(rangeSEXP);
    Rcpp::traits::input_parameter< SEXP >::type crs(crsSEXP);
    rcpp_result_gen = Rcpp::wrap(normalize_sfc(geom, min, range, crs));
    return rcpp_result_gen;
END_RCPP
}
// CPL_polygonize
Rcpp::List CPL_polygonize(Rcpp::CharacterVector raster, Rcpp::CharacterVector mask_name, Rcpp::CharacterVector raster_driver, Rcpp::CharacterVector vector_driver, Rcpp::CharacterVector vector_dsn, Rcpp::CharacterVector options, Rcpp::IntegerVector iPixValField, Rcpp::CharacterVector contour_options, bool use_contours, bool use_integer);
RcppExport SEXP _sf_CPL_polygonize(SEXP rasterSEXP, SEXP mask_nameSEXP, SEXP raster_driverSEXP, SEXP vector_driverSEXP, SEXP vector_dsnSEXP, SEXP optionsSEXP, SEXP iPixValFieldSEXP, SEXP contour_optionsSEXP, SEXP use_contoursSEXP, SEXP use_integerSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type raster(rasterSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type mask_name(mask_nameSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type raster_driver(raster_driverSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type vector_driver(vector_driverSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type vector_dsn(vector_dsnSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type iPixValField(iPixValFieldSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type contour_options(contour_optionsSEXP);
    Rcpp::traits::input_parameter< bool >::type use_contours(use_contoursSEXP);
    Rcpp::traits::input_parameter< bool >::type use_integer(use_integerSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_polygonize(raster, mask_name, raster_driver, vector_driver, vector_dsn, options, iPixValField, contour_options, use_contours, use_integer));
    return rcpp_result_gen;
END_RCPP
}
// CPL_rasterize
Rcpp::List CPL_rasterize(Rcpp::CharacterVector raster, Rcpp::CharacterVector raster_driver, Rcpp::List sfc, Rcpp::NumericVector values, Rcpp::CharacterVector options, Rcpp::NumericVector NA_value);
RcppExport SEXP _sf_CPL_rasterize(SEXP rasterSEXP, SEXP raster_driverSEXP, SEXP sfcSEXP, SEXP valuesSEXP, SEXP optionsSEXP, SEXP NA_valueSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type raster(rasterSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type raster_driver(raster_driverSEXP);
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type values(valuesSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type NA_value(NA_valueSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_rasterize(raster, raster_driver, sfc, values, options, NA_value));
    return rcpp_result_gen;
END_RCPP
}
// CPL_proj_h
Rcpp::LogicalVector CPL_proj_h(bool b);
RcppExport SEXP _sf_CPL_proj_h(SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< bool >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_proj_h(b));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_pipelines
Rcpp::DataFrame CPL_get_pipelines(Rcpp::CharacterVector crs, Rcpp::CharacterVector authority, Rcpp::NumericVector AOI, Rcpp::CharacterVector Use, Rcpp::CharacterVector grid_availability, double accuracy, bool strict_containment, bool axis_order_auth_compl);
RcppExport SEXP _sf_CPL_get_pipelines(SEXP crsSEXP, SEXP authoritySEXP, SEXP AOISEXP, SEXP UseSEXP, SEXP grid_availabilitySEXP, SEXP accuracySEXP, SEXP strict_containmentSEXP, SEXP axis_order_auth_complSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type crs(crsSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type authority(authoritySEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericVector >::type AOI(AOISEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type Use(UseSEXP);
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type grid_availability(grid_availabilitySEXP);
    Rcpp::traits::input_parameter< double >::type accuracy(accuracySEXP);
    Rcpp::traits::input_parameter< bool >::type strict_containment(strict_containmentSEXP);
    Rcpp::traits::input_parameter< bool >::type axis_order_auth_compl(axis_order_auth_complSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_pipelines(crs, authority, AOI, Use, grid_availability, accuracy, strict_containment, axis_order_auth_compl));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_data_dir
Rcpp::CharacterVector CPL_get_data_dir(bool b);
RcppExport SEXP _sf_CPL_get_data_dir(SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< bool >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_data_dir(b));
    return rcpp_result_gen;
END_RCPP
}
// CPL_is_network_enabled
Rcpp::LogicalVector CPL_is_network_enabled(bool b);
RcppExport SEXP _sf_CPL_is_network_enabled(SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< bool >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_is_network_enabled(b));
    return rcpp_result_gen;
END_RCPP
}
// CPL_enable_network
Rcpp::CharacterVector CPL_enable_network(Rcpp::CharacterVector url, bool enable);
RcppExport SEXP _sf_CPL_enable_network(SEXP urlSEXP, SEXP enableSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type url(urlSEXP);
    Rcpp::traits::input_parameter< bool >::type enable(enableSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_enable_network(url, enable));
    return rcpp_result_gen;
END_RCPP
}
// CPL_set_data_dir
Rcpp::LogicalVector CPL_set_data_dir(std::string data_dir);
RcppExport SEXP _sf_CPL_set_data_dir(SEXP data_dirSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type data_dir(data_dirSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_set_data_dir(data_dir));
    return rcpp_result_gen;
END_RCPP
}
// CPL_use_proj4_init_rules
Rcpp::LogicalVector CPL_use_proj4_init_rules(Rcpp::IntegerVector v);
RcppExport SEXP _sf_CPL_use_proj4_init_rules(SEXP vSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::IntegerVector >::type v(vSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_use_proj4_init_rules(v));
    return rcpp_result_gen;
END_RCPP
}
// CPL_proj_version
std::string CPL_proj_version(bool b);
RcppExport SEXP _sf_CPL_proj_version(SEXP bSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< bool >::type b(bSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_proj_version(b));
    return rcpp_result_gen;
END_RCPP
}
// CPL_proj_is_valid
Rcpp::List CPL_proj_is_valid(std::string proj4string);
RcppExport SEXP _sf_CPL_proj_is_valid(SEXP proj4stringSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< std::string >::type proj4string(proj4stringSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_proj_is_valid(proj4string));
    return rcpp_result_gen;
END_RCPP
}
// CPL_have_datum_files
bool CPL_have_datum_files(SEXP foo);
RcppExport SEXP _sf_CPL_have_datum_files(SEXP fooSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< SEXP >::type foo(fooSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_have_datum_files(foo));
    return rcpp_result_gen;
END_RCPP
}
// CPL_proj_direct
Rcpp::NumericMatrix CPL_proj_direct(Rcpp::CharacterVector from_to, Rcpp::NumericMatrix pts, bool keep, bool warn, bool authority_compliant);
RcppExport SEXP _sf_CPL_proj_direct(SEXP from_toSEXP, SEXP ptsSEXP, SEXP keepSEXP, SEXP warnSEXP, SEXP authority_compliantSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type from_to(from_toSEXP);
    Rcpp::traits::input_parameter< Rcpp::NumericMatrix >::type pts(ptsSEXP);
    Rcpp::traits::input_parameter< bool >::type keep(keepSEXP);
    Rcpp::traits::input_parameter< bool >::type warn(warnSEXP);
    Rcpp::traits::input_parameter< bool >::type authority_compliant(authority_compliantSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_proj_direct(from_to, pts, keep, warn, authority_compliant));
    return rcpp_result_gen;
END_RCPP
}
// CPL_proj_info
Rcpp::List CPL_proj_info(int type);
RcppExport SEXP _sf_CPL_proj_info(SEXP typeSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< int >::type type(typeSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_proj_info(type));
    return rcpp_result_gen;
END_RCPP
}
// CPL_xy2sfc
List CPL_xy2sfc(NumericMatrix cc, IntegerVector dim, bool to_points, IntegerVector which);
RcppExport SEXP _sf_CPL_xy2sfc(SEXP ccSEXP, SEXP dimSEXP, SEXP to_pointsSEXP, SEXP whichSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type cc(ccSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type dim(dimSEXP);
    Rcpp::traits::input_parameter< bool >::type to_points(to_pointsSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type which(whichSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_xy2sfc(cc, dim, to_points, which));
    return rcpp_result_gen;
END_RCPP
}
// sfc_is_null
LogicalVector sfc_is_null(List sfc);
RcppExport SEXP _sf_sfc_is_null(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(sfc_is_null(sfc));
    return rcpp_result_gen;
END_RCPP
}
// sfc_unique_sfg_dims_and_types
List sfc_unique_sfg_dims_and_types(List sfc);
RcppExport SEXP _sf_sfc_unique_sfg_dims_and_types(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(sfc_unique_sfg_dims_and_types(sfc));
    return rcpp_result_gen;
END_RCPP
}
// sfc_is_empty
LogicalVector sfc_is_empty(List sfc);
RcppExport SEXP _sf_sfc_is_empty(SEXP sfcSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< List >::type sfc(sfcSEXP);
    rcpp_result_gen = Rcpp::wrap(sfc_is_empty(sfc));
    return rcpp_result_gen;
END_RCPP
}
// points_cpp
List points_cpp(NumericMatrix pts, CharacterVector gdim);
RcppExport SEXP _sf_points_cpp(SEXP ptsSEXP, SEXP gdimSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type pts(ptsSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type gdim(gdimSEXP);
    rcpp_result_gen = Rcpp::wrap(points_cpp(pts, gdim));
    return rcpp_result_gen;
END_RCPP
}
// CPL_signed_area
double CPL_signed_area(NumericMatrix pts);
RcppExport SEXP _sf_CPL_signed_area(SEXP ptsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type pts(ptsSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_signed_area(pts));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_metadata
CharacterVector CPL_get_metadata(CharacterVector obj, CharacterVector domain_item, CharacterVector options);
RcppExport SEXP _sf_CPL_get_metadata(SEXP objSEXP, SEXP domain_itemSEXP, SEXP optionsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type obj(objSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type domain_item(domain_itemSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_metadata(obj, domain_item, options));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_crs
List CPL_get_crs(CharacterVector obj, CharacterVector options);
RcppExport SEXP _sf_CPL_get_crs(SEXP objSEXP, SEXP optionsSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type obj(objSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_crs(obj, options));
    return rcpp_result_gen;
END_RCPP
}
// CPL_inv_geotransform
NumericVector CPL_inv_geotransform(NumericVector gt_r);
RcppExport SEXP _sf_CPL_inv_geotransform(SEXP gt_rSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericVector >::type gt_r(gt_rSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_inv_geotransform(gt_r));
    return rcpp_result_gen;
END_RCPP
}
// CPL_read_gdal
List CPL_read_gdal(CharacterVector fname, CharacterVector options, CharacterVector driver, bool read_data, NumericVector NA_value, List RasterIO_parameters);
RcppExport SEXP _sf_CPL_read_gdal(SEXP fnameSEXP, SEXP optionsSEXP, SEXP driverSEXP, SEXP read_dataSEXP, SEXP NA_valueSEXP, SEXP RasterIO_parametersSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type fname(fnameSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP);
    Rcpp::traits::input_parameter< bool >::type read_data(read_dataSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type NA_value(NA_valueSEXP);
    Rcpp::traits::input_parameter< List >::type RasterIO_parameters(RasterIO_parametersSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_read_gdal(fname, options, driver, read_data, NA_value, RasterIO_parameters));
    return rcpp_result_gen;
END_RCPP
}
// CPL_write_gdal
void CPL_write_gdal(NumericMatrix x, CharacterVector fname, CharacterVector driver, CharacterVector options, CharacterVector Type, IntegerVector dims, IntegerVector from, NumericVector gt, CharacterVector p4s, NumericVector na_val, bool create, bool only_create);
RcppExport SEXP _sf_CPL_write_gdal(SEXP xSEXP, SEXP fnameSEXP, SEXP driverSEXP, SEXP optionsSEXP, SEXP TypeSEXP, SEXP dimsSEXP, SEXP fromSEXP, SEXP gtSEXP, SEXP p4sSEXP, SEXP na_valSEXP, SEXP createSEXP, SEXP only_createSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< NumericMatrix >::type x(xSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type fname(fnameSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type Type(TypeSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type dims(dimsSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type from(fromSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type gt(gtSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type p4s(p4sSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type na_val(na_valSEXP);
    Rcpp::traits::input_parameter< bool >::type create(createSEXP);
    Rcpp::traits::input_parameter< bool >::type only_create(only_createSEXP);
    CPL_write_gdal(x, fname, driver, options, Type, dims, from, gt, p4s, na_val, create, only_create);
    return R_NilValue;
END_RCPP
}
// CPL_extract
NumericMatrix CPL_extract(CharacterVector input, NumericMatrix xy, bool interpolate);
RcppExport SEXP _sf_CPL_extract(SEXP inputSEXP, SEXP xySEXP, SEXP interpolateSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type input(inputSEXP);
    Rcpp::traits::input_parameter< NumericMatrix >::type xy(xySEXP);
    Rcpp::traits::input_parameter< bool >::type interpolate(interpolateSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_extract(input, xy, interpolate));
    return rcpp_result_gen;
END_RCPP
}
// CPL_create
void CPL_create(CharacterVector file, IntegerVector nxy, NumericVector value, CharacterVector wkt, NumericVector xlim, NumericVector ylim);
RcppExport SEXP _sf_CPL_create(SEXP fileSEXP, SEXP nxySEXP, SEXP valueSEXP, SEXP wktSEXP, SEXP xlimSEXP, SEXP ylimSEXP) {
BEGIN_RCPP
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< CharacterVector >::type file(fileSEXP);
    Rcpp::traits::input_parameter< IntegerVector >::type nxy(nxySEXP);
    Rcpp::traits::input_parameter< NumericVector >::type value(valueSEXP);
    Rcpp::traits::input_parameter< CharacterVector >::type wkt(wktSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type xlim(xlimSEXP);
    Rcpp::traits::input_parameter< NumericVector >::type ylim(ylimSEXP);
    CPL_create(file, nxy, value, wkt, xlim, ylim);
    return R_NilValue;
END_RCPP
}
// CPL_read_wkb
Rcpp::List CPL_read_wkb(Rcpp::List wkb_list, bool EWKB, bool spatialite);
static SEXP _sf_CPL_read_wkb_try(SEXP wkb_listSEXP, SEXP EWKBSEXP, SEXP spatialiteSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type wkb_list(wkb_listSEXP);
    Rcpp::traits::input_parameter< bool >::type EWKB(EWKBSEXP);
    Rcpp::traits::input_parameter< bool >::type spatialite(spatialiteSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_read_wkb(wkb_list, EWKB, spatialite));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _sf_CPL_read_wkb(SEXP wkb_listSEXP, SEXP EWKBSEXP, SEXP spatialiteSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_sf_CPL_read_wkb_try(wkb_listSEXP, EWKBSEXP, spatialiteSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        Rf_error(CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// CPL_write_wkb
Rcpp::List CPL_write_wkb(Rcpp::List sfc, bool EWKB);
static SEXP _sf_CPL_write_wkb_try(SEXP sfcSEXP, SEXP EWKBSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sfc(sfcSEXP);
    Rcpp::traits::input_parameter< bool >::type EWKB(EWKBSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_write_wkb(sfc, EWKB));
    return rcpp_result_gen;
END_RCPP_RETURN_ERROR
}
RcppExport SEXP _sf_CPL_write_wkb(SEXP sfcSEXP, SEXP EWKBSEXP) {
    SEXP rcpp_result_gen;
    {
        Rcpp::RNGScope rcpp_rngScope_gen;
        rcpp_result_gen = PROTECT(_sf_CPL_write_wkb_try(sfcSEXP, EWKBSEXP));
    }
    Rboolean rcpp_isInterrupt_gen = Rf_inherits(rcpp_result_gen, "interrupted-error");
    if (rcpp_isInterrupt_gen) {
        UNPROTECT(1);
        Rf_onintr();
    }
    bool rcpp_isLongjump_gen = Rcpp::internal::isLongjumpSentinel(rcpp_result_gen);
    if (rcpp_isLongjump_gen) {
        Rcpp::internal::resumeJump(rcpp_result_gen);
    }
    Rboolean rcpp_isError_gen = Rf_inherits(rcpp_result_gen, "try-error");
    if (rcpp_isError_gen) {
        SEXP rcpp_msgSEXP_gen = Rf_asChar(rcpp_result_gen);
        UNPROTECT(1);
        Rf_error(CHAR(rcpp_msgSEXP_gen));
    }
    UNPROTECT(1);
    return rcpp_result_gen;
}
// CPL_get_z_range
Rcpp::NumericVector CPL_get_z_range(Rcpp::List sf, int depth);
RcppExport SEXP _sf_CPL_get_z_range(SEXP sfSEXP, SEXP depthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sf(sfSEXP);
    Rcpp::traits::input_parameter< int >::type depth(depthSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_z_range(sf, depth));
    return rcpp_result_gen;
END_RCPP
}
// CPL_get_m_range
Rcpp::NumericVector CPL_get_m_range(Rcpp::List sf, int depth);
RcppExport SEXP _sf_CPL_get_m_range(SEXP sfSEXP, SEXP depthSEXP) {
BEGIN_RCPP
    Rcpp::RObject rcpp_result_gen;
    Rcpp::RNGScope rcpp_rngScope_gen;
    Rcpp::traits::input_parameter< Rcpp::List >::type sf(sfSEXP);
    Rcpp::traits::input_parameter< int >::type depth(depthSEXP);
    rcpp_result_gen = Rcpp::wrap(CPL_get_m_range(sf, depth));
    return rcpp_result_gen;
END_RCPP
}

// validate (ensure exported C++ functions exist before calling them)
static int _sf_RcppExport_validate(const char* sig) { 
    static std::set<std::string> signatures;
    if (signatures.empty()) {
        signatures.insert("Rcpp::List(*CPL_read_wkb)(Rcpp::List,bool,bool)");
        signatures.insert("Rcpp::List(*CPL_write_wkb)(Rcpp::List,bool)");
    }
    return signatures.find(sig) != signatures.end();
}

// registerCCallable (register entry points for exported C++ functions)
RcppExport SEXP _sf_RcppExport_registerCCallable() { 
    R_RegisterCCallable("sf", "_sf_CPL_read_wkb", (DL_FUNC)_sf_CPL_read_wkb_try);
    R_RegisterCCallable("sf", "_sf_CPL_write_wkb", (DL_FUNC)_sf_CPL_write_wkb_try);
    R_RegisterCCallable("sf", "_sf_RcppExport_validate", (DL_FUNC)_sf_RcppExport_validate);
    return R_NilValue;
}

static const R_CallMethodDef CallEntries[] = {
    {"_sf_CPL_get_bbox", (DL_FUNC) &_sf_CPL_get_bbox, 2},
    {"_sf_CPL_gdal_init", (DL_FUNC) &_sf_CPL_gdal_init, 0},
    {"_sf_CPL_gdal_cleanup_all", (DL_FUNC) &_sf_CPL_gdal_cleanup_all, 0},
    {"_sf_CPL_gdal_version", (DL_FUNC) &_sf_CPL_gdal_version, 1},
    {"_sf_CPL_crs_parameters", (DL_FUNC) &_sf_CPL_crs_parameters, 1},
    {"_sf_CPL_crs_equivalent", (DL_FUNC) &_sf_CPL_crs_equivalent, 2},
    {"_sf_CPL_crs_from_input", (DL_FUNC) &_sf_CPL_crs_from_input, 1},
    {"_sf_CPL_roundtrip", (DL_FUNC) &_sf_CPL_roundtrip, 1},
    {"_sf_CPL_circularstring_to_linestring", (DL_FUNC) &_sf_CPL_circularstring_to_linestring, 1},
    {"_sf_CPL_multisurface_to_multipolygon", (DL_FUNC) &_sf_CPL_multisurface_to_multipolygon, 1},
    {"_sf_CPL_compoundcurve_to_linear", (DL_FUNC) &_sf_CPL_compoundcurve_to_linear, 1},
    {"_sf_CPL_curve_to_linestring", (DL_FUNC) &_sf_CPL_curve_to_linestring, 1},
    {"_sf_CPL_transform", (DL_FUNC) &_sf_CPL_transform, 7},
    {"_sf_CPL_wrap_dateline", (DL_FUNC) &_sf_CPL_wrap_dateline, 3},
    {"_sf_CPL_get_gdal_drivers", (DL_FUNC) &_sf_CPL_get_gdal_drivers, 1},
    {"_sf_CPL_sfc_from_wkt", (DL_FUNC) &_sf_CPL_sfc_from_wkt, 1},
    {"_sf_CPL_gdal_with_geos", (DL_FUNC) &_sf_CPL_gdal_with_geos, 0},
    {"_sf_CPL_axis_order_authority_compliant", (DL_FUNC) &_sf_CPL_axis_order_authority_compliant, 1},
    {"_sf_CPL_get_proj_search_paths", (DL_FUNC) &_sf_CPL_get_proj_search_paths, 1},
    {"_sf_CPL_set_proj_search_paths", (DL_FUNC) &_sf_CPL_set_proj_search_paths, 1},
    {"_sf_CPL_area", (DL_FUNC) &_sf_CPL_area, 1},
    {"_sf_CPL_gdal_dimension", (DL_FUNC) &_sf_CPL_gdal_dimension, 2},
    {"_sf_CPL_length", (DL_FUNC) &_sf_CPL_length, 1},
    {"_sf_CPL_gdal_segmentize", (DL_FUNC) &_sf_CPL_gdal_segmentize, 2},
    {"_sf_CPL_gdal_linestring_sample", (DL_FUNC) &_sf_CPL_gdal_linestring_sample, 2},
    {"_sf_CPL_get_layers", (DL_FUNC) &_sf_CPL_get_layers, 3},
    {"_sf_CPL_read_ogr", (DL_FUNC) &_sf_CPL_read_ogr, 14},
    {"_sf_CPL_gdalinfo", (DL_FUNC) &_sf_CPL_gdalinfo, 3},
    {"_sf_CPL_gdaladdo", (DL_FUNC) &_sf_CPL_gdaladdo, 7},
    {"_sf_CPL_gdalwarp", (DL_FUNC) &_sf_CPL_gdalwarp, 7},
    {"_sf_CPL_gdalrasterize", (DL_FUNC) &_sf_CPL_gdalrasterize, 7},
    {"_sf_CPL_gdaltranslate", (DL_FUNC) &_sf_CPL_gdaltranslate, 5},
    {"_sf_CPL_gdalvectortranslate", (DL_FUNC) &_sf_CPL_gdalvectortranslate, 6},
    {"_sf_CPL_gdalbuildvrt", (DL_FUNC) &_sf_CPL_gdalbuildvrt, 5},
    {"_sf_CPL_gdaldemprocessing", (DL_FUNC) &_sf_CPL_gdaldemprocessing, 7},
    {"_sf_CPL_gdalnearblack", (DL_FUNC) &_sf_CPL_gdalnearblack, 6},
    {"_sf_CPL_gdalgrid", (DL_FUNC) &_sf_CPL_gdalgrid, 5},
    {"_sf_CPL_gdalmdiminfo", (DL_FUNC) &_sf_CPL_gdalmdiminfo, 3},
    {"_sf_CPL_gdalmdimtranslate", (DL_FUNC) &_sf_CPL_gdalmdimtranslate, 5},
    {"_sf_CPL_gdal_warper", (DL_FUNC) &_sf_CPL_gdal_warper, 6},
    {"_sf_CPL_write_ogr", (DL_FUNC) &_sf_CPL_write_ogr, 16},
    {"_sf_CPL_delete_ogr", (DL_FUNC) &_sf_CPL_delete_ogr, 4},
    {"_sf_CPL_geos_binop", (DL_FUNC) &_sf_CPL_geos_binop, 6},
    {"_sf_CPL_geos_is_valid_reason", (DL_FUNC) &_sf_CPL_geos_is_valid_reason, 1},
    {"_sf_CPL_geos_make_valid", (DL_FUNC) &_sf_CPL_geos_make_valid, 3},
    {"_sf_CPL_geos_is_valid", (DL_FUNC) &_sf_CPL_geos_is_valid, 2},
    {"_sf_CPL_geos_is_simple", (DL_FUNC) &_sf_CPL_geos_is_simple, 1},
    {"_sf_CPL_geos_is_empty", (DL_FUNC) &_sf_CPL_geos_is_empty, 1},
    {"_sf_CPL_geos_normalize", (DL_FUNC) &_sf_CPL_geos_normalize, 1},
    {"_sf_CPL_geos_union", (DL_FUNC) &_sf_CPL_geos_union, 3},
    {"_sf_CPL_geos_snap", (DL_FUNC) &_sf_CPL_geos_snap, 3},
    {"_sf_CPL_geos_op", (DL_FUNC) &_sf_CPL_geos_op, 11},
    {"_sf_CPL_geos_voronoi", (DL_FUNC) &_sf_CPL_geos_voronoi, 4},
    {"_sf_CPL_geos_op2", (DL_FUNC) &_sf_CPL_geos_op2, 3},
    {"_sf_CPL_geos_version", (DL_FUNC) &_sf_CPL_geos_version, 2},
    {"_sf_CPL_geos_dist", (DL_FUNC) &_sf_CPL_geos_dist, 4},
    {"_sf_CPL_geos_nearest_feature", (DL_FUNC) &_sf_CPL_geos_nearest_feature, 2},
    {"_sf_CPL_geos_nearest_points", (DL_FUNC) &_sf_CPL_geos_nearest_points, 3},
    {"_sf_CPL_transpose_sparse_incidence", (DL_FUNC) &_sf_CPL_transpose_sparse_incidence, 2},
    {"_sf_CPL_nary_difference", (DL_FUNC) &_sf_CPL_nary_difference, 1},
    {"_sf_CPL_nary_intersection", (DL_FUNC) &_sf_CPL_nary_intersection, 1},
    {"_sf_CPL_hex_to_raw", (DL_FUNC) &_sf_CPL_hex_to_raw, 1},
    {"_sf_CPL_raw_to_hex", (DL_FUNC) &_sf_CPL_raw_to_hex, 1},
    {"_sf_CPL_read_mdim", (DL_FUNC) &_sf_CPL_read_mdim, 8},
    {"_sf_CPL_write_mdim", (DL_FUNC) &_sf_CPL_write_mdim, 9},
    {"_sf_opp_sfc", (DL_FUNC) &_sf_opp_sfc, 4},
    {"_sf_normalize_sfc", (DL_FUNC) &_sf_normalize_sfc, 4},
    {"_sf_CPL_polygonize", (DL_FUNC) &_sf_CPL_polygonize, 10},
    {"_sf_CPL_rasterize", (DL_FUNC) &_sf_CPL_rasterize, 6},
    {"_sf_CPL_proj_h", (DL_FUNC) &_sf_CPL_proj_h, 1},
    {"_sf_CPL_get_pipelines", (DL_FUNC) &_sf_CPL_get_pipelines, 8},
    {"_sf_CPL_get_data_dir", (DL_FUNC) &_sf_CPL_get_data_dir, 1},
    {"_sf_CPL_is_network_enabled", (DL_FUNC) &_sf_CPL_is_network_enabled, 1},
    {"_sf_CPL_enable_network", (DL_FUNC) &_sf_CPL_enable_network, 2},
    {"_sf_CPL_set_data_dir", (DL_FUNC) &_sf_CPL_set_data_dir, 1},
    {"_sf_CPL_use_proj4_init_rules", (DL_FUNC) &_sf_CPL_use_proj4_init_rules, 1},
    {"_sf_CPL_proj_version", (DL_FUNC) &_sf_CPL_proj_version, 1},
    {"_sf_CPL_proj_is_valid", (DL_FUNC) &_sf_CPL_proj_is_valid, 1},
    {"_sf_CPL_have_datum_files", (DL_FUNC) &_sf_CPL_have_datum_files, 1},
    {"_sf_CPL_proj_direct", (DL_FUNC) &_sf_CPL_proj_direct, 5},
    {"_sf_CPL_proj_info", (DL_FUNC) &_sf_CPL_proj_info, 1},
    {"_sf_CPL_xy2sfc", (DL_FUNC) &_sf_CPL_xy2sfc, 4},
    {"_sf_sfc_is_null", (DL_FUNC) &_sf_sfc_is_null, 1},
    {"_sf_sfc_unique_sfg_dims_and_types", (DL_FUNC) &_sf_sfc_unique_sfg_dims_and_types, 1},
    {"_sf_sfc_is_empty", (DL_FUNC) &_sf_sfc_is_empty, 1},
    {"_sf_points_cpp", (DL_FUNC) &_sf_points_cpp, 2},
    {"_sf_CPL_signed_area", (DL_FUNC) &_sf_CPL_signed_area, 1},
    {"_sf_CPL_get_metadata", (DL_FUNC) &_sf_CPL_get_metadata, 3},
    {"_sf_CPL_get_crs", (DL_FUNC) &_sf_CPL_get_crs, 2},
    {"_sf_CPL_inv_geotransform", (DL_FUNC) &_sf_CPL_inv_geotransform, 1},
    {"_sf_CPL_read_gdal", (DL_FUNC) &_sf_CPL_read_gdal, 6},
    {"_sf_CPL_write_gdal", (DL_FUNC) &_sf_CPL_write_gdal, 12},
    {"_sf_CPL_extract", (DL_FUNC) &_sf_CPL_extract, 3},
    {"_sf_CPL_create", (DL_FUNC) &_sf_CPL_create, 6},
    {"_sf_CPL_read_wkb", (DL_FUNC) &_sf_CPL_read_wkb, 3},
    {"_sf_CPL_write_wkb", (DL_FUNC) &_sf_CPL_write_wkb, 2},
    {"_sf_CPL_get_z_range", (DL_FUNC) &_sf_CPL_get_z_range, 2},
    {"_sf_CPL_get_m_range", (DL_FUNC) &_sf_CPL_get_m_range, 2},
    {"_sf_RcppExport_registerCCallable", (DL_FUNC) &_sf_RcppExport_registerCCallable, 0},
    {NULL, NULL, 0}
};

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