From da6943e495f9566e6a01665d27aa22fc591a93a1 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 20 Dec 2022 23:01:35 +1100 Subject: [PATCH 001/102] tiny cleanup geolocation --- inst/include/gdalraster/gdalraster.h | 33 +++++++++++++--------------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index b4d147db..696afa83 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -143,27 +143,24 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, } GDALDataset* oDS = (GDALDataset*)gdalH_open_dsn(dsn, sds); - - if (geolocation.size() == 2) { - // OGRSpatialReference* geolsrs = nullptr; - // geolsrs = new OGRSpatialReference; - // OGRErr chk = geolsrs->SetFromUserInput("OGC:CRS84"); - oDS->SetMetadataItem( "SRS", "OGC:CRS84", "GEOLOCATION" ); - oDS->SetMetadataItem( "X_DATASET", geolocation[0], "GEOLOCATION" ); - oDS->SetMetadataItem( "X_BAND", "1" , "GEOLOCATION" ); - oDS->SetMetadataItem( "Y_DATASET", geolocation[1], "GEOLOCATION" ); - oDS->SetMetadataItem( "Y_BAND", "1" , "GEOLOCATION" ); - - - oDS->SetMetadataItem( "PIXEL_OFFSET", "0", "GEOLOCATION" ); - oDS->SetMetadataItem( "PIXEL_STEP", "1", "GEOLOCATION" ); - oDS->SetMetadataItem( "LINE_OFFSET", "0", "GEOLOCATION" ); - oDS->SetMetadataItem( "LINE_STEP", "1", "GEOLOCATION" ); + OGRSpatialReference geolsrs; + char *pszGeoSrsWKT = nullptr; + geolsrs.SetFromUserInput("OGC:CRS84"); + geolsrs.exportToWkt(&pszGeoSrsWKT); + + oDS->SetMetadataItem( "SRS", pszGeoSrsWKT, "GEOLOCATION" ); + oDS->SetMetadataItem( "X_DATASET", geolocation[0], "GEOLOCATION" ); + oDS->SetMetadataItem( "X_BAND", "1" , "GEOLOCATION" ); + oDS->SetMetadataItem( "Y_DATASET", geolocation[1], "GEOLOCATION" ); + oDS->SetMetadataItem( "Y_BAND", "1" , "GEOLOCATION" ); + oDS->SetMetadataItem( "PIXEL_OFFSET", "0", "GEOLOCATION" ); + oDS->SetMetadataItem( "LINE_OFFSET", "0", "GEOLOCATION" ); + oDS->SetMetadataItem( "PIXEL_STEP", "1", "GEOLOCATION" ); + oDS->SetMetadataItem( "LINE_STEP", "1", "GEOLOCATION" ); + CPLFree(pszGeoSrsWKT); } - - if (oDS == nullptr) return(nullptr); int nBands = oDS->GetRasterCount(); // Rprintf("%i\n", nBands); From 8d6e13687027ede6e433a183abb9c0bf41dc1ed1 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 3 Jan 2023 21:50:34 +1100 Subject: [PATCH 002/102] update Makevars.ucrt for CRAN GDAL 3.6 --- src/Makevars.ucrt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Makevars.ucrt b/src/Makevars.ucrt index 379b6aff..66b5259b 100644 --- a/src/Makevars.ucrt +++ b/src/Makevars.ucrt @@ -6,7 +6,7 @@ PKG_CPPFLAGS =\ -DHAVE_PROJ_H PKG_LIBS = \ --lgdal -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 +-lgdal -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 CXX_STD = CXX11 From 486b7a5812d2d3f1a3f416c39e52168515ab4558 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 3 Jan 2023 21:54:23 +1100 Subject: [PATCH 003/102] bump 0.9.3 --- DESCRIPTION | 2 +- NEWS.md | 4 ++++ cran-comments.md | 10 +++------- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 24f651e8..dc4d197e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.2 +Version: 0.9.3 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index 704321cd..e0b566c1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# vapour 0.9.3 + +* Update to CRAN Makevars.ucrt. + # vapour 0.9.2 * Resubmit after 0.9.1 was rejected, fixed configure.ac and checked on on M1MAC/macbuilder. diff --git a/cran-comments.md b/cran-comments.md index c9284a60..f5dabd4e 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,10 +1,6 @@ -## vapour 0.9.2 +## vapour 0.9.3 -* Removed hardcoded -lsqlite3 from configure.ac, as per helpful CRAN email. - -New submission after confirmation on mac builder, same pkg-config --libs as expected from CRAN email, use LDFLAGS in load tests. - -Macbuilder results are here: https://mac.r-project.org/macbuilder/results/1668480796-f750737d607cc85b/ +* Patched CRAN supplied diff for Makevars.ucrt. Thanks! @@ -12,7 +8,7 @@ Thanks! ## Test environments * win-builder (devel and release) -* Linux ubuntu 4.2.1 +* Linux ubuntu ## R CMD check results From d8a4668cdad82fd30804dc130863ba1c6f0485cb Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 5 Jan 2023 20:20:23 +1100 Subject: [PATCH 004/102] add a warning for 3.6.0 --- R/zzz.R | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/R/zzz.R b/R/zzz.R index cb2b40ad..cbc81122 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -37,7 +37,14 @@ vapour_load_gdal <- function() { } # now done globally, prior vapour did this per library call - register_gdal_cpp() + out <- register_gdal_cpp() + + ## provided by R. Bivand #183 + rver <- version_gdal_cpp() + if (strsplit(strsplit(rver, ",")[[1]][1], " ")[[1]][2] == "3.6.0") { + warning("GDAL 3.6.0 is in use but has been officially retracted; check here for whether its use might affect your work:\nhttps://github.com/OSGeo/gdal/blob/v3.6.1/NEWS.md\n Need help? Contact the maintainer of {vapour}.") + } + out } # todo vapour_unload_gdal <- function() { From 8a7f2064963e13a243c0f69d23f79cc498fa6fd1 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 5 Jan 2023 21:18:21 +1100 Subject: [PATCH 005/102] update ucrt --- DESCRIPTION | 2 +- R/raster-input.R | 2 +- R/vapour-gdal-library.R | 2 +- R/vapour_vrt.R | 2 +- man/vapour_srs_wkt.Rd | 2 +- man/vapour_vrt.Rd | 2 +- man/vapour_warp_raster.Rd | 2 +- src/Makevars.ucrt | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index dc4d197e..a7bed8b4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -27,7 +27,7 @@ Imports: jsonlite, Rcpp, utils -RoxygenNote: 7.2.1 +RoxygenNote: 7.2.3 Roxygen: list(markdown = TRUE) Suggests: testthat, diff --git a/R/raster-input.R b/R/raster-input.R index 36e15401..65099007 100644 --- a/R/raster-input.R +++ b/R/raster-input.R @@ -290,7 +290,7 @@ vapour_read_raster_hex <- function(x, band = 1, #' augmentation by 'vapour_vrt()'. #' #' Common inputs for `projection` are WKT variants, 'AUTH:CODE's e.g. -#' 'EPSG:3031', the 'OGC:CRS84' for lon,lat WGS84, 'ESRI:' and other +#' 'EPSG:3031', the 'OGC:CRS84' for lon,lat WGS84, 'ESRI:code' and other #' authority variants, and datum names such as 'WGS84','NAD27' recognized by #' PROJ itself. #' diff --git a/R/vapour-gdal-library.R b/R/vapour-gdal-library.R index b227ae93..59004f1a 100644 --- a/R/vapour-gdal-library.R +++ b/R/vapour-gdal-library.R @@ -54,7 +54,7 @@ vapour_get_config <- function(option) { #' give the output as WKT. If it's an error in GDAL it's an error in R. #' #' Common inputs are WKT variants, -#' 'AUTH:CODE's e.g. 'EPSG:3031', the 'OGC:CRS84' for long,lat WGS84, 'ESRI:' and other authority variants, and +#' 'AUTH:CODE's e.g. 'EPSG:3031', the 'OGC:CRS84' for long,lat WGS84, 'ESRI:code' and other authority variants, and #' datum names such as 'WGS84','NAD27' recognized by PROJ itself. #' #' See help for 'SetFromUserInput' in 'OGRSpatialReference', and 'proj_create_crs_to_crs'. diff --git a/R/vapour_vrt.R b/R/vapour_vrt.R index 6c5aa07a..07f4791c 100644 --- a/R/vapour_vrt.R +++ b/R/vapour_vrt.R @@ -36,7 +36,7 @@ #' #' @section Projections: #' Common inputs for `projection` are WKT variants, "AUTH:CODE"s e.g. -#' "EPSG:3031", the "OGC:CRS84" for long,lat WGS84, "ESRI:" and other +#' "EPSG:3031", the "OGC:CRS84" for long,lat WGS84, "ESRI:code" and other #' authority variants, and datum names such as 'WGS84','NAD27' recognized by #' PROJ itself. #' diff --git a/man/vapour_srs_wkt.Rd b/man/vapour_srs_wkt.Rd index d0d9b685..4e236fca 100644 --- a/man/vapour_srs_wkt.Rd +++ b/man/vapour_srs_wkt.Rd @@ -23,7 +23,7 @@ Note that no sanitizing is done on inputs, we literally just 'OGRSpatialReferenc give the output as WKT. If it's an error in GDAL it's an error in R. Common inputs are WKT variants, -'AUTH:CODE's e.g. 'EPSG:3031', the 'OGC:CRS84' for long,lat WGS84, 'ESRI:' and other authority variants, and +'AUTH:CODE's e.g. 'EPSG:3031', the 'OGC:CRS84' for long,lat WGS84, 'ESRI:code' and other authority variants, and datum names such as 'WGS84','NAD27' recognized by PROJ itself. See help for 'SetFromUserInput' in 'OGRSpatialReference', and 'proj_create_crs_to_crs'. diff --git a/man/vapour_vrt.Rd b/man/vapour_vrt.Rd index 23bae78c..743dbdcb 100644 --- a/man/vapour_vrt.Rd +++ b/man/vapour_vrt.Rd @@ -79,7 +79,7 @@ well. More features may come with a 'VRTBuilder' interface. \section{Projections}{ Common inputs for \code{projection} are WKT variants, "AUTH:CODE"s e.g. -"EPSG:3031", the "OGC:CRS84" for long,lat WGS84, "ESRI:" and other +"EPSG:3031", the "OGC:CRS84" for long,lat WGS84, "ESRI:code" and other authority variants, and datum names such as 'WGS84','NAD27' recognized by PROJ itself. diff --git a/man/vapour_warp_raster.Rd b/man/vapour_warp_raster.Rd index d31a6706..93709cef 100644 --- a/man/vapour_warp_raster.Rd +++ b/man/vapour_warp_raster.Rd @@ -150,7 +150,7 @@ In future all 'source_*' arguments may be deprecated in favour of augmentation by 'vapour_vrt()'. Common inputs for \code{projection} are WKT variants, 'AUTH:CODE's e.g. -'EPSG:3031', the 'OGC:CRS84' for lon,lat WGS84, 'ESRI:' and other +'EPSG:3031', the 'OGC:CRS84' for lon,lat WGS84, 'ESRI:code' and other authority variants, and datum names such as 'WGS84','NAD27' recognized by PROJ itself. diff --git a/src/Makevars.ucrt b/src/Makevars.ucrt index 66b5259b..75479143 100644 --- a/src/Makevars.ucrt +++ b/src/Makevars.ucrt @@ -6,7 +6,7 @@ PKG_CPPFLAGS =\ -DHAVE_PROJ_H PKG_LIBS = \ --lgdal -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 +-fopenmp -lgdal -larmadillo -lopenblas -lgfortran -lquadmath -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 CXX_STD = CXX11 From 07ccf43ba118e2fd45e6e48abb6c83f52613b0e3 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Fri, 6 Jan 2023 09:35:27 +1100 Subject: [PATCH 006/102] better .onLoad warning --- R/zzz.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/zzz.R b/R/zzz.R index cbc81122..da95824d 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -36,13 +36,14 @@ vapour_load_gdal <- function() { Sys.setenv("GDAL_DATA" = gdl) } - # now done globally, prior vapour did this per library call + # here we start calling vapour functions (this function is called by .onLoad) + ## . out <- register_gdal_cpp() ## provided by R. Bivand #183 rver <- version_gdal_cpp() if (strsplit(strsplit(rver, ",")[[1]][1], " ")[[1]][2] == "3.6.0") { - warning("GDAL 3.6.0 is in use but has been officially retracted; check here for whether its use might affect your work:\nhttps://github.com/OSGeo/gdal/blob/v3.6.1/NEWS.md\n Need help? Contact the maintainer of {vapour}.") + warning("{vapour} package: GDAL 3.6.0 is in use but has been officially retracted; check here for whether its use might affect your work:\nhttps://github.com/OSGeo/gdal/blob/v3.6.1/NEWS.md\n Need help? Contact the maintainer of {vapour}.") } out } From 2fdfa39715542d4639f8709f1b10f0dd0315d3f5 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Fri, 6 Jan 2023 10:49:22 +1100 Subject: [PATCH 007/102] we don't write gpkg so ignore the retraction warning --- R/zzz.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/R/zzz.R b/R/zzz.R index da95824d..99ed8a60 100644 --- a/R/zzz.R +++ b/R/zzz.R @@ -12,7 +12,11 @@ } .onAttach = function(libname, pkgname) { - + ## provided by R. Bivand #183 + rver <- version_gdal_cpp() + if (strsplit(strsplit(rver, ",")[[1]][1], " ")[[1]][2] == "3.6.0") { + warning("{vapour} package: GDAL 3.6.0 is in use but has been officially retracted; check here for whether its use might affect your work:\nhttps://github.com/OSGeo/gdal/blob/v3.6.1/NEWS.md\n Need help? Contact the maintainer of {vapour}.") + } } vapour_getenv_sql_dialect <- function() { @@ -40,11 +44,7 @@ vapour_load_gdal <- function() { ## . out <- register_gdal_cpp() - ## provided by R. Bivand #183 - rver <- version_gdal_cpp() - if (strsplit(strsplit(rver, ",")[[1]][1], " ")[[1]][2] == "3.6.0") { - warning("{vapour} package: GDAL 3.6.0 is in use but has been officially retracted; check here for whether its use might affect your work:\nhttps://github.com/OSGeo/gdal/blob/v3.6.1/NEWS.md\n Need help? Contact the maintainer of {vapour}.") - } + out } # todo From 6ba6e65a8b4aee11c18b8f5064b74768c56ebf51 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Fri, 6 Jan 2023 11:01:06 +1100 Subject: [PATCH 008/102] cran submission comments --- cran-comments.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cran-comments.md b/cran-comments.md index f5dabd4e..67c549d2 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,7 +1,9 @@ ## vapour 0.9.3 * Patched CRAN supplied diff for Makevars.ucrt. - +* vapour doesn't write to files, so the GDAL 3.6.0 retraction is not relevant so we've avoided messaging + from .onLoad as discussed by R Bivand. + Thanks! From 6c155f5530fccc9bf52d317079e81387a4d2c2e8 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 7 Feb 2023 21:10:39 +0000 Subject: [PATCH 009/102] expts --- R/RcppExports.R | 8 + .../include/gdalwarpgeneral/gdalwarpgeneral.h | 246 ++++++++++++++++++ src/000-warpgeneral.cpp | 30 +++ src/RcppExports.cpp | 33 +++ 4 files changed, 317 insertions(+) create mode 100644 inst/include/gdalwarpgeneral/gdalwarpgeneral.h create mode 100644 src/000-warpgeneral.cpp diff --git a/R/RcppExports.R b/R/RcppExports.R index cd582233..96976765 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,6 +1,14 @@ # Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 +warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, bands, resample, silent, band_output_type, options) { + .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, bands, resample, silent, band_output_type, options) +} + +warp_suggest_cpp <- function(dsn, target_crs) { + .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) +} + set_gdal_config_cpp <- function(option, value) { .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) } diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h new file mode 100644 index 00000000..bc68b4c4 --- /dev/null +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -0,0 +1,246 @@ +#ifndef GDALWARPGENERAL_H +#define GDALWARPGENERAL_H + +#include +#include "gdal_priv.h" +#include "gdalwarper.h" +#include "gdal_utils.h" // for GDALWarpAppOptions +#include "gdalraster/gdalraster.h" +#include "ogr_spatialref.h" // for OGRCreateCoordinateTransformation +using namespace std; + +namespace gdalwarpgeneral{ + +using namespace Rcpp; + + + +List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) { + GDALDataset* poSrcDS = (GDALDataset*) gdalraster::gdalH_open_dsn(dsn[0], 0); + double adfGeoTransform[6]; + poSrcDS->GetGeoTransform( adfGeoTransform ); + double outGeoTransform[6]; + int nXSize, nYSize; + double adfExtent[4]; + GDALTransformerFunc pfnTransformer; + pfnTransformer = GDALGenImgProjTransform; + + void *pfnTransformerArg = nullptr; + pfnTransformerArg = + GDALCreateGenImgProjTransformer( poSrcDS, + nullptr, + nullptr, + target_crs[0], + FALSE, 0.0, 1 ); + GDALSuggestedWarpOutput2(poSrcDS, pfnTransformer, pfnTransformerArg, + adfGeoTransform, &nXSize, &nYSize, adfExtent, + 0); + + IntegerVector dimension(2); + dimension[0] = nXSize; + dimension[1] = nYSize; + + NumericVector extent(4); + extent[0] = adfExtent[0]; + extent[1] = adfExtent[2]; + extent[2] = adfExtent[1]; + extent[3] = adfExtent[3]; + + + List out(3); + out[0] = extent; + out[1] = dimension; + out[2] = target_crs; + return out; +} + +// remove source_WKT (because VRT) +// remove source_extent (VRT) +// target_extent must be optional +// target_dim must be optional +// expose SuggestedWarpOutput to R +// band_output_type -ot +// resample -r +// bands -b n0 -b n1 +inline List gdal_warp_general(CharacterVector dsn, + CharacterVector target_crs, + NumericVector target_extent, + IntegerVector target_dim, + IntegerVector bands, + CharacterVector resample, + LogicalVector silent, + CharacterVector band_output_type, + CharacterVector options) { + + + GDALDatasetH *poSrcDS; + poSrcDS = static_cast(CPLMalloc(sizeof(GDALDatasetH) * static_cast(dsn.size()))); + + for (int i = 0; i < dsn.size(); i++) { + poSrcDS[i] = gdalraster::gdalH_open_dsn(dsn[i], 0); + // unwind everything, and stop (why not unwind if all are null, message how many succeed) + if (poSrcDS[i] == nullptr) { + if (i > 0) { + for (int j = 0; j < i; j++) GDALClose(poSrcDS[j]); + } + Rprintf("input source not readable: %s\n", (char *)dsn[i]); + CPLFree(poSrcDS); + Rcpp::stop(""); + } + } + + // handle warp settings and options + // we manually handle -r, -te, -t_srs, -ts, -of, + // but the rest passed in as wo, to, oo, doo, or general (non general ones get -wo/-to/-oo/-doo prepended in R) + char** papszArg = nullptr; + + papszArg = CSLAddString(papszArg, "-of"); + papszArg = CSLAddString(papszArg, "MEM"); + + if (!target_crs[0].empty()) { + OGRSpatialReference *oTargetSRS = nullptr; + oTargetSRS = new OGRSpatialReference; + const char * strforuin = (const char *)target_crs[0]; + OGRErr target_chk = oTargetSRS->SetFromUserInput(strforuin); + if (target_chk != OGRERR_NONE) Rcpp::stop("cannot initialize target projection"); + OGRSpatialReference oSRS; + const OGRSpatialReference* poSrcSRS = ((GDALDataset *)poSrcDS[0])->GetSpatialRef(); + if( poSrcSRS ) { + oSRS = *poSrcSRS; + if (!oSRS.IsEmpty()) { + OGRCoordinateTransformation *poCT; + poCT = OGRCreateCoordinateTransformation(&oSRS, oTargetSRS); + if( poCT == nullptr ) { + delete oTargetSRS; + Rcpp::stop( "Transformation to this target CRS not possible from this source dataset, target CRS given: \n\n %s \n\n", + (char *) target_crs[0] ); + } + // we add our target projection iff a) source crs is valid b) target crs is valid c) transformation source->target is valid + // user may have augmented the array of datasets with source_projection + // if the source is just not defined we ignore the target with a warning + papszArg = CSLAddString(papszArg, "-t_srs"); + papszArg = CSLAddString(papszArg, target_crs[0]); + } else { + Rcpp::warning("no source crs, target crs is ignored\n"); + } + } + delete oTargetSRS; + } + + if (target_extent.size() > 0) { + double dfMinX = target_extent[0]; + double dfMaxX = target_extent[1]; + double dfMinY = target_extent[2]; + double dfMaxY = target_extent[3]; + + papszArg = CSLAddString(papszArg, "-te"); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMinX)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMinY)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMaxX)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMaxY)); + } + + if (target_dim.size() > 0) { + int nXSize = target_dim[0]; + int nYSize = target_dim[1]; + papszArg = CSLAddString(papszArg, "-ts"); + papszArg = CSLAddString(papszArg, CPLSPrintf("%d", nXSize)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%d", nYSize)); + } + + if (resample.size() > 0) { + papszArg = CSLAddString(papszArg, "-r"); + papszArg = CSLAddString(papszArg, resample[0]); + } + for (int gwopt = 0; gwopt < options.length(); gwopt++) { + papszArg = CSLAddString(papszArg, options[gwopt]); + } + auto psOptions = GDALWarpAppOptionsNew(papszArg, nullptr); + CSLDestroy(papszArg); + GDALWarpAppOptionsSetProgress(psOptions, NULL, NULL ); + + GDALDatasetH hRet = GDALWarp( "", nullptr, + static_cast(dsn.size()), poSrcDS, + psOptions, nullptr); + + CPLAssert( hRet != NULL ); + GDALWarpAppOptionsFree(psOptions); + for (int si = 0; si < dsn.size(); si++) { + GDALClose( (GDALDataset *)poSrcDS[si] ); + } + CPLFree(poSrcDS); + + if (hRet == nullptr) { + Rcpp::stop("something went wrong!"); + } + + + /// this doesn't work because we don't keep the file name/s + if (band_output_type[0] == "vrt") { + // GDALDriver * vDriver = (GDALDriver *)GDALGetDriverByName("VRT"); + // GDALDatasetH VRTDS = vDriver->CreateCopy("", (GDALDataset *) hRet, 0, nullptr, nullptr, nullptr); + // + + CharacterVector oof(1); + CharacterVector infile(1); + LogicalVector filein(1); + oof[0] = gdalraster::gdal_vrt_text((GDALDataset *) hRet); + GDALClose(hRet); + return List::create(oof); + } + + + // Prepare to read bands + int nBands; + if (bands[0] == 0) { + nBands = (int)GDALGetRasterCount(hRet); + } else { + nBands = (int)bands.size(); + } + std::vector bands_to_read(static_cast(nBands)); + for (int i = 0; i < nBands; i++) { + if (bands[0] == 0) { + bands_to_read[static_cast(i)] = i + 1; + } else { + bands_to_read[static_cast(i)] = bands[i]; + } + + if (bands_to_read[static_cast(i)] > (int)GDALGetRasterCount(hRet)) { + GDALClose( hRet ); + stop("band number is not available: %i", bands_to_read[static_cast(i)]); + } + + } + LogicalVector unscale = true; + IntegerVector window(6); + // default window with all zeroes results in entire read (for warp) + // also supports vapour_raster_read atm + for (int i = 0; i < window.size(); i++) window[i] = 0; + + + // we can't do gdal_warped_vrt here ... was just trying something and realized + // that cant work + // + // GDALRasterIOExtraArg psExtraArg; + // psExtraArg = gdallibrary::init_resample_alg(resample); + // + // std::vector values( GDALGetRasterXSize(hRet) * GDALGetRasterYSize(hRet) * nBands ); + // CPLErr err = + // GDALDataset::FromHandle(hRet)->RasterIO(GF_Read, 0, 0, GDALGetRasterXSize(hRet), GDALGetRasterYSize(hRet), + // &values[0], GDALGetRasterXSize(hRet), GDALGetRasterYSize(hRet), GDT_Float64, + // nBands, &bands_to_read[0], + // 0, 0, 0, &psExtraArg); + + List outlist = gdalraster::gdal_read_band_values(GDALDataset::FromHandle(hRet), + window, + bands_to_read, + band_output_type, + resample, + unscale); + + GDALClose( hRet ); + return outlist; +} + +} // namespace gdalwarpgeneral +#endif diff --git a/src/000-warpgeneral.cpp b/src/000-warpgeneral.cpp new file mode 100644 index 00000000..49a62741 --- /dev/null +++ b/src/000-warpgeneral.cpp @@ -0,0 +1,30 @@ +#include +#include "gdallibrary/gdallibrary.h" +#include "gdalwarpgeneral/gdalwarpgeneral.h" + +using namespace Rcpp; + +// [[Rcpp::export]] +List warp_general_cpp(CharacterVector dsn, + CharacterVector target_crs, + NumericVector target_extent, + IntegerVector target_dim, + IntegerVector bands, + CharacterVector resample, + LogicalVector silent, + CharacterVector band_output_type, + CharacterVector options) { + return gdalwarpgeneral::gdal_warp_general(dsn, + target_crs, + target_extent, + target_dim, + bands, + resample, + silent, + band_output_type, + options); +} +// [[Rcpp::export]] +List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs) { + return gdalwarpgeneral::gdal_suggest_warp(dsn, target_crs); +} diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 5f0cee8a..58dd07f9 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -10,6 +10,37 @@ Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); #endif +// warp_general_cpp +List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); +RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, bands, resample, silent, band_output_type, options)); + return rcpp_result_gen; +END_RCPP +} +// warp_suggest_cpp +List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); +RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); + return rcpp_result_gen; +END_RCPP +} // set_gdal_config_cpp IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { @@ -631,6 +662,8 @@ END_RCPP } static const R_CallMethodDef CallEntries[] = { + {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 9}, + {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, From e1203fc62a79646036bbe96a88eec403afc0510d Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 8 Feb 2023 05:32:04 +0000 Subject: [PATCH 010/102] remove ldflags --- configure | 12 ++++++------ configure.ac | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/configure b/configure index b99caaa6..3750da85 100755 --- a/configure +++ b/configure @@ -3651,7 +3651,7 @@ _EOCONF { $as_echo "$as_me:${as_lineno-$LINENO}: checking GDAL: checking whether PROJ is available for linking:" >&5 $as_echo_n "checking GDAL: checking whether PROJ is available for linking:... " >&6; } -${CXX} ${CPPFLAGS} -o gdal_proj gdal_proj.cpp ${LIBS} ${LDFLAGS} 2> errors.txt +${CXX} ${CPPFLAGS} -o gdal_proj gdal_proj.cpp ${LIBS} 2> errors.txt if test `echo $?` -ne 0 ; then gdal_has_proj=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -3906,7 +3906,7 @@ $as_echo_n "checking PROJ: checking whether PROJ and sqlite3 are available for l ## LDFLAGS? CRAN says, I removed -sqlite3 which was a mistake (that's in LIBS already) ## have check on macbuilder that LIBS includes same pkg-config --libs proj as ## BDR (2022-11-15): -L/opt/R/arm64/lib -lproj -lc++ -lm -ldl -lsqlite3 -lz -lcurl -ltiff -lwebp -llzma -ljpeg -lz - ${CXX} ${CPPFLAGS} -o proj_conf_test proj_conf_test.cpp ${LIBS} ${LDFLAGS} 2> errors.txt + ${CXX} ${CPPFLAGS} -o proj_conf_test proj_conf_test.cpp ${LIBS} 2> errors.txt if test `echo $?` -ne 0 ; then proj6ok=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 @@ -3934,7 +3934,7 @@ fi #AC_MSG_NOTICE([PKG_LIBS: ${PKG_LIBS}]) -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} proj_version=`./proj_conf_test` @@ -3977,7 +3977,7 @@ int main(void) { } _EOCONF -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} if test -n "$proj_share_path" ; then PROJ_LIB="${proj_share_path}" ./proj_conf_test proj_share=`echo $?` @@ -4028,7 +4028,7 @@ int main(void) { } _EOCONF -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} if test -n "$proj_share_path" ; then PROJ_LIB="${proj_share_path}" ./proj_conf_test proj_share=`echo $?` @@ -4084,7 +4084,7 @@ int main(void) { } _EOCONF -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} if test -n "$proj_share_path" ; then PROJ_LIB="${proj_share_path}" ./proj_conf_test proj_share=`echo $?` diff --git a/configure.ac b/configure.ac index d12bbe33..6e60fd2a 100644 --- a/configure.ac +++ b/configure.ac @@ -323,7 +323,7 @@ int main(int argc, char *argv[]) { _EOCONF] AC_MSG_CHECKING(GDAL: checking whether PROJ is available for linking:) -${CXX} ${CPPFLAGS} -o gdal_proj gdal_proj.cpp ${LIBS} ${LDFLAGS} 2> errors.txt +${CXX} ${CPPFLAGS} -o gdal_proj gdal_proj.cpp ${LIBS} 2> errors.txt if test `echo $?` -ne 0 ; then gdal_has_proj=no AC_MSG_RESULT(no) @@ -480,7 +480,7 @@ _EOCONF] ## LDFLAGS? CRAN says, I removed -sqlite3 which was a mistake (that's in LIBS already) ## have check on macbuilder that LIBS includes same pkg-config --libs proj as ## BDR (2022-11-15): -L/opt/R/arm64/lib -lproj -lc++ -lm -ldl -lsqlite3 -lz -lcurl -ltiff -lwebp -llzma -ljpeg -lz - ${CXX} ${CPPFLAGS} -o proj_conf_test proj_conf_test.cpp ${LIBS} ${LDFLAGS} 2> errors.txt + ${CXX} ${CPPFLAGS} -o proj_conf_test proj_conf_test.cpp ${LIBS} 2> errors.txt if test `echo $?` -ne 0 ; then proj6ok=no AC_MSG_RESULT(no) @@ -506,7 +506,7 @@ fi #AC_MSG_NOTICE([PKG_LIBS: ${PKG_LIBS}]) -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} proj_version=`./proj_conf_test` @@ -545,7 +545,7 @@ int main(void) { } _EOCONF] -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} if test [ -n "$proj_share_path" ] ; then PROJ_LIB="${proj_share_path}" ./proj_conf_test proj_share=`echo $?` @@ -593,7 +593,7 @@ int main(void) { } _EOCONF] -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} if test [ -n "$proj_share_path" ] ; then PROJ_LIB="${proj_share_path}" ./proj_conf_test proj_share=`echo $?` @@ -646,7 +646,7 @@ int main(void) { } _EOCONF] -${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} ${LDFLAGS} +${CC} ${CFLAGS} ${CPPFLAGS} -o proj_conf_test proj_conf_test.c ${PROJ_LIBS} if test [ -n "$proj_share_path" ] ; then PROJ_LIB="${proj_share_path}" ./proj_conf_test proj_share=`echo $?` From e2d6d1f337d019e268904ee6356f37baefe037b0 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 8 Feb 2023 05:47:12 +0000 Subject: [PATCH 011/102] bump --- DESCRIPTION | 2 +- NEWS.md | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index a7bed8b4..9e21ac19 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3 +Version: 0.9.3.9001 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index e0b566c1..05c96cde 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +# vapour dev + +* remove LDFLAGS from configure, as per sf #1369 and vapour #188, thanks to @gremms1 and @sgoslee for + report on Fedora. + # vapour 0.9.3 * Update to CRAN Makevars.ucrt. From 975e2ba76a566e91a8f883ad4b0564e0af0c338b Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sat, 11 Feb 2023 00:35:07 +0000 Subject: [PATCH 012/102] it's not 2011 anymore --- DESCRIPTION | 4 ++-- NEWS.md | 2 ++ configure | 25 ++----------------------- configure.ac | 22 ++-------------------- src/Makevars.in | 2 +- src/Makevars.ucrt | 2 +- src/Makevars.win | 2 +- 7 files changed, 11 insertions(+), 48 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 9e21ac19..87d9d49e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3.9001 +Version: 0.9.3.9002 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), @@ -35,7 +35,7 @@ Suggests: markdown, rmarkdown, spelling -SystemRequirements: libgdal-dev, GDAL (>= 2.2.3), PROJ (>= 4.8.0), C++11 +SystemRequirements: libgdal-dev, GDAL (>= 2.2.3), PROJ (>= 4.8.0) VignetteBuilder: knitr URL: https://github.com/hypertidy/vapour BugReports: https://github.com/hypertidy/vapour/issues diff --git a/NEWS.md b/NEWS.md index 05c96cde..69f5eb51 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # vapour dev +* Removed C++11 requirement. + * remove LDFLAGS from configure, as per sf #1369 and vapour #188, thanks to @gremms1 and @sgoslee for report on Fedora. diff --git a/configure b/configure index 3750da85..e492fce0 100755 --- a/configure +++ b/configure @@ -2111,25 +2111,17 @@ RVER_MINOR=`echo ${RVER} | cut -f2 -d"."` RVER_PATCH=`echo ${RVER} | cut -f3 -d"."` if test $RVER_MAJOR = "development"; then - CXX11=`"${RBIN}" CMD config CXX11` - CXX11STD=`"${RBIN}" CMD config CXX11STD` + CXX=`"${RBIN}" CMD config CXX` else if test $RVER_MAJOR -lt 3 -o $RVER_MAJOR -eq 3 -a $RVER_MINOR -lt 3; then as_fn_error $? "vapour is not compatible with R versions before 3.3.0" "$LINENO" 5 else - if test $RVER_MAJOR -eq 3 -a $RVER_MINOR -eq 3; then - CXX11=`"${RBIN}" CMD config CXX1X` - CXX11STD=`"${RBIN}" CMD config CXX1XSTD` - else - CXX11=`"${RBIN}" CMD config CXX11` - CXX11STD=`"${RBIN}" CMD config CXX11STD` - fi + CXX=`"${RBIN}" CMD config CXX` fi fi # pick all flags for testing from R : ${CC=`"${RBIN}" CMD config CC`} -: ${CXX=${CXX11} ${CXX11STD}} : ${CFLAGS=`"${RBIN}" CMD config CFLAGS`} : ${CPPFLAGS=`"${RBIN}" CMD config CPPFLAGS`} : ${CXXFLAGS=`"${RBIN}" CMD config CXXFLAGS`} @@ -3565,19 +3557,6 @@ else fi fi -GDAL_DATA_TEST_FILE="${GDAL_DATADIR}/pcs.csv" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking GDAL: ${GDAL_DATADIR}/pcs.csv readable" >&5 -$as_echo_n "checking GDAL: ${GDAL_DATADIR}/pcs.csv readable... " >&6; } -if test -r "${GDAL_DATA_TEST_FILE}" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - if test "${GDAL_GE_250}" = "no" ; then - as_fn_error $? "pcs.csv not found in GDAL data directory." "$LINENO" 5 - fi -fi # Optional local copy of GDAL datadir and PROJ_LIB diff --git a/configure.ac b/configure.ac index 6e60fd2a..90b9fc75 100644 --- a/configure.ac +++ b/configure.ac @@ -67,25 +67,17 @@ RVER_MINOR=`echo ${RVER} | cut -f2 -d"."` RVER_PATCH=`echo ${RVER} | cut -f3 -d"."` if test [$RVER_MAJOR = "development"]; then - CXX11=`"${RBIN}" CMD config CXX11` - CXX11STD=`"${RBIN}" CMD config CXX11STD` + CXX=`"${RBIN}" CMD config CXX` else if test [$RVER_MAJOR -lt 3] -o [$RVER_MAJOR -eq 3 -a $RVER_MINOR -lt 3]; then AC_MSG_ERROR([vapour is not compatible with R versions before 3.3.0]) else - if test [$RVER_MAJOR -eq 3 -a $RVER_MINOR -eq 3]; then - CXX11=`"${RBIN}" CMD config CXX1X` - CXX11STD=`"${RBIN}" CMD config CXX1XSTD` - else - CXX11=`"${RBIN}" CMD config CXX11` - CXX11STD=`"${RBIN}" CMD config CXX11STD` - fi + CXX=`"${RBIN}" CMD config CXX` fi fi # pick all flags for testing from R : ${CC=`"${RBIN}" CMD config CC`} -: ${CXX=${CXX11} ${CXX11STD}} : ${CFLAGS=`"${RBIN}" CMD config CFLAGS`} : ${CPPFLAGS=`"${RBIN}" CMD config CPPFLAGS`} : ${CXXFLAGS=`"${RBIN}" CMD config CXXFLAGS`} @@ -251,16 +243,6 @@ else fi fi -GDAL_DATA_TEST_FILE="${GDAL_DATADIR}/pcs.csv" -AC_MSG_CHECKING(GDAL: ${GDAL_DATADIR}/pcs.csv readable) -if test -r "${GDAL_DATA_TEST_FILE}" ; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) - if test "${GDAL_GE_250}" = "no" ; then - AC_MSG_ERROR([pcs.csv not found in GDAL data directory.]) - fi -fi # Optional local copy of GDAL datadir and PROJ_LIB diff --git a/src/Makevars.in b/src/Makevars.in index a10ad8ed..6ffcf0a8 100644 --- a/src/Makevars.in +++ b/src/Makevars.in @@ -1,3 +1,3 @@ PKG_CPPFLAGS=@PKG_CPPFLAGS@ -I../inst/include/ PKG_LIBS=@PKG_LIBS@ -CXX_STD=CXX11 +CXX_STD=CXX diff --git a/src/Makevars.ucrt b/src/Makevars.ucrt index 75479143..83b54ce8 100644 --- a/src/Makevars.ucrt +++ b/src/Makevars.ucrt @@ -8,7 +8,7 @@ PKG_CPPFLAGS =\ PKG_LIBS = \ -fopenmp -lgdal -larmadillo -lopenblas -lgfortran -lquadmath -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 -CXX_STD = CXX11 +CXX_STD = CXX all: clean winlibs diff --git a/src/Makevars.win b/src/Makevars.win index 07db2331..5f5d0542 100644 --- a/src/Makevars.win +++ b/src/Makevars.win @@ -21,7 +21,7 @@ PKG_LIBS = \ all: clean winlibs -CXX_STD = CXX11 +CXX_STD = CXX winlibs: mkdir -p ../inst From 3166a61a22b19315064b638ab2e30917a89c6054 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sat, 11 Feb 2023 01:16:55 +0000 Subject: [PATCH 013/102] add target_res to general warper --- R/00_warpgeneral.R | 53 +++++++++++++++++++ R/RcppExports.R | 4 +- .../include/gdalwarpgeneral/gdalwarpgeneral.h | 28 ++++++++++ src/000-warpgeneral.cpp | 2 + src/RcppExports.cpp | 9 ++-- 5 files changed, 90 insertions(+), 6 deletions(-) create mode 100644 R/00_warpgeneral.R diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R new file mode 100644 index 00000000..970fd8b7 --- /dev/null +++ b/R/00_warpgeneral.R @@ -0,0 +1,53 @@ + + +imfun <- function(X) { + ximage::ximage(matrix(X[[1]], attr(X, "dimension")[2L], byrow = TRUE), + extent = attr(X, "extent"), asp = 1) + lines(whatarelief::coastline(attr(X, "extent"), projection = attr(X, "projection"), dimension = c(512, 512))) +} + + +## wrapper around in-dev vapour function to simplify the warper interface (let GDAL do the work) +#' Title +#' +#' @param dsn +#' @param target_crs +#' @param target_dim +#' @param target_ext +#' @param target_res +#' @param resample +#' @param bands +#' +#' @return +#' @noRd +#' +#' @examples +#' dsn <- "inst/extdata/sst.tif" +#' par(mfrow = c(2, 2)) +#' ## do nothing, get native +#' X <- warp_general(dsn) +#' imfun(X) +#' +#' ## set resolution (or dimension, extent, crs, or combination thereof - GDAL will report/resolve incompatible opts) +#' X1 <- warp_general(dsn, target_res = 1) +#' imfun(X1) +#' ## warp whole grid to give res +#' X2 <- warp_general(dsn, target_res = 25000, target_crs = "EPSG:32755") +#' imfun(X2) +#' +#' ## specify exactly (as per vapour originally) +#' X3 <- warp_general(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") +#' imfun(X3) +warp_general <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, + resample = "near", bands = 1L) { + + if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) + if (is.null(target_crs)) target_crs <- "" + if (is.null(target_ext)) target_ext <- numeric() + if (is.null(target_dim)) target_dim <- integer() #info$dimension + if (is.null(target_res)) target_res <- numeric() ## TODO + vapour:::warp_general_cpp(dsn, target_crs, target_ext, target_dim, target_res, bands = bands, resample = resample, silent = FALSE, band_output_type = "Float64", options = character()) +} + + + diff --git a/R/RcppExports.R b/R/RcppExports.R index 96976765..da411d03 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,8 +1,8 @@ # Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 -warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, bands, resample, silent, band_output_type, options) { - .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, bands, resample, silent, band_output_type, options) +warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options) { + .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options) } warp_suggest_cpp <- function(dsn, target_crs) { diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index bc68b4c4..1768989b 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -66,6 +66,7 @@ inline List gdal_warp_general(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, + NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, @@ -148,6 +149,13 @@ inline List gdal_warp_general(CharacterVector dsn, papszArg = CSLAddString(papszArg, CPLSPrintf("%d", nYSize)); } + if (target_res.size() > 0) { + int XRes = target_res[0]; + int YRes = target_res[1]; + papszArg = CSLAddString(papszArg, "-tr"); + papszArg = CSLAddString(papszArg, CPLSPrintf("%d", XRes)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%d", YRes)); + } if (resample.size() > 0) { papszArg = CSLAddString(papszArg, "-r"); papszArg = CSLAddString(papszArg, resample[0]); @@ -238,6 +246,26 @@ inline List gdal_warp_general(CharacterVector dsn, resample, unscale); + // shove the grid details on as attributes + // get the extent ... + R_xlen_t dimx = ((GDALDataset*)hRet)->GetRasterXSize(); + R_xlen_t dimy = ((GDALDataset*)hRet)->GetRasterYSize(); + double adfGeoTransform[6]; + //poDataset->GetGeoTransform( adfGeoTransform ); + GDALGetGeoTransform(hRet, adfGeoTransform ); + double xmin = adfGeoTransform[0]; + double xmax = adfGeoTransform[0] + dimx * adfGeoTransform[1]; + double ymin = adfGeoTransform[3] + dimy * adfGeoTransform[5]; + double ymax = adfGeoTransform[3]; + + + const char *proj; + proj = GDALGetProjectionRef(hRet); + //https://gis.stackexchange.com/questions/164279/how-do-i-create-ogrspatialreference-from-raster-files-georeference-c + outlist.attr("dimension") = NumericVector::create(dimx, dimy); + outlist.attr("extent") = NumericVector::create(xmin, xmax, ymin, ymax); + outlist.attr("projection") = CharacterVector::create(proj); + GDALClose( hRet ); return outlist; } diff --git a/src/000-warpgeneral.cpp b/src/000-warpgeneral.cpp index 49a62741..45269cca 100644 --- a/src/000-warpgeneral.cpp +++ b/src/000-warpgeneral.cpp @@ -9,6 +9,7 @@ List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, + NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, @@ -18,6 +19,7 @@ List warp_general_cpp(CharacterVector dsn, target_crs, target_extent, target_dim, + target_res, bands, resample, silent, diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 58dd07f9..6566721f 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -11,8 +11,8 @@ Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); #endif // warp_general_cpp -List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); -RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { +List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); +RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -20,12 +20,13 @@ BEGIN_RCPP Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, bands, resample, silent, band_output_type, options)); + rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options)); return rcpp_result_gen; END_RCPP } @@ -662,7 +663,7 @@ END_RCPP } static const R_CallMethodDef CallEntries[] = { - {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 9}, + {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 10}, {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, From 2305203b594be3ea569582213580ec2e0ae6c7ed Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sat, 11 Feb 2023 08:59:01 +0000 Subject: [PATCH 014/102] more warper --- R/00_warpgeneral.R | 37 +++++++++++++++++-- .../include/gdalwarpgeneral/gdalwarpgeneral.h | 18 ++------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 970fd8b7..fedfd4f0 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -38,16 +38,47 @@ imfun <- function(X) { #' ## specify exactly (as per vapour originally) #' X3 <- warp_general(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") #' imfun(X3) -warp_general <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, - resample = "near", bands = 1L) { +gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, + resample = "near", bands = 1L, band_output_type = NULL, options = character()) { if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) if (is.null(target_crs)) target_crs <- "" if (is.null(target_ext)) target_ext <- numeric() if (is.null(target_dim)) target_dim <- integer() #info$dimension if (is.null(target_res)) target_res <- numeric() ## TODO - vapour:::warp_general_cpp(dsn, target_crs, target_ext, target_dim, target_res, bands = bands, resample = resample, silent = FALSE, band_output_type = "Float64", options = character()) + if (is.null(band_output_type)) band_output_type <- "Float64" + vapour:::warp_general_cpp(dsn, target_crs, + target_ext, + target_dim, + target_res, + bands = bands, + resample = resample, + silent = FALSE, band_output_type = band_output_type, + options = options) } +gdal_raster_image <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, + resample = "near", bands = 1:3, band_output_type = NULL, options = character()) { + + if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) + if (is.null(target_crs)) target_crs <- "" + if (is.null(target_ext)) target_ext <- numeric() + if (is.null(target_dim)) target_dim <- integer() #info$dimension + if (is.null(target_res)) target_res <- numeric() ## TODO + if (is.null(band_output_type)) band_output_type <- "UInt8" + bytes <- vapour:::warp_general_cpp(dsn, target_crs, + target_ext, + target_dim, + target_res, + bands = bands, + resample = resample, + silent = FALSE, band_output_type = band_output_type, + options = options) + atts <- attributes(bytes) + out <- list(as.vector(grDevices::as.raster(array(unlist(bytes, use.names = FALSE), c(length(bytes[[1]]), 1, max(c(3, length(bytes)))))))) + attributes(out) <- atts + out +} + diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index 1768989b..231bfb56 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -57,7 +57,7 @@ List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) { // remove source_WKT (because VRT) // remove source_extent (VRT) // target_extent must be optional -// target_dim must be optional +// target_dim must be optional, // expose SuggestedWarpOutput to R // band_output_type -ot // resample -r @@ -179,7 +179,7 @@ inline List gdal_warp_general(CharacterVector dsn, CPLFree(poSrcDS); if (hRet == nullptr) { - Rcpp::stop("something went wrong!"); + Rcpp::stop("data source could not be processed with GDALWarp api"); } @@ -226,19 +226,7 @@ inline List gdal_warp_general(CharacterVector dsn, for (int i = 0; i < window.size(); i++) window[i] = 0; - // we can't do gdal_warped_vrt here ... was just trying something and realized - // that cant work - // - // GDALRasterIOExtraArg psExtraArg; - // psExtraArg = gdallibrary::init_resample_alg(resample); - // - // std::vector values( GDALGetRasterXSize(hRet) * GDALGetRasterYSize(hRet) * nBands ); - // CPLErr err = - // GDALDataset::FromHandle(hRet)->RasterIO(GF_Read, 0, 0, GDALGetRasterXSize(hRet), GDALGetRasterYSize(hRet), - // &values[0], GDALGetRasterXSize(hRet), GDALGetRasterYSize(hRet), GDT_Float64, - // nBands, &bands_to_read[0], - // 0, 0, 0, &psExtraArg); - + List outlist = gdalraster::gdal_read_band_values(GDALDataset::FromHandle(hRet), window, bands_to_read, From 3208620eb8220c5874bc64f44c07f178b4ca24be Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 13 Feb 2023 00:54:56 +0000 Subject: [PATCH 015/102] WIP option to write to DSN --- R/00_warpgeneral.R | 47 ++++-- R/RcppExports.R | 4 +- .../include/gdalwarpgeneral/gdalwarpgeneral.h | 151 ++++++++++-------- src/000-warpgeneral.cpp | 6 +- src/RcppExports.cpp | 9 +- 5 files changed, 127 insertions(+), 90 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index fedfd4f0..720fbe1e 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -25,18 +25,18 @@ imfun <- function(X) { #' dsn <- "inst/extdata/sst.tif" #' par(mfrow = c(2, 2)) #' ## do nothing, get native -#' X <- warp_general(dsn) +#' X <- gdal_raster_data(dsn) #' imfun(X) #' #' ## set resolution (or dimension, extent, crs, or combination thereof - GDAL will report/resolve incompatible opts) -#' X1 <- warp_general(dsn, target_res = 1) +#' X1 <- gdal_raster_data(dsn, target_res = 1) #' imfun(X1) #' ## warp whole grid to give res -#' X2 <- warp_general(dsn, target_res = 25000, target_crs = "EPSG:32755") +#' X2 <- gdal_raster_data(dsn, target_res = 25000, target_crs = "EPSG:32755") #' imfun(X2) #' #' ## specify exactly (as per vapour originally) -#' X3 <- warp_general(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") +#' X3 <- gdal_raster_data(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") #' imfun(X3) gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, resample = "near", bands = 1L, band_output_type = NULL, options = character()) { @@ -48,16 +48,41 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_e if (is.null(target_res)) target_res <- numeric() ## TODO if (is.null(band_output_type)) band_output_type <- "Float64" vapour:::warp_general_cpp(dsn, target_crs, - target_ext, - target_dim, - target_res, - bands = bands, + as.numeric(target_ext), + as.integer(target_dim), + as.numeric(target_res), + bands = as.integer(bands), resample = resample, silent = FALSE, band_output_type = band_output_type, - options = options) + options = options, + dsn_outname = "") } - +gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, + resample = "near", bands = 1L, band_output_type = NULL, options = character(), out_dsn = tempfile(fileext = ".tif")) { + + if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) + if (is.null(target_crs)) target_crs <- "" + if (is.null(target_ext)) target_ext <- numeric() + if (is.null(target_dim)) target_dim <- integer() #info$dimension + if (is.null(target_res)) target_res <- numeric() ## TODO + if (is.null(band_output_type)) band_output_type <- "Float64" + #if (grepl("tif$", out_dsn)) { + ## we'll have to do some work here + ## currently always COG + options <- c(options, "-of", "COG") + + #} + vapour:::warp_general_cpp(dsn, target_crs, + target_ext, + target_dim, + target_res, + bands = bands, + resample = resample, + silent = FALSE, band_output_type = band_output_type, + options = options, + dsn_outname = out_dsn[1L]) +} gdal_raster_image <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, resample = "near", bands = 1:3, band_output_type = NULL, options = character()) { @@ -74,7 +99,7 @@ gdal_raster_image <- function(dsn, target_crs = NULL, target_dim = NULL, target_ bands = bands, resample = resample, silent = FALSE, band_output_type = band_output_type, - options = options) + options = options, dsn_outname = "") atts <- attributes(bytes) out <- list(as.vector(grDevices::as.raster(array(unlist(bytes, use.names = FALSE), c(length(bytes[[1]]), 1, max(c(3, length(bytes)))))))) attributes(out) <- atts diff --git a/R/RcppExports.R b/R/RcppExports.R index da411d03..89f28b49 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,8 +1,8 @@ # Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 -warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options) { - .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options) +warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { + .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) } warp_suggest_cpp <- function(dsn, target_crs) { diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index 231bfb56..5e3a7f3c 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -19,7 +19,7 @@ List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) { GDALDataset* poSrcDS = (GDALDataset*) gdalraster::gdalH_open_dsn(dsn[0], 0); double adfGeoTransform[6]; poSrcDS->GetGeoTransform( adfGeoTransform ); - double outGeoTransform[6]; + int nXSize, nYSize; double adfExtent[4]; GDALTransformerFunc pfnTransformer; @@ -31,7 +31,7 @@ List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) { nullptr, nullptr, target_crs[0], - FALSE, 0.0, 1 ); + FALSE, 0.0, 1 ); GDALSuggestedWarpOutput2(poSrcDS, pfnTransformer, pfnTransformerArg, adfGeoTransform, &nXSize, &nYSize, adfExtent, 0); @@ -63,15 +63,16 @@ List gdal_suggest_warp(CharacterVector dsn, CharacterVector target_crs) { // resample -r // bands -b n0 -b n1 inline List gdal_warp_general(CharacterVector dsn, - CharacterVector target_crs, - NumericVector target_extent, - IntegerVector target_dim, - NumericVector target_res, - IntegerVector bands, - CharacterVector resample, - LogicalVector silent, - CharacterVector band_output_type, - CharacterVector options) { + CharacterVector target_crs, + NumericVector target_extent, + IntegerVector target_dim, + NumericVector target_res, + IntegerVector bands, + CharacterVector resample, + LogicalVector silent, + CharacterVector band_output_type, + CharacterVector options, + CharacterVector dsn_outname) { GDALDatasetH *poSrcDS; @@ -94,10 +95,16 @@ inline List gdal_warp_general(CharacterVector dsn, // we manually handle -r, -te, -t_srs, -ts, -of, // but the rest passed in as wo, to, oo, doo, or general (non general ones get -wo/-to/-oo/-doo prepended in R) char** papszArg = nullptr; - papszArg = CSLAddString(papszArg, "-of"); papszArg = CSLAddString(papszArg, "MEM"); + bool write_dsn = false; + if (EQUAL(dsn_outname[0], "")) { + + } else { + write_dsn = true; + } + if (!target_crs[0].empty()) { OGRSpatialReference *oTargetSRS = nullptr; oTargetSRS = new OGRSpatialReference; @@ -129,18 +136,18 @@ inline List gdal_warp_general(CharacterVector dsn, } if (target_extent.size() > 0) { - double dfMinX = target_extent[0]; - double dfMaxX = target_extent[1]; - double dfMinY = target_extent[2]; - double dfMaxY = target_extent[3]; - - papszArg = CSLAddString(papszArg, "-te"); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMinX)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMinY)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMaxX)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMaxY)); + double dfMinX = target_extent[0]; + double dfMaxX = target_extent[1]; + double dfMinY = target_extent[2]; + double dfMaxY = target_extent[3]; + + papszArg = CSLAddString(papszArg, "-te"); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMinX)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMinY)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMaxX)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%.18g,", dfMaxY)); } - + if (target_dim.size() > 0) { int nXSize = target_dim[0]; int nYSize = target_dim[1]; @@ -148,7 +155,7 @@ inline List gdal_warp_general(CharacterVector dsn, papszArg = CSLAddString(papszArg, CPLSPrintf("%d", nXSize)); papszArg = CSLAddString(papszArg, CPLSPrintf("%d", nYSize)); } - + if (target_res.size() > 0) { int XRes = target_res[0]; int YRes = target_res[1]; @@ -157,22 +164,31 @@ inline List gdal_warp_general(CharacterVector dsn, papszArg = CSLAddString(papszArg, CPLSPrintf("%d", YRes)); } if (resample.size() > 0) { - papszArg = CSLAddString(papszArg, "-r"); - papszArg = CSLAddString(papszArg, resample[0]); + papszArg = CSLAddString(papszArg, "-r"); + papszArg = CSLAddString(papszArg, resample[0]); } for (int gwopt = 0; gwopt < options.length(); gwopt++) { papszArg = CSLAddString(papszArg, options[gwopt]); } + + // List out = List::create(1); + // CharacterVector sss(CSLCount (papszArg)); + // for (int sii = 0; sii < sss.size(); sii++) sss[sii] = papszArg[sii]; + // out[0] = sss; + // return out; + auto psOptions = GDALWarpAppOptionsNew(papszArg, nullptr); CSLDestroy(papszArg); GDALWarpAppOptionsSetProgress(psOptions, NULL, NULL ); + + + GDALDatasetH hRet = GDALWarp(dsn_outname[0], nullptr, + static_cast(dsn.size()), poSrcDS, + psOptions, nullptr); - GDALDatasetH hRet = GDALWarp( "", nullptr, - static_cast(dsn.size()), poSrcDS, - psOptions, nullptr); - - CPLAssert( hRet != NULL ); GDALWarpAppOptionsFree(psOptions); + + CPLAssert( hRet != NULL ); for (int si = 0; si < dsn.size(); si++) { GDALClose( (GDALDataset *)poSrcDS[si] ); } @@ -183,56 +199,49 @@ inline List gdal_warp_general(CharacterVector dsn, } - /// this doesn't work because we don't keep the file name/s - if (band_output_type[0] == "vrt") { - // GDALDriver * vDriver = (GDALDriver *)GDALGetDriverByName("VRT"); - // GDALDatasetH VRTDS = vDriver->CreateCopy("", (GDALDataset *) hRet, 0, nullptr, nullptr, nullptr); - // + List outlist; + if (write_dsn) { + outlist.push_back(dsn_outname); - CharacterVector oof(1); - CharacterVector infile(1); - LogicalVector filein(1); - oof[0] = gdalraster::gdal_vrt_text((GDALDataset *) hRet); - GDALClose(hRet); - return List::create(oof); - } - - - // Prepare to read bands - int nBands; - if (bands[0] == 0) { - nBands = (int)GDALGetRasterCount(hRet); } else { - nBands = (int)bands.size(); - } - std::vector bands_to_read(static_cast(nBands)); - for (int i = 0; i < nBands; i++) { + // Prepare to read bands + int nBands; if (bands[0] == 0) { - bands_to_read[static_cast(i)] = i + 1; + nBands = (int)GDALGetRasterCount(hRet); } else { - bands_to_read[static_cast(i)] = bands[i]; + nBands = (int)bands.size(); } - - if (bands_to_read[static_cast(i)] > (int)GDALGetRasterCount(hRet)) { - GDALClose( hRet ); - stop("band number is not available: %i", bands_to_read[static_cast(i)]); + std::vector bands_to_read(static_cast(nBands)); + for (int i = 0; i < nBands; i++) { + if (bands[0] == 0) { + bands_to_read[static_cast(i)] = i + 1; + } else { + bands_to_read[static_cast(i)] = bands[i]; + } + + if (bands_to_read[static_cast(i)] > (int)GDALGetRasterCount(hRet)) { + GDALClose( hRet ); + stop("band number is not available: %i", bands_to_read[static_cast(i)]); + } + } + LogicalVector unscale = true; + IntegerVector window(6); + // default window with all zeroes results in entire read (for warp) + // also supports vapour_raster_read atm + for (int i = 0; i < window.size(); i++) window[i] = 0; + + outlist = gdalraster::gdal_read_band_values(GDALDataset::FromHandle(hRet), + window, + bands_to_read, + band_output_type, + resample, + unscale); } - LogicalVector unscale = true; - IntegerVector window(6); - // default window with all zeroes results in entire read (for warp) - // also supports vapour_raster_read atm - for (int i = 0; i < window.size(); i++) window[i] = 0; - - List outlist = gdalraster::gdal_read_band_values(GDALDataset::FromHandle(hRet), - window, - bands_to_read, - band_output_type, - resample, - unscale); + // shove the grid details on as attributes // get the extent ... diff --git a/src/000-warpgeneral.cpp b/src/000-warpgeneral.cpp index 45269cca..d0ebc2db 100644 --- a/src/000-warpgeneral.cpp +++ b/src/000-warpgeneral.cpp @@ -14,7 +14,8 @@ List warp_general_cpp(CharacterVector dsn, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, - CharacterVector options) { + CharacterVector options, + CharacterVector dsn_outname) { return gdalwarpgeneral::gdal_warp_general(dsn, target_crs, target_extent, @@ -24,7 +25,8 @@ List warp_general_cpp(CharacterVector dsn, resample, silent, band_output_type, - options); + options, + dsn_outname); } // [[Rcpp::export]] List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs) { diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 6566721f..f7e0dd28 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -11,8 +11,8 @@ Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); #endif // warp_general_cpp -List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); -RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { +List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); +RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -26,7 +26,8 @@ BEGIN_RCPP Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options)); + Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); + rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); return rcpp_result_gen; END_RCPP } @@ -663,7 +664,7 @@ END_RCPP } static const R_CallMethodDef CallEntries[] = { - {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 10}, + {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, From 9b3ddc6adf347f81a8aee5699ee51a9b03682c12 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 13 Feb 2023 21:36:15 +0000 Subject: [PATCH 016/102] vapour_crs_is_lonlat --- DESCRIPTION | 2 +- NEWS.md | 2 ++ R/RcppExports.R | 4 ++++ R/vapour-gdal-library.R | 23 +++++++++++++++++++++++ inst/include/gdallibrary/gdallibrary.h | 11 +++++++++++ src/00_gdal.cpp | 6 ++++++ src/RcppExports.cpp | 12 ++++++++++++ 7 files changed, 59 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 87d9d49e..1d859bd5 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3.9002 +Version: 0.9.3.9003 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index 69f5eb51..e292ca4d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # vapour dev +* New function `vapour_crs_is_lonlat()` to test crs string. + * Removed C++11 requirement. * remove LDFLAGS from configure, as per sf #1369 and vapour #188, thanks to @gremms1 and @sgoslee for diff --git a/R/RcppExports.R b/R/RcppExports.R index cd582233..2f8eed18 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -33,6 +33,10 @@ proj_to_wkt_gdal_cpp <- function(proj4string) { .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) } +crs_is_lonlat_cpp <- function(input_string) { + .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) +} + register_gdal_cpp <- function() { .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') } diff --git a/R/vapour-gdal-library.R b/R/vapour-gdal-library.R index 59004f1a..046de068 100644 --- a/R/vapour-gdal-library.R +++ b/R/vapour-gdal-library.R @@ -75,6 +75,29 @@ vapour_srs_wkt <- function(crs) { } +#' Is the CRS string representative of angular coordinates +#' +#' Returns `TRUE` if this is longitude latitude data. Missing, malformed, zero-length values are disallowed. +#' +#' @param crs character string of length 1 +#' +#' @return logical value `TRUE` for lonlat, `FALSE` otherwise +#' @export +#' +#' @examples +#' vapour_crs_is_lonlat("+proj=laea") +#' vapour_crs_is_lonlat("+proj=longlat") +#' vapour_crs_is_lonlat("+init=EPSG:4326") +#' vapour_crs_is_lonlat("OGC:CRS84") +#' vapour_crs_is_lonlat("WGS84") +#' vapour_crs_is_lonlat("NAD27") +#' vapour_crs_is_lonlat("EPSG:3031") +vapour_crs_is_lonlat <- function(crs) { + crs_in <- crs[1L] + if (length(crs) > 1L) message("multiple crs input is not supported, using the first only") + if (is.na(crs_in) || is.null(crs_in) || length(crs_in) < 1L || !nzchar(crs_in)) stop(sprintf("problem with input crs: %s", crs_in)) + crs_is_lonlat_cpp(crs) +} #' Summary of available geometry #' diff --git a/inst/include/gdallibrary/gdallibrary.h b/inst/include/gdallibrary/gdallibrary.h index ee429535..ef11be5f 100644 --- a/inst/include/gdallibrary/gdallibrary.h +++ b/inst/include/gdallibrary/gdallibrary.h @@ -668,6 +668,17 @@ inline CharacterVector gdal_proj_to_wkt(CharacterVector proj_str) { return out; } +inline LogicalVector gdal_crs_is_lonlat(CharacterVector proj_str) { + OGRSpatialReference oSRS; + + oSRS.SetFromUserInput(proj_str[0]); + LogicalVector out(1); + out[0] = oSRS.IsGeographic() > 0; + + return out; +} + + inline List gdal_projection_info(CharacterVector dsn, IntegerVector layer, CharacterVector sql) diff --git a/src/00_gdal.cpp b/src/00_gdal.cpp index 2e1de34d..44bddfb2 100644 --- a/src/00_gdal.cpp +++ b/src/00_gdal.cpp @@ -37,6 +37,12 @@ CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string) { return gdallibrary::gdal_proj_to_wkt(proj4string); } +// [[Rcpp::export]] +LogicalVector crs_is_lonlat_cpp(CharacterVector input_string) { + return gdallibrary::gdal_crs_is_lonlat(input_string); +} + + // [[Rcpp::export]] LogicalVector register_gdal_cpp() { gdallibrary::gdal_register_all(); diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 5f0cee8a..87521fa9 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -97,6 +97,17 @@ BEGIN_RCPP return rcpp_result_gen; END_RCPP } +// crs_is_lonlat_cpp +LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); +RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); + rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); + return rcpp_result_gen; +END_RCPP +} // register_gdal_cpp LogicalVector register_gdal_cpp(); RcppExport SEXP _vapour_register_gdal_cpp() { @@ -639,6 +650,7 @@ static const R_CallMethodDef CallEntries[] = { {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, + {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, From b5dabdd1d126b7688150d1fb4df01d6c7b643ce0 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 14 Feb 2023 03:42:25 +0000 Subject: [PATCH 017/102] export --- NAMESPACE | 1 + man/vapour_crs_is_lonlat.Rd | 26 ++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 man/vapour_crs_is_lonlat.Rd diff --git a/NAMESPACE b/NAMESPACE index 13511321..85dfa5ff 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,6 +2,7 @@ export(vapour_all_drivers) export(vapour_create) +export(vapour_crs_is_lonlat) export(vapour_driver) export(vapour_gdal_version) export(vapour_geom_name) diff --git a/man/vapour_crs_is_lonlat.Rd b/man/vapour_crs_is_lonlat.Rd new file mode 100644 index 00000000..8149a5dd --- /dev/null +++ b/man/vapour_crs_is_lonlat.Rd @@ -0,0 +1,26 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/vapour-gdal-library.R +\name{vapour_crs_is_lonlat} +\alias{vapour_crs_is_lonlat} +\title{Is the CRS string representative of angular coordinates} +\usage{ +vapour_crs_is_lonlat(crs) +} +\arguments{ +\item{crs}{character string of length 1} +} +\value{ +logical value \code{TRUE} for lonlat, \code{FALSE} otherwise +} +\description{ +Returns \code{TRUE} if this is longitude latitude data. Missing, malformed, zero-length values are disallowed. +} +\examples{ +vapour_crs_is_lonlat("+proj=laea") +vapour_crs_is_lonlat("+proj=longlat") +vapour_crs_is_lonlat("+init=EPSG:4326") +vapour_crs_is_lonlat("OGC:CRS84") +vapour_crs_is_lonlat("WGS84") +vapour_crs_is_lonlat("NAD27") +vapour_crs_is_lonlat("EPSG:3031") +} From 4fa25d25e826b2b1483a675b542596afce5ee0f8 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 14 Feb 2023 23:55:24 +0000 Subject: [PATCH 018/102] drop meta --- DESCRIPTION | 2 +- NEWS.md | 6 ++++++ R/00_warpgeneral.R | 13 +++---------- R/RcppExports.R | 8 ++++---- R/raster-input.R | 7 +++++-- R/vapour_vrt.R | 5 +++-- inst/include/gdalraster/gdalraster.h | 24 +++++++++++++----------- inst/include/gdalwarpmem/gdalwarpmem.h | 5 +++-- man/vapour_vrt.Rd | 5 ++++- man/vapour_warp_raster.Rd | 5 ++++- src/00_raster.cpp | 5 +++-- src/00_vrt.cpp | 4 ++-- src/RcppExports.cpp | 18 ++++++++++-------- 13 files changed, 61 insertions(+), 46 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 1d859bd5..21ccc593 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3.9003 +Version: 0.9.3.9004 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index e292ca4d..303b16f4 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,11 @@ # vapour dev +* New capability to drop dataset and band metdata, used by functions `vapour_vrt()` and `vapour_warp_raster()` which gain a new argument 'nomd', which +is FALSE by default. If TRUE, the dataset and band metadata are removed from an open dataset before it is converted to VRT. + +This particularly makes VRT DSN strings a lot smaller, for use by whatarelief and raadtools for example. There should be no change to current default uses, the argument 'nomd' must be specified for the change. + + * New function `vapour_crs_is_lonlat()` to test crs string. * Removed C++11 requirement. diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 720fbe1e..6dd77bad 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -1,12 +1,5 @@ -imfun <- function(X) { - ximage::ximage(matrix(X[[1]], attr(X, "dimension")[2L], byrow = TRUE), - extent = attr(X, "extent"), asp = 1) - lines(whatarelief::coastline(attr(X, "extent"), projection = attr(X, "projection"), dimension = c(512, 512))) -} - - ## wrapper around in-dev vapour function to simplify the warper interface (let GDAL do the work) #' Title #' @@ -47,7 +40,7 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_e if (is.null(target_dim)) target_dim <- integer() #info$dimension if (is.null(target_res)) target_res <- numeric() ## TODO if (is.null(band_output_type)) band_output_type <- "Float64" - vapour:::warp_general_cpp(dsn, target_crs, + warp_general_cpp(dsn, target_crs, as.numeric(target_ext), as.integer(target_dim), as.numeric(target_res), @@ -73,7 +66,7 @@ gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ex options <- c(options, "-of", "COG") #} - vapour:::warp_general_cpp(dsn, target_crs, + warp_general_cpp(dsn, target_crs, target_ext, target_dim, target_res, @@ -92,7 +85,7 @@ gdal_raster_image <- function(dsn, target_crs = NULL, target_dim = NULL, target_ if (is.null(target_dim)) target_dim <- integer() #info$dimension if (is.null(target_res)) target_res <- numeric() ## TODO if (is.null(band_output_type)) band_output_type <- "UInt8" - bytes <- vapour:::warp_general_cpp(dsn, target_crs, + bytes <- warp_general_cpp(dsn, target_crs, target_ext, target_dim, target_res, diff --git a/R/RcppExports.R b/R/RcppExports.R index 22b1e328..bac3ff5c 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -161,8 +161,8 @@ sds_list_list_gdal_cpp <- function(dsn) { .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) } -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) } vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type) { @@ -185,8 +185,8 @@ raster_gdalinfo_app_cpp <- function(dsn, options) { .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) } -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation) +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) } raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { diff --git a/R/raster-input.R b/R/raster-input.R index 65099007..337bafd1 100644 --- a/R/raster-input.R +++ b/R/raster-input.R @@ -319,6 +319,8 @@ vapour_read_raster_hex <- function(x, band = 1, #' @param transformation_options character vector of options, as in gdalwarp -to see Details #' @param open_options character vector of options, as in gdalwarp -oo - see Details #' @param options character vectors of options as per the gdalwarp command line +#' @param nomd if `TRUE` the Metadata tag is removed from the resulting VRT (it can be quite substantial) + #' @export #' @seealso vapour_read_raster vapour_read_raster_raw vapour_read_raster_int vapour_read_raster_dbl vapour_read_raster_chr vapour_read_raster_hex #' @return list of vectors (only 1 for 'band') of numeric values, in raster order @@ -348,7 +350,8 @@ vapour_warp_raster <- function(x, bands = NULL, warp_options = "", transformation_options = "", open_options = "", - options = "") { + options = "", + nomd = FALSE) { x <- .check_dsn_multiple(x) if (!is.null(bands) && (anyNA(bands) || length(bands) < 1 || !is.numeric(bands))) { stop("'bands' must be a valid set of band integers (1-based)") @@ -513,7 +516,7 @@ vapour_warp_raster <- function(x, bands = NULL, resample = resample, silent = silent, band_output_type = band_output_type, - options = options) + options = options, nomd = nomd) # ##// if we Dataset->RasterIO we don't have separated bands' # nbands <- length(vals[[1L]]) / prod(as.integer(dimension)) # if (nbands > 1) vals <- split(vals[[1L]], rep(seq_len(nbands), each = prod(as.integer(dimension)))) diff --git a/R/vapour_vrt.R b/R/vapour_vrt.R index 07f4791c..61a75593 100644 --- a/R/vapour_vrt.R +++ b/R/vapour_vrt.R @@ -57,6 +57,7 @@ #' @param relative_to_vrt default `FALSE`, if `TRUE` input strings that identify as files on the system are left as-is (by default they are made absolute at the R level) #' @param geolocation vector of 2 dsn to longitude, latitude geolocation array sources #' @return VRT character string (for use by GDAL-capable tools, i.e. reading raster) +#' @param nomd if `TRUE` the Metadata tag is removed from the resulting VRT (it can be quite substantial) #' @export #' #' @examples @@ -65,7 +66,7 @@ #' #' vapour_vrt(tif, bands = c(1, 1)) #' -vapour_vrt <- function(x, extent = NULL, projection = NULL, sds = 1L, bands = NULL, geolocation = NULL, ..., relative_to_vrt = FALSE) { +vapour_vrt <- function(x, extent = NULL, projection = NULL, sds = 1L, bands = NULL, geolocation = NULL, ..., relative_to_vrt = FALSE, nomd = FALSE) { x <- .check_dsn_multiple_naok(x) if (!relative_to_vrt) { @@ -126,7 +127,7 @@ vapour_vrt <- function(x, extent = NULL, projection = NULL, sds = 1L, bands = N if (!is.null(geolocation) && (length(geolocation) != 2 || !is.character(geolocation) || anyNA(geolocation))) { geolocation <- "" } - raster_vrt_cpp(x, extent, projection[1L], sds, bands, geolocation) + raster_vrt_cpp(x, extent, projection[1L], sds, bands, geolocation, nomd) } diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 696afa83..847574d1 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -213,22 +213,24 @@ inline GDALDatasetH* gdalH_open_avrt_multiple(CharacterVector dsn, NumericVector } // convert an opened GDALDataset to chunk-of-text VRT, if it is VRT you get it direct // if it's a different driver it is firs CreateCopy()ied to VRT -inline const char* gdal_vrt_text(GDALDataset* poSrcDS) { +inline const char* gdal_vrt_text(GDALDataset* poSrcDS, LogicalVector nomd) { CharacterVector out(1); // can't do this unless poSrcDS really is VRT if (EQUAL(poSrcDS->GetDriverName(), "VRT")) { VRTDataset * VRTdcDS = cpl::down_cast(poSrcDS ); - // if (add_filename[0]) { - // //VRTdcDS->SetDescription( filename[0]); - // } if (!(VRTdcDS == nullptr)) out[0] = VRTdcDS->GetMetadata("xml:VRT")[0]; } else { GDALDriver *poDriver = (GDALDriver *)GDALGetDriverByName("VRT"); - GDALDataset *VRTDS = poDriver->CreateCopy("", poSrcDS, false, NULL, NULL, NULL); - // if (add_filename[0]) { - // //VRTDS->SetDescription( filename[0]); - // - // } + // if nomd specified from caller zap all of it, on the dataset and on the band/s + if (nomd[0]) { + // removes all the MDI key stuff, the mega-meta you get from the likes of netcdf + // IMAGE_STRUCTURE COMPRESSION and so forth are retained + poSrcDS->SetMetadata(nullptr); + int i_bands = poSrcDS->GetRasterCount(); + for (int ii_b = 0; ii_b < i_bands; ii_b++) poSrcDS->GetRasterBand(ii_b + 1)->SetMetadata(nullptr); + } + GDALDataset *VRTDS = poDriver->CreateCopy("", poSrcDS, false, nullptr, nullptr, nullptr); + if (!(VRTDS == nullptr)) out[0] = VRTDS->GetMetadata("xml:VRT")[0]; GDALClose((GDALDatasetH) VRTDS); } @@ -240,7 +242,7 @@ inline const char* gdal_vrt_text(GDALDataset* poSrcDS) { // [[Rcpp::export]] inline CharacterVector gdal_dsn_vrt(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, - CharacterVector geolocation) { + CharacterVector geolocation, LogicalVector nomd) { CharacterVector out(dsn.size()); GDALDatasetH DS; for (int i = 0; i < out.size(); i++) { @@ -254,7 +256,7 @@ inline CharacterVector gdal_dsn_vrt(CharacterVector dsn, NumericVector extent, C if (DS == nullptr) { out[i] = NA_STRING; } else { - out[i] = gdal_vrt_text((GDALDataset*) DS); + out[i] = gdal_vrt_text((GDALDataset*) DS, nomd); GDALClose(DS); } } diff --git a/inst/include/gdalwarpmem/gdalwarpmem.h b/inst/include/gdalwarpmem/gdalwarpmem.h index 39e615cf..3dc70ece 100644 --- a/inst/include/gdalwarpmem/gdalwarpmem.h +++ b/inst/include/gdalwarpmem/gdalwarpmem.h @@ -28,7 +28,8 @@ inline List gdal_warp_in_memory(CharacterVector source_filename, //CharacterVector transformation_options, //CharacterVector open_options, // CharacterVector output_dataset_options, - CharacterVector options) { + CharacterVector options, + LogicalVector nomd) { GDALDatasetH *poSrcDS; @@ -153,7 +154,7 @@ inline List gdal_warp_in_memory(CharacterVector source_filename, CharacterVector oof(1); CharacterVector infile(1); LogicalVector filein(1); - oof[0] = gdalraster::gdal_vrt_text((GDALDataset *) hRet); + oof[0] = gdalraster::gdal_vrt_text((GDALDataset *) hRet, nomd); GDALClose(hRet); return List::create(oof); } diff --git a/man/vapour_vrt.Rd b/man/vapour_vrt.Rd index 743dbdcb..aaa17d29 100644 --- a/man/vapour_vrt.Rd +++ b/man/vapour_vrt.Rd @@ -12,7 +12,8 @@ vapour_vrt( bands = NULL, geolocation = NULL, ..., - relative_to_vrt = FALSE + relative_to_vrt = FALSE, + nomd = FALSE ) } \arguments{ @@ -31,6 +32,8 @@ vapour_vrt( \item{...}{ignored} \item{relative_to_vrt}{default \code{FALSE}, if \code{TRUE} input strings that identify as files on the system are left as-is (by default they are made absolute at the R level)} + +\item{nomd}{if \code{TRUE} the Metadata tag is removed from the resulting VRT (it can be quite substantial)} } \value{ VRT character string (for use by GDAL-capable tools, i.e. reading raster) diff --git a/man/vapour_warp_raster.Rd b/man/vapour_warp_raster.Rd index 93709cef..464e030e 100644 --- a/man/vapour_warp_raster.Rd +++ b/man/vapour_warp_raster.Rd @@ -20,7 +20,8 @@ vapour_warp_raster( warp_options = "", transformation_options = "", open_options = "", - options = "" + options = "", + nomd = FALSE ) } \arguments{ @@ -55,6 +56,8 @@ vapour_warp_raster( \item{open_options}{character vector of options, as in gdalwarp -oo - see Details} \item{options}{character vectors of options as per the gdalwarp command line} + +\item{nomd}{if \code{TRUE} the Metadata tag is removed from the resulting VRT (it can be quite substantial)} } \value{ list of vectors (only 1 for 'band') of numeric values, in raster order diff --git a/src/00_raster.cpp b/src/00_raster.cpp index 60996626..f3fe5b4c 100644 --- a/src/00_raster.cpp +++ b/src/00_raster.cpp @@ -58,7 +58,8 @@ List warp_in_memory_gdal_cpp(CharacterVector dsn, LogicalVector silent, CharacterVector band_output_type, - CharacterVector options) { + CharacterVector options, + LogicalVector nomd) { return gdalwarpmem::gdal_warp_in_memory(dsn, source_WKT, target_WKT, @@ -69,5 +70,5 @@ List warp_in_memory_gdal_cpp(CharacterVector dsn, resample, silent, band_output_type, - options); + options, nomd); } diff --git a/src/00_vrt.cpp b/src/00_vrt.cpp index 5f59a8b9..3dd8333f 100644 --- a/src/00_vrt.cpp +++ b/src/00_vrt.cpp @@ -9,8 +9,8 @@ using namespace Rcpp; CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, - IntegerVector sds, IntegerVector bands, CharacterVector geolocation) { - return gdalraster::gdal_dsn_vrt(dsn, extent, projection, sds, bands, geolocation); + IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd) { + return gdalraster::gdal_dsn_vrt(dsn, extent, projection, sds, bands, geolocation, nomd); } diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 664a67de..424b4423 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -545,8 +545,8 @@ BEGIN_RCPP END_RCPP } // warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -561,7 +561,8 @@ BEGIN_RCPP Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options)); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); return rcpp_result_gen; END_RCPP } @@ -637,8 +638,8 @@ BEGIN_RCPP END_RCPP } // raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP) { +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -648,7 +649,8 @@ BEGIN_RCPP Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation)); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); return rcpp_result_gen; END_RCPP } @@ -715,13 +717,13 @@ static const R_CallMethodDef CallEntries[] = { {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 5}, {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 11}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 5}, {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 6}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, {NULL, NULL, 0} }; From d833401588eb7a10035d9b8be4220e0dce09889e Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sat, 18 Feb 2023 17:09:02 +1100 Subject: [PATCH 019/102] remove geos expt --- inst/include/gdalgeometry/gdalgeometry.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/inst/include/gdalgeometry/gdalgeometry.h b/inst/include/gdalgeometry/gdalgeometry.h index 918495df..917e1bda 100644 --- a/inst/include/gdalgeometry/gdalgeometry.h +++ b/inst/include/gdalgeometry/gdalgeometry.h @@ -2,6 +2,7 @@ #define GDALGEOMETRY_H #include #include "ogrsf_frmts.h" +//#include "geos.h" //#include "ogr_api.h" #include "gdal_priv.h" // #include "ogr_spatialref.h" // for OGRSpatialReference @@ -33,6 +34,26 @@ inline RawVector gdal_geometry_raw(OGRFeature *poFeature) { return raw; } } + + +// SEXP geos_common_xptr(GEOSGeometry* geometry) { +// SEXP externalPtr = R_MakeExternalPtr((void *) geometry, R_NilValue, R_NilValue); +// return externalPtr; +// } +// inline SEXP gdal_geometry_geos(OGRFeature *poFeature) { +// if (poFeature->GetGeometryRef()) { +// GEOSContextHandle_t ctxt = OGRGeometry::createGEOSContext(); +// GEOSGeom geosGeom = geom.exportToGEOS(ctxt); +// OGRGeometry::freeGEOSContext(ctxt); +// +// GEOSGeom geosGeom = poFeature->GetGeometryRef()->exportToGEOS(ctxt); +// GEOSGeom_destroy_r(ctxt); +// if (nullptr != geosGeom) { +// return geos_common_xptr(geosGeom); +// } +// } +// return R_NilValue; +// } inline CharacterVector gdal_geometry_wkt(OGRFeature *poFeature) { CharacterVector wkt(1); if (poFeature->GetGeometryRef()) { From bceb55cff6f735f03d2e92b411e640d4d5aa513f Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sat, 18 Feb 2023 17:10:54 +1100 Subject: [PATCH 020/102] fix #192 vapour_vrt not applying geolocation --- DESCRIPTION | 2 +- NEWS.md | 2 ++ inst/include/gdalraster/gdalraster.h | 7 +++++-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 21ccc593..daecb3c8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3.9004 +Version: 0.9.3.9005 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index 303b16f4..a7cc1c89 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # vapour dev +* Fix for `vapour_vrt()` where 'geolocation' was not being included. Fixes #192. + * New capability to drop dataset and band metdata, used by functions `vapour_vrt()` and `vapour_warp_raster()` which gain a new argument 'nomd', which is FALSE by default. If TRUE, the dataset and band metadata are removed from an open dataset before it is converted to VRT. diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 847574d1..3410b4d5 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -143,6 +143,8 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, } GDALDataset* oDS = (GDALDataset*)gdalH_open_dsn(dsn, sds); + + if (geolocation.size() == 2) { OGRSpatialReference geolsrs; char *pszGeoSrsWKT = nullptr; @@ -159,6 +161,8 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, oDS->SetMetadataItem( "PIXEL_STEP", "1", "GEOLOCATION" ); oDS->SetMetadataItem( "LINE_STEP", "1", "GEOLOCATION" ); CPLFree(pszGeoSrsWKT); + + } if (oDS == nullptr) return(nullptr); @@ -246,9 +250,8 @@ inline CharacterVector gdal_dsn_vrt(CharacterVector dsn, NumericVector extent, C CharacterVector out(dsn.size()); GDALDatasetH DS; for (int i = 0; i < out.size(); i++) { - if (extent.size() == 4 || (!projection[0].empty()) || bands[0] > 0) { + if (extent.size() == 4 || (!projection[0].empty()) || bands[0] > 0 || (!geolocation[0].empty() ) || sds[0] > 1) { DS = gdalH_open_avrt(dsn[i], extent, projection, sds, bands, geolocation); - } else { DS = gdalH_open_dsn(dsn[i], sds); } From 3ad6b364f56de8e438585c61d8865ceefba9bb5d Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sat, 25 Feb 2023 05:34:15 +0000 Subject: [PATCH 021/102] fix warp --- DESCRIPTION | 2 +- NEWS.md | 3 ++ R/raster-info.R | 1 + inst/include/gdalraster/gdalraster.h | 16 +++------ .../include/gdalwarpgeneral/gdalwarpgeneral.h | 34 ++++++++++++------- 5 files changed, 31 insertions(+), 25 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index daecb3c8..3a3e574c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3.9005 +Version: 0.9.3.9006 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index a7cc1c89..a94f4c06 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # vapour dev +* Fix inefficiency in gdal_raster_data() which was warping all bands in MEM lol. + + * Fix for `vapour_vrt()` where 'geolocation' was not being included. Fixes #192. * New capability to drop dataset and band metdata, used by functions `vapour_vrt()` and `vapour_warp_raster()` which gain a new argument 'nomd', which diff --git a/R/raster-info.R b/R/raster-info.R index a1a1c7ed..0eb57132 100644 --- a/R/raster-info.R +++ b/R/raster-info.R @@ -153,6 +153,7 @@ vapour_raster_info <- function(x, ..., sds = NULL, min_max = FALSE) { } else { geoTransform <- json$geoTransform } + #browser() list(geotransform = geoTransform, dimension = json$size, ## or/and dimXY dimXY = json$size, diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 3410b4d5..9cb44982 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -52,8 +52,7 @@ inline CharacterVector gdal_subdataset_1(GDALDataset *poDataset, int i_sds) { char **SDS2 = poDataset->GetMetadata("SUBDATASETS"); while (SDS2 && SDS2[sdi] != NULL) { - // Rprintf("%i\n", sdi/2); - // Rprintf("%i\n\n", i_sds - 1); + if (sdi / 2 == (i_sds -1 )) { char **papszTokens = CSLTokenizeString2(SDS2[sdi ], "=", 0); ret[0] = papszTokens[1]; @@ -167,15 +166,7 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, if (oDS == nullptr) return(nullptr); int nBands = oDS->GetRasterCount(); - // Rprintf("%i\n", nBands); - // if (bands[0] > 0) { - // for (int iband = 0; iband < bands.size(); iband++ ) { - // if (bands[iband] > nBands) { - // Rprintf("%i\n", bands[iband]); - // Rprintf("mismatch bands\n"); - // } - // } - // } + if (bands[0] > 0) { for (int iband = 0; iband < bands.size(); iband++ ) { if (bands[iband] > nBands) { @@ -522,7 +513,6 @@ inline List gdal_raster_gcp(CharacterVector dsn) { gcpout[3] = GCPY; gcpout[4] = GCPZ; gcpout[5] = gcpCRS; - //gcp_proj = poDataset->GetGCPProjection(); } else { Rprintf("No GCP (ground control points) found.\n"); } @@ -635,6 +625,8 @@ inline List gdal_read_band_values(GDALDataset *hRet, scale = rasterBand->GetScale(&hasScale); offset = rasterBand->GetOffset(&hasOffset); + Rprintf("scale: %f\n", scale); + Rprintf("offset: %f\n", offset); // if scale is 1 or 0 then don't override the type if (abs(scale - 1.0) <= 1.0e-05 || abs(scale) < 1.0e-05) { diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index 5e3a7f3c..dae0511e 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -95,13 +95,16 @@ inline List gdal_warp_general(CharacterVector dsn, // we manually handle -r, -te, -t_srs, -ts, -of, // but the rest passed in as wo, to, oo, doo, or general (non general ones get -wo/-to/-oo/-doo prepended in R) char** papszArg = nullptr; - papszArg = CSLAddString(papszArg, "-of"); - papszArg = CSLAddString(papszArg, "MEM"); - + bool write_dsn = false; if (EQUAL(dsn_outname[0], "")) { - + papszArg = CSLAddString(papszArg, "-of"); + papszArg = CSLAddString(papszArg, "MEM"); + } else { + papszArg = CSLAddString(papszArg, "-of"); + papszArg = CSLAddString(papszArg, "GTiff"); + write_dsn = true; } @@ -171,6 +174,13 @@ inline List gdal_warp_general(CharacterVector dsn, papszArg = CSLAddString(papszArg, options[gwopt]); } + + if (bands.size() > 0) { + for (int iband = 0; iband < bands.size(); iband++) { + papszArg = CSLAddString(papszArg, "-b"); + papszArg = CSLAddString(papszArg, CPLSPrintf("%i", bands[iband])); + } + } // List out = List::create(1); // CharacterVector sss(CSLCount (papszArg)); // for (int sii = 0; sii < sss.size(); sii++) sss[sii] = papszArg[sii]; @@ -206,18 +216,18 @@ inline List gdal_warp_general(CharacterVector dsn, } else { // Prepare to read bands int nBands; - if (bands[0] == 0) { +// if (bands[0] == 0) { nBands = (int)GDALGetRasterCount(hRet); - } else { - nBands = (int)bands.size(); - } + // } else { + // nBands = (int)bands.size(); + // } std::vector bands_to_read(static_cast(nBands)); for (int i = 0; i < nBands; i++) { - if (bands[0] == 0) { + // if (bands[0] == 0) { + // bands_to_read[static_cast(i)] = i + 1; + // } else { bands_to_read[static_cast(i)] = i + 1; - } else { - bands_to_read[static_cast(i)] = bands[i]; - } + if (bands_to_read[static_cast(i)] > (int)GDALGetRasterCount(hRet)) { GDALClose( hRet ); From 75d728484b822351caf582715be2ca1c6332d756 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 27 Feb 2023 01:35:59 +0000 Subject: [PATCH 022/102] target_res, fixes part of issue 194 --- inst/include/gdalraster/gdalraster.h | 4 ++-- inst/include/gdalwarpgeneral/gdalwarpgeneral.h | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 9cb44982..7727574e 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -625,8 +625,8 @@ inline List gdal_read_band_values(GDALDataset *hRet, scale = rasterBand->GetScale(&hasScale); offset = rasterBand->GetOffset(&hasOffset); - Rprintf("scale: %f\n", scale); - Rprintf("offset: %f\n", offset); + //Rprintf("scale: %f\n", scale); + //Rprintf("offset: %f\n", offset); // if scale is 1 or 0 then don't override the type if (abs(scale - 1.0) <= 1.0e-05 || abs(scale) < 1.0e-05) { diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index dae0511e..0de1ab35 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -160,11 +160,14 @@ inline List gdal_warp_general(CharacterVector dsn, } if (target_res.size() > 0) { - int XRes = target_res[0]; - int YRes = target_res[1]; + double XRes = target_res[0]; + double YRes = target_res[1]; + if (! (XRes > 0 && YRes > 0)) { + Rcpp::stop("invalid value/s for 'target_res' (not greater than zero)\n"); + } papszArg = CSLAddString(papszArg, "-tr"); - papszArg = CSLAddString(papszArg, CPLSPrintf("%d", XRes)); - papszArg = CSLAddString(papszArg, CPLSPrintf("%d", YRes)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%f", XRes)); + papszArg = CSLAddString(papszArg, CPLSPrintf("%f", YRes)); } if (resample.size() > 0) { papszArg = CSLAddString(papszArg, "-r"); From b32dedeb0bdc9cfc37e6b6c1a07993f33d8c1924 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 27 Feb 2023 02:25:54 +0000 Subject: [PATCH 023/102] checks for inputs --- R/00_warpgeneral.R | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 6dd77bad..ec951104 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -34,11 +34,35 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, resample = "near", bands = 1L, band_output_type = NULL, options = character()) { - if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) if (is.null(target_crs)) target_crs <- "" - if (is.null(target_ext)) target_ext <- numeric() - if (is.null(target_dim)) target_dim <- integer() #info$dimension - if (is.null(target_res)) target_res <- numeric() ## TODO + if (is.null(target_ext)) { + target_ext <- numeric() + } else { + if (~length(target_ext) == 4L ) stop("'target_ext' must be of length 4 (xmin, xmax, ymin, ymax") + + if (anyNA(target_ext)) stop("NA values in 'target_ext'") + dif <- diff(target_ext)[c(1L, 3L)] + if (any(!dif > 0)) stop("all 'target_ext' values must xmin < xmax, ymin < ymax") + + } + if (is.null(target_dim)) { + target_dim <- integer() #info$dimension + } else { + if (length(target_dim) > 0 ) target_dim <- as.integer(rep(target_dim, length.out = 2L)) + + if (anyNA(target_dim)) stop("NA values in 'target_dim'") + if (any(target_dim <= 0)) stop("all 'target_dim' values must be > 0") + + } + if (is.null(target_res)) { + target_res <- numeric() ## TODO + } else { + ## check res is above zero + if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) + + if (anyNA(target_res)) stop("NA values in 'target_res'") + if (any(target_res <= 0)) stop("all 'target_res' values must be > 0") + } if (is.null(band_output_type)) band_output_type <- "Float64" warp_general_cpp(dsn, target_crs, as.numeric(target_ext), From 0208aa9327841cb9c5b4a93d126c16fc872fcd31 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Feb 2023 22:33:24 +0000 Subject: [PATCH 024/102] fix up some ~/ normalize path --- R/raster-input.R | 2 +- R/utils.R | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/R/raster-input.R b/R/raster-input.R index 337bafd1..b6ad03c0 100644 --- a/R/raster-input.R +++ b/R/raster-input.R @@ -63,7 +63,7 @@ #' str(matrix(vapour_read_raster(f, window = c(0, 0, 10, 10, 15, 25)), 15)) #' vapour_read_raster <- function(x, band = 1, window, resample = "nearestneighbour", ..., sds = NULL, native = FALSE, set_na = TRUE, band_output_type = "") { - .check_dsn_single(x) + x <- .check_dsn_single(x) if (!length(native) == 1L || is.na(native[1]) || !is.logical(native)) { stop("'native' must be a single 'TRUE' or 'FALSE'") } diff --git a/R/utils.R b/R/utils.R index 639cc09b..ad24c244 100644 --- a/R/utils.R +++ b/R/utils.R @@ -6,7 +6,12 @@ if (length(x) > 1L) stop(sprintf(mess, "Longer than 1 element:")) if (!is.character(x)) stop(sprintf(mess, "Not a character string:")) if (nchar(x) < 1) stop(sprintf(mess, "Not a valid character string:")) - + if (file.exists(x)) { + ## we only want to normalize out the "~" + if (grepl("~", x)) { + x <- normalizePath(x) + } + } x } .check_dsn_multiple <- function(x) { From 4637f1c08d38fa8205004cad1693706f81878cdd Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Feb 2023 22:48:48 +0000 Subject: [PATCH 025/102] unscale --- DESCRIPTION | 2 +- NEWS.md | 2 + R/00_read_block.R | 5 +- R/00_warpgeneral.R | 32 +++- R/RcppExports.R | 20 ++- R/raster-input.R | 4 +- inst/include/gdalraster/gdalraster.h | 192 ++++++++++++++++++++- inst/include/gdalreadwrite/gdalreadwrite.h | 4 +- src/00_raster.cpp | 5 +- src/00_raster_block_io.cpp | 161 ++++++++++++++++- src/RcppExports.cpp | 62 ++++++- 11 files changed, 454 insertions(+), 35 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 3a3e574c..bb5af58b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3.9006 +Version: 0.9.3.9007 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index a94f4c06..7c586857 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # vapour dev +* raster read gains "unscale" argument, `TRUE` by default which means offset and scale values are applied and return value is of type Float64, set to `FALSE` to avoid applying scale/offset to band values (this was always implicitly false (no offset scale applied) if the output type wasn't suitable). . + * Fix inefficiency in gdal_raster_data() which was warping all bands in MEM lol. diff --git a/R/00_read_block.R b/R/00_read_block.R index ab9d2a7c..f5705393 100644 --- a/R/00_read_block.R +++ b/R/00_read_block.R @@ -87,7 +87,7 @@ vapour_create_copy <- function(dsource, filename, overwrite = FALSE, driver = "G #' @examples #' f <- system.file("extdata", "sst.tif", package = "vapour") #' v <- vapour_read_raster_block(f, c(0L, 0L), dimension = c(2L, 3L), band = 1L) -vapour_read_raster_block <- function(dsource, offset, dimension, band = 1L, band_output_type = "") { +vapour_read_raster_block <- function(dsource, offset, dimension, band = 1L, band_output_type = "", unscale = TRUE) { dsource <- .check_dsn_single(dsource) if (anyNA(band) || length(band) < 1L) stop("missing band value") if (file.exists(dsource)) { @@ -95,7 +95,8 @@ vapour_read_raster_block <- function(dsource, offset, dimension, band = 1L, band } vapour_read_raster_block_cpp(dsource, as.integer(rep(offset, length.out = 2L)), as.integer(rep(dimension, length.out = 2L)), band = as.integer(band[1L]), - band_output_type = band_output_type) + band_output_type = band_output_type, + unscale = unscale) } #' Write data to a block *in an existing file*. #' diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index ec951104..43d9b3b0 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -78,11 +78,35 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_e gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, resample = "near", bands = 1L, band_output_type = NULL, options = character(), out_dsn = tempfile(fileext = ".tif")) { - if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) if (is.null(target_crs)) target_crs <- "" - if (is.null(target_ext)) target_ext <- numeric() - if (is.null(target_dim)) target_dim <- integer() #info$dimension - if (is.null(target_res)) target_res <- numeric() ## TODO + if (is.null(target_ext)) { + target_ext <- numeric() + } else { + if (~length(target_ext) == 4L ) stop("'target_ext' must be of length 4 (xmin, xmax, ymin, ymax") + + if (anyNA(target_ext)) stop("NA values in 'target_ext'") + dif <- diff(target_ext)[c(1L, 3L)] + if (any(!dif > 0)) stop("all 'target_ext' values must xmin < xmax, ymin < ymax") + + } + if (is.null(target_dim)) { + target_dim <- integer() #info$dimension + } else { + if (length(target_dim) > 0 ) target_dim <- as.integer(rep(target_dim, length.out = 2L)) + + if (anyNA(target_dim)) stop("NA values in 'target_dim'") + if (any(target_dim <= 0)) stop("all 'target_dim' values must be > 0") + + } + if (is.null(target_res)) { + target_res <- numeric() ## TODO + } else { + ## check res is above zero + if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) + + if (anyNA(target_res)) stop("NA values in 'target_res'") + if (any(target_res <= 0)) stop("all 'target_res' values must be > 0") + } if (is.null(band_output_type)) band_output_type <- "Float64" #if (grepl("tif$", out_dsn)) { ## we'll have to do some work here diff --git a/R/RcppExports.R b/R/RcppExports.R index bac3ff5c..17e8ec4a 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -149,8 +149,8 @@ raster_extent_cpp <- function(dsn) { .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) } -raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type) { - .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type) +raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { + .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) } sds_list_gdal_cpp <- function(dsn) { @@ -165,8 +165,8 @@ warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) } -vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type) { - .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type) +vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { + .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) } vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { @@ -181,6 +181,18 @@ vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) } +vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { + .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) +} + +blocks_cpp1 <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) +} + +blocks_cpp <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) +} + raster_gdalinfo_app_cpp <- function(dsn, options) { .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) } diff --git a/R/raster-input.R b/R/raster-input.R index b6ad03c0..785bf1f3 100644 --- a/R/raster-input.R +++ b/R/raster-input.R @@ -62,7 +62,7 @@ #' ## the method can be used to up-sample as well #' str(matrix(vapour_read_raster(f, window = c(0, 0, 10, 10, 15, 25)), 15)) #' -vapour_read_raster <- function(x, band = 1, window, resample = "nearestneighbour", ..., sds = NULL, native = FALSE, set_na = TRUE, band_output_type = "") { +vapour_read_raster <- function(x, band = 1, window, resample = "nearestneighbour", ..., sds = NULL, native = FALSE, set_na = TRUE, band_output_type = "", unscale = TRUE) { x <- .check_dsn_single(x) if (!length(native) == 1L || is.na(native[1]) || !is.logical(native)) { stop("'native' must be a single 'TRUE' or 'FALSE'") @@ -104,7 +104,7 @@ vapour_read_raster <- function(x, band = 1, window, resample = "nearestneighbour ## pull a swifty here with [[ to return numeric or integer ##vals <- raster_io_gdal_cpp(dsn = datasourcename, window = window, band = band, resample = resample[1L], band_output_type = band_output_type) vals <- lapply(band, function(iband) { - raster_io_gdal_cpp(dsn = datasourcename, window = window, band = iband, resample = resample[1L], band_output_type = band_output_type)[[1L]] + raster_io_gdal_cpp(dsn = datasourcename, window = window, band = iband, resample = resample[1L], band_output_type = band_output_type, unscale = unscale)[[1L]] }) if (set_na && !is.raw(vals[[1L]][1L])) { for (i in seq_along(vals)) { diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 7727574e..8f0c6888 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -625,6 +625,10 @@ inline List gdal_read_band_values(GDALDataset *hRet, scale = rasterBand->GetScale(&hasScale); offset = rasterBand->GetOffset(&hasOffset); + if (!unscale[0]) { + hasScale = 0; + hasOffset = 0; + } //Rprintf("scale: %f\n", scale); //Rprintf("offset: %f\n", offset); @@ -737,6 +741,189 @@ inline List gdal_read_band_values(GDALDataset *hRet, +inline NumericVector gdal_read_band_value(GDALDataset *hRet, + IntegerVector window, + std::vector bands_to_read, + CharacterVector band_output_type, + CharacterVector resample, + LogicalVector unscale) +{ + int Xoffset = window[0]; + int Yoffset = window[1]; + int nXSize = window[2]; + int nYSize = window[3]; + + int outXSize = window[4]; + int outYSize = window[5]; + int actual_XSize = -1; //GDALGetRasterBandXSize(hRet); + int actual_YSize = -1; //GDALGetRasterBandYSize(hRet); + + + // double scale, double offset, + // int hasScale, int hasOffset, int hasNA, + // GDALDataType src_band_type) { + // if band_output_type is not empty, possible override: + // complex types not supported Byte, UInt16, Int16, UInt32, Int32, Float32, Float64 + GDALDataType src_band_type = GDALGetRasterDataType(GDALGetRasterBand(hRet, bands_to_read[0])); + //bool output_type_set = false; + + if (!band_output_type[0].empty()) { + if (band_output_type[0] == "Byte") src_band_type = GDT_Byte; + if (band_output_type[0] == "UInt16") src_band_type = GDT_UInt16; + if (band_output_type[0] == "Int16") src_band_type = GDT_Int16; + + if (band_output_type[0] == "UInt32") src_band_type = GDT_UInt32; + if (band_output_type[0] == "Int32") src_band_type = GDT_Int32; + + if (band_output_type[0] == "Float32") src_band_type = GDT_Float32; + if (band_output_type[0] == "Float64") src_band_type = GDT_Float64; + + //output_type_set = true; + } + + int sbands = (int)bands_to_read.size(); + Rcpp::NumericVector outlist(1); + + bool band_type_not_supported = true; + + GDALRasterBand *rasterBand; + int hasNA; + int hasScale, hasOffset; + double scale, offset; + + GDALRasterIOExtraArg psExtraArg; + psExtraArg = init_resample_alg(resample); + CPLErr err; + + for (int iband = 0; iband < sbands; iband++) { + rasterBand = GDALDataset::FromHandle(hRet)->GetRasterBand(bands_to_read[static_cast(iband)]); + //rasterBand = GDALGetRasterBand(hRet, bands_to_read[iband]); + if (iband < 1) { + // actual_XSize = GDALGetRasterBandXSize(rasterBand); + // actual_YSize = GDALGetRasterBandYSize(rasterBand); + actual_XSize = rasterBand->GetXSize(); + actual_YSize = rasterBand->GetYSize(); + + if (nXSize < 1) nXSize = actual_XSize; + if (nYSize < 1) nYSize = actual_YSize; + if (outXSize < 1) outXSize = actual_XSize; + if (outYSize < 1) outYSize = actual_YSize; + + + } + + scale = rasterBand->GetScale(&hasScale); + offset = rasterBand->GetOffset(&hasOffset); + //Rprintf("scale: %f\n", scale); + //Rprintf("offset: %f\n", offset); + + // if scale is 1 or 0 then don't override the type + if (abs(scale - 1.0) <= 1.0e-05 || abs(scale) < 1.0e-05) { + hasScale = 0; + } + // if hasScale we ignore integer or byte and go with float + if ((src_band_type == GDT_Float64) || (src_band_type == GDT_Float32) || hasScale) { + std::vector double_scanline( static_cast( outXSize * outYSize )); + err = rasterBand->RasterIO(GF_Read, Xoffset, Yoffset, nXSize, nYSize, + &double_scanline[0], outXSize, outYSize, GDT_Float64, + 0, 0, &psExtraArg); + if (err) Rprintf("we have a problem at RasterIO\n"); + NumericVector res(outXSize * outYSize ); + + // consider doing at R level, at least for MEM + double dval; + double naflag = rasterBand->GetNoDataValue(&hasNA);// GDALGetRasterNoDataValue(rasterBand, &hasNA); + if (hasNA && (!std::isnan(naflag))) { + if (naflag < -3.4e+37) { + naflag = -3.4e+37; + + for (size_t i=0; i< double_scanline.size(); i++) { + if (double_scanline[i] <= naflag) { + double_scanline[i] = NA_REAL; + } + } + } else { + + std::replace(double_scanline.begin(), double_scanline.end(), naflag, (double) NAN); + } + } + R_xlen_t isi; + + for (isi = 0; isi < (static_cast(double_scanline.size())); isi++) { + dval = double_scanline[static_cast(isi)]; + if (hasScale) dval = dval * scale; + if (hasOffset) dval = dval + offset; + res[isi] = dval; + } + + outlist[0] = res[0]; + band_type_not_supported = false; + } + // if hasScale we assume to never use scale/offset in integer case (see block above we already dealt) + if ((!hasScale) & + ((src_band_type == GDT_Int16) | + (src_band_type == GDT_Int32) | + (src_band_type == GDT_UInt16) | + (src_band_type == GDT_UInt32))) { + std::vector integer_scanline(static_cast( outXSize * outYSize )); + err = rasterBand->RasterIO(GF_Read, Xoffset, Yoffset, nXSize, nYSize, + &integer_scanline[0], outXSize, outYSize, GDT_Int32, + 0, 0, &psExtraArg); + + if (err) Rprintf("we have a problem at RasterIO\n"); + IntegerVector res(outXSize * outYSize ); + + // consider doing at R level, at least for MEM + int dval; + double naflag = GDALGetRasterNoDataValue(rasterBand, &hasNA); + + R_xlen_t isi; + for (isi = 0; isi < (static_cast(integer_scanline.size())); isi++) { + dval = integer_scanline[static_cast(isi)]; + if (static_cast(dval) <= naflag) { + dval = NA_INTEGER; + } + res[isi] = dval; + } + outlist[0] = res[0]; + band_type_not_supported = false; + } + + // if hasScale we assume to never use scale/offset in integer case (see block above we already dealt) + + if (!hasScale & (src_band_type == GDT_Byte)) { + std::vector byte_scanline( static_cast( outXSize * outYSize ) ); + err = rasterBand->RasterIO(GF_Read, Xoffset, Yoffset, nXSize, nYSize, + &byte_scanline[0], outXSize, outYSize, GDT_Byte, + 0, 0, &psExtraArg); + + if (err) Rprintf("we have a problem at RasterIO\n"); + RawVector res(outXSize * outYSize ); + + + + R_xlen_t isi; + for (isi = 0; isi < (static_cast(byte_scanline.size())); isi++) { + res[isi] = byte_scanline[static_cast(isi)]; + } + outlist[0] = res[0]; + band_type_not_supported = false; + } + + + + } + // safe but lazy way of not supporting Complex, TypeCount or Unknown types + // (see GDT_ checks above) + if (band_type_not_supported) { + GDALClose(hRet); + Rcpp::stop("band type not supported (is it Complex? report at hypertidy/vapour/issues)"); + } + + return outlist; +} + + inline List gdal_read_dataset_values(GDALDataset *hRet, IntegerVector window, std::vector bands_to_read, @@ -951,7 +1138,8 @@ inline List gdal_raster_io(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, - CharacterVector band_output_type) + CharacterVector band_output_type, + LogicalVector unscale) { GDALDataset *poDataset; @@ -970,7 +1158,7 @@ inline List gdal_raster_io(CharacterVector dsn, } else { for (int i = 0; i < band.size(); i++) bands_to_read[static_cast(i)] = band[i]; } - List out = gdal_read_band_values(poDataset, window, bands_to_read, band_output_type, resample, false); + List out = gdal_read_band_values(poDataset, window, bands_to_read, band_output_type, resample, unscale); // close up GDALClose(poDataset ); return out; diff --git a/inst/include/gdalreadwrite/gdalreadwrite.h b/inst/include/gdalreadwrite/gdalreadwrite.h index b861b6a8..431764b0 100644 --- a/inst/include/gdalreadwrite/gdalreadwrite.h +++ b/inst/include/gdalreadwrite/gdalreadwrite.h @@ -106,7 +106,7 @@ inline CharacterVector gdal_create_copy(CharacterVector dsource, CharacterVector } inline List gdal_read_block(CharacterVector dsn, IntegerVector offset, IntegerVector dimension, IntegerVector band, - CharacterVector band_output_type) { + CharacterVector band_output_type, LogicalVector unscale) { IntegerVector window(6); window[0] = offset[0]; window[1] = offset[1]; @@ -114,7 +114,7 @@ inline List gdal_read_block(CharacterVector dsn, IntegerVector offset, window[3] = dimension[1]; window[4] = dimension[0]; window[5] = dimension[1]; - return gdalraster::gdal_raster_io(dsn, window, band, "nearestneighbour", band_output_type); + return gdalraster::gdal_raster_io(dsn, window, band, "nearestneighbour", band_output_type, unscale); } inline LogicalVector gdal_write_block(CharacterVector dsn, NumericVector data, diff --git a/src/00_raster.cpp b/src/00_raster.cpp index f3fe5b4c..5c95283f 100644 --- a/src/00_raster.cpp +++ b/src/00_raster.cpp @@ -27,8 +27,9 @@ List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, - CharacterVector band_output_type) { - return gdalraster::gdal_raster_io(dsn, window, band, resample, band_output_type); + CharacterVector band_output_type, + LogicalVector unscale) { + return gdalraster::gdal_raster_io(dsn, window, band, resample, band_output_type, unscale); } // [[Rcpp::export]] diff --git a/src/00_raster_block_io.cpp b/src/00_raster_block_io.cpp index 0caa0746..7e1725c4 100644 --- a/src/00_raster_block_io.cpp +++ b/src/00_raster_block_io.cpp @@ -1,19 +1,20 @@ #include #include "gdalreadwrite/gdalreadwrite.h" - +#include "gdalraster/gdalraster.h" using namespace Rcpp; // [[Rcpp::export]] Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, - IntegerVector offset, IntegerVector dimension, IntegerVector band, - CharacterVector band_output_type) { - return gdalreadwrite::gdal_read_block(dsource, offset, dimension, band, band_output_type); + IntegerVector offset, IntegerVector dimension, IntegerVector band, + CharacterVector band_output_type, + LogicalVector unscale) { + return gdalreadwrite::gdal_read_block(dsource, offset, dimension, band, band_output_type, unscale); } // [[Rcpp::export]] Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, - IntegerVector offset, IntegerVector dimension, IntegerVector band) { + IntegerVector offset, IntegerVector dimension, IntegerVector band) { return gdalreadwrite::gdal_write_block(dsource, data, offset, dimension, band); } @@ -26,8 +27,152 @@ Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterV // [[Rcpp::export]] Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, - NumericVector extent, IntegerVector dimension, - CharacterVector projection, - IntegerVector n_bands) { + NumericVector extent, IntegerVector dimension, + CharacterVector projection, + IntegerVector n_bands) { return gdalreadwrite::gdal_create(filename, driver, extent, dimension, projection, n_bands); } + + +// [[Rcpp::export]] +Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, + IntegerVector col, IntegerVector row, IntegerVector band, + CharacterVector band_output_type) { + IntegerVector dimension(2); + dimension[0] = 1; + dimension[1] = 1; + IntegerVector offset(2); + + GDALDatasetH ds = gdalraster::gdalH_open_dsn(dsource[0], 0); + + NumericVector vals(col.size()); + NumericVector L(1); + IntegerVector window(6); + window[2] = 1; + window[3] = 1; + window[4] = 1; + window[5] = 1; + LogicalVector tst(1); + CharacterVector type(1); + type[0] = "Float64"; + CharacterVector resample(1); + resample[0] = "near"; + NumericVector v(1); + tst[0] = false; + std::vector b = {1}; + if (band[0] < 1) stop("invalid band number"); + if (band[0] > ((GDALDataset *)ds)->GetRasterCount()) stop("invalid band number"); + GDALRasterBand * poBand = ((GDALDataset*) ds)->GetRasterBand(band[0]); + GDALRasterIOExtraArg psExtraArg; + psExtraArg = gdalraster::init_resample_alg(resample); + CPLErr err; + + for (int i = 0; i < col.size(); i++) { + + err = poBand->RasterIO(GF_Read, col[i], row[i], 1, 1, + &vals[i], 1, 1, GDT_Float64, + 0, 0, &psExtraArg); + + } + GDALClose(ds); + return vals; +} + + +// [[Rcpp::export]] +Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read) { + + //https://gdal.org/doxygen/classGDALRasterBand.html#a09e1d83971ddff0b43deffd54ef25eef + GDALDatasetH ds = gdalraster::gdalH_open_dsn(dsource[0], 0); + GDALRasterBand * poBand = ((GDALDataset*) ds)->GetRasterBand(1); + + if (! poBand->GetRasterDataType() == GDT_Float32 ) Rcpp::stop("\n"); + + int nXBlockSize, nYBlockSize; + poBand->GetBlockSize( &nXBlockSize, &nYBlockSize ); + + List out(1); + int cnt = 0; + //GByte *pabyData = (GByte *) CPLMalloc(nXBlockSize * nYBlockSize); +// std::vector faBlockData( static_cast( nXBlockSize * nYBlockSize )); + float *faBlockData = (float *) CPLMalloc(nXBlockSize * nYBlockSize); + int iXBlock = 0; + int iYBlock = 0; + int nXValid, nYValid; + // Compute the portion of the block that is valid + // for partial edge blocks. + poBand->GetActualBlockSize(iXBlock, iYBlock, &nXValid, &nYValid); + NumericVector float_data(nXValid * nYValid); + poBand->ReadBlock( iXBlock, iYBlock, faBlockData ); + for( int iY = 0; iY < nYValid; iY++ ) + { + for( int iX = 0; iX < nXValid; iX++ ) + { + float_data[cnt] = (double)faBlockData[iX + iY * nXBlockSize]; + cnt++; + } + } + float_data.attr("actual_block_size") = IntegerVector::create(nXValid, nYValid); + out[0] = float_data; + GDALClose(ds); + CPLFree(faBlockData); + return out; +} + + + + + +// [[Rcpp::export]] +Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read) { + + + //https://gdal.org/doxygen/classGDALRasterBand.html#a09e1d83971ddff0b43deffd54ef25eef + GDALDatasetH ds = gdalraster::gdalH_open_dsn(dsource[0], 0); + GDALRasterBand * poBand = ((GDALDataset*) ds)->GetRasterBand(1); + + int nXBlockSize, nYBlockSize; + poBand->GetBlockSize( &nXBlockSize, &nYBlockSize ); + + + + int nXBlocks = (poBand->GetXSize() + nXBlockSize - 1) / nXBlockSize; + int nYBlocks = (poBand->GetYSize() + nYBlockSize - 1) / nYBlockSize; + + List out(nXBlocks * nYBlocks); + int cnt = 0; + + // GByte *pabyData = (GByte *) CPLMalloc(nXBlockSize * nYBlockSize); + + for( int iYBlock = 0; iYBlock < nYBlocks; iYBlock++ ) + { + for( int iXBlock = 0; iXBlock < nXBlocks; iXBlock++ ) + { + int nXValid, nYValid; + // Compute the portion of the block that is valid + // for partial edge blocks. + poBand->GetActualBlockSize(iXBlock, iYBlock, &nXValid, &nYValid); + LogicalVector dummy_vec(0); + if (read[0]) { + RawVector raw_bytes(nXValid * nYValid); + Rprintf("%i\n", iYBlock); + + // poBand->ReadBlock( iXBlock, iYBlock, pabyData ); + // for (int ibyte = 0; ibyte < raw_bytes.size(); ibyte++) { + // raw_bytes[ibyte] = pabyData[ibyte]; + // } + raw_bytes.attr("actual_block_size") = IntegerVector::create(nXValid, nYValid); + out[cnt] = raw_bytes; + // CPLFree(pabyData); + } else { + dummy_vec.attr("actual_block_size") = IntegerVector::create(nXValid, nYValid); + out[cnt] = dummy_vec; + } + cnt++; + } + + } + GDALClose(ds); +//CPLFree(pabyData); + return out; +} diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 424b4423..9273a156 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -508,8 +508,8 @@ BEGIN_RCPP END_RCPP } // raster_io_gdal_cpp -List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type); -RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP) { +List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -518,7 +518,8 @@ BEGIN_RCPP Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type)); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); return rcpp_result_gen; END_RCPP } @@ -567,8 +568,8 @@ BEGIN_RCPP END_RCPP } // vapour_read_raster_block_cpp -Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type); -RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -577,7 +578,8 @@ BEGIN_RCPP Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type)); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); return rcpp_result_gen; END_RCPP } @@ -625,6 +627,47 @@ BEGIN_RCPP return rcpp_result_gen; END_RCPP } +// vapour_read_raster_value_cpp +Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); +RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp1 +Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp +Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} // raster_gdalinfo_app_cpp CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { @@ -714,14 +757,17 @@ static const R_CallMethodDef CallEntries[] = { {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, - {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 5}, + {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, - {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 5}, + {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, + {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, + {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, From 05a442d3066952444c7262228807ce1ff7cd240e Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sun, 5 Mar 2023 04:10:05 +0000 Subject: [PATCH 026/102] message about Feature Service sources --- R/vapour_input_geometry.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/R/vapour_input_geometry.R b/R/vapour_input_geometry.R index c9f0a5b8..663c756d 100644 --- a/R/vapour_input_geometry.R +++ b/R/vapour_input_geometry.R @@ -42,7 +42,10 @@ #' sql = "SELECT * FROM list_locality_postcode_meander_valley")$count vapour_layer_info <- function(dsource, layer = 0L, sql = "", extent = NA, count = TRUE, ...) { - layer_names <- vapour_layer_names(dsource) + layer_names <- try(vapour_layer_names(dsource)) + if (inherits(layer_names, "try-error") && grepl("rest.*FeatureServer/0", dsource)) { + message("looks like dsource is a ESRI Feature Services, try constructing the DSN as \n \ https://<_>rest/services///FeatureServer/0query?where=objectid+%3D+objectid&outfields=*&f=json\n see ESRIJSON document in gdal.org and this example https://gist.github.com/mdsumner/c54bdc119accf95138f5ad7ab574337d\n") + } layer_name <- layer if (!is.numeric(layer)) layer <- match(layer_name, layer_names) - 1 if (is.numeric(layer_name)) layer_name <- layer_names[layer + 1] From 4ec06d1f4ccc9854e1d766a3b8b59a56c3fbce33 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 7 Mar 2023 03:00:02 +0000 Subject: [PATCH 027/102] clarify install --- README.Rmd | 77 ++++++++++------------- README.md | 125 +++++++++++++++---------------------- src/00_raster_block_io.cpp | 1 + 3 files changed, 85 insertions(+), 118 deletions(-) diff --git a/README.Rmd b/README.Rmd index f500b59b..b55cf967 100644 --- a/README.Rmd +++ b/README.Rmd @@ -33,14 +33,14 @@ component entities independently. For vector data: -* read access to feature attributes. -* read access to raw binary geometry. -* read access to geometry in text forms (GeoJSON, WKT, GML, KML). -* read access to the extent, or bounding box, of feature geometries. +* read access to fields alone +* read raw binary geometry alone, or geometry in text forms (GeoJSON, WKT, GML, KML). +* read access to the extent of geometries * helper functions to summarize feature identity and geometry status - -All vector/feature read tasks can optionally apply an arbitrary limit to the maximum number of features read or queried, and all allow execution of [OGRSQL](https://gdal.org/user/ogr_sql_dialect.html) to a layer prior to data extraction. In combination with a SQL -query a [bounding box spatial filter](https://gdal.org/user/ogr_sql_dialect.html#executesql) can be applied via the `extent` argument. +* limit/skip control on records read +* execution of [OGRSQL](https://gdal.org/user/ogr_sql_dialect.html) with control of SQL dialect +* read in the context of a [bounding box spatial filter](https://gdal.org/user/ogr_sql_dialect.html#executesql) can be applied via the `extent` argument + For raster data: @@ -49,16 +49,18 @@ For raster data: * read access for raw data using GDAL's [RasterIO framework](https://gdal.org/tutorials/raster_api_tut.html) and its dynamic image decimation / replication resampling algorithms. * read access for raw data using GDAL's [Warper framework](https://gdal.org/api/gdalwarp_cpp.html) and its dynamic image warping, a superset of the RasterIO capabilities. -The `vapour_warp_raster()` function is a new feature in vapour, and reflects many learnings about how the warper works and what is needed for use. We simplify the approach taken in `vapour_read_raster()` by allowing specifying an *extent* and *dimensions* as a minimum, and this works for data sources that contain *overviews* (or pyramid levels-of-detail) as it automatically chooses an appropriate level for the request made. This works for files, urls, database connections, online tiled image servers, and all the various ways of specifying GDAL data sources. +The warper works for data sources that contain *overviews* (or pyramid levels-of-detail) as it automatically chooses an appropriate level for the request made, files, urls, database connections, online tiled image servers, and all the various ways of specifying GDAL data sources. The workflows available are intended to support development of applications in R for these vector and [raster data](https://en.wikipedia.org/wiki/Raster_data) without being constrained to any particular data model. ## Installation -The package ~cannot be installed from CRAN~. +Install from CRAN, this should work on MacOS and Windows because CRAN provide binaries. + -```{r, install-cran, eval=FALSE} +```{r, install-cran,eval=FALSE} +install.packages("vapour") ``` The development version can be installed from Github, easiest is via the [hypertidy universe](https://hypertidy.r-universe.dev/ui#builds): @@ -78,15 +80,24 @@ remotes::install_github("hypertidy/vapour") You will need development tools for building R packages. -On Linux and MacOS building also requires an available GDAL installation, but on -Windows the ROpenSci rwinlib tools are used and the required GDAL will be -downloaded and used when building the package. The hypertidy universe way also has access to binaries. -On windows this installation is self-contained and only affects the use of R, it can be used alongside other -applications using GDAL. +On Linux, I'm using latest ubuntu and R usually, check https://cran.r-project.org/bin/linux/ubuntu/README + +then -For MacOS the package build is controlled by an internal CRAN process including configure arguments for the -gdal and proj data directories. +```bash +apt install --no-install-recommends software-properties-common dirmngr +add-apt-repository ppa:ubuntugis/ubuntugis-unstable --yes +apt update + +## Install 3rd parties + +## NetCDF and geo-spatial wunderkind +apt install libgdal-dev + +``` + +then `install.packages("vapour")` or whatever you use. ## Purpose @@ -175,16 +186,6 @@ I'm amazed that something as powerful and general as GDAL is still only available through these lenses, but maybe more folks will get interested over time. -## Warnings - -It's possible to give problematic "SELECT" statements via the `sql` argument. -Note that the geometry readers `vapour_read_geometry`, -`vapour_read_geometry_text`, and `vapour_read_extent` will strip out the `SELECT -... FROM` clause and replace it with `SELECT * FROM` to ensure that the geometry -is accessible, though the attributes are ignored. This means we can allow the -user or `dplyr` to create any `SELECT` statement. The function -`vapour_read_geometry` will return a list of NULLs, in this case. - ## Examples @@ -193,37 +194,23 @@ The package documentation page gives an overview of available functions. ```R help("vapour-package") ``` + See the vignettes and documentation for examples WIP. ## Context +Examples of packages that use vapour are in development, especially [whatarelief](https://github.com/hypertidy/whatarelief) and [ggdal](https://github.com/hypertidy/ggdal). -Examples of packages that use vapour are in development, -[RGDALSQL](https://github.com/mdsumner/RGDALSQL) and -[lazyraster](https://github.com/hypertidy/lazyraster). `RGDALSQL` aims to -leverage the facilities of GDAL to provide data *on-demand* for many sources *as -if* they were databases. `lazyraster` uses the level-of-detail facility of GDAL -to read just enough resolution from a raster source using traditional window -techniques. -Limitations, work-in-progress and other discussion are active here: +Limitations, work-in-progress and other discussion: + https://github.com/hypertidy/vapour/issues/4 We've kept a record of a minimal GDAL wrapper package here: https://github.com/diminutive/gdalmin -Before those I had worked on getting sp and dplyr to at least work together https://github.com/dis-organization/sp_dplyrexpt and recently rgdal was updated to allow tibbles to be used, something that spbabel and spdplyr really needed to avoid friction. - -Early exploration of allow non-geometry read with rgdal was tried here: https://github.com/hypertidy/gladr - - -Thanks to Edzer Pebesma and Roger Bivand and Tim Keitt for prior art that I crib -and copy from. Jeroen Ooms helped the R community hugely by providing an -accessible build process for libraries on Windows. Mark Padgham helped kick me -over a huge obstacle in using C++ libraries with R. Simon Wotherspoon and Ben -Raymond have endured ravings about wanting this level of control for many years. # Code of conduct diff --git a/README.md b/README.md index 05bcb8f9..6d1df628 100644 --- a/README.md +++ b/README.md @@ -21,40 +21,34 @@ provide access to the component entities independently. For vector data: -- read access to feature attributes. -- read access to raw binary geometry. -- read access to geometry in text forms (GeoJSON, WKT, GML, KML). -- read access to the extent, or bounding box, of feature geometries. -- helper functions to summarize feature identity and geometry status - -All vector/feature read tasks can optionally apply an arbitrary limit to -the maximum number of features read or queried, and all allow execution -of [OGRSQL](https://gdal.org/user/ogr_sql_dialect.html) to a layer prior -to data extraction. In combination with a SQL query a [bounding box -spatial filter](https://gdal.org/user/ogr_sql_dialect.html#executesql) -can be applied via the `extent` argument. +- read access to fields alone +- read raw binary geometry alone, or geometry in text forms (GeoJSON, + WKT, GML, KML). +- read access to the extent of geometries +- helper functions to summarize feature identity and geometry status +- limit/skip control on records read +- execution of [OGRSQL](https://gdal.org/user/ogr_sql_dialect.html) with + control of SQL dialect +- read in the context of a [bounding box spatial + filter](https://gdal.org/user/ogr_sql_dialect.html#executesql) can be + applied via the `extent` argument For raster data: -- read access to the list of available rasters within a collection - source (subdatasets). -- read access to *structural metadata* for individual raster sources. -- read access for raw data using GDAL’s [RasterIO - framework](https://gdal.org/tutorials/raster_api_tut.html) and its - dynamic image decimation / replication resampling algorithms. -- read access for raw data using GDAL’s [Warper - framework](https://gdal.org/api/gdalwarp_cpp.html) and its dynamic - image warping, a superset of the RasterIO capabilities. - -The `vapour_warp_raster()` function is a new feature in vapour, and -reflects many learnings about how the warper works and what is needed -for use. We simplify the approach taken in `vapour_read_raster()` by -allowing specifying an *extent* and *dimensions* as a minimum, and this -works for data sources that contain *overviews* (or pyramid +- read access to the list of available rasters within a collection + source (subdatasets). +- read access to *structural metadata* for individual raster sources. +- read access for raw data using GDAL’s [RasterIO + framework](https://gdal.org/tutorials/raster_api_tut.html) and its + dynamic image decimation / replication resampling algorithms. +- read access for raw data using GDAL’s [Warper + framework](https://gdal.org/api/gdalwarp_cpp.html) and its dynamic + image warping, a superset of the RasterIO capabilities. + +The warper works for data sources that contain *overviews* (or pyramid levels-of-detail) as it automatically chooses an appropriate level for -the request made. This works for files, urls, database connections, -online tiled image servers, and all the various ways of specifying GDAL -data sources. +the request made, files, urls, database connections, online tiled image +servers, and all the various ways of specifying GDAL data sources. The workflows available are intended to support development of applications in R for these vector and [raster @@ -63,7 +57,12 @@ constrained to any particular data model. ## Installation -The package \~cannot be installed from CRAN\~. +Install from CRAN, this should work on MacOS and Windows because CRAN +provide binaries. + +``` r +install.packages("vapour") +``` The development version can be installed from Github, easiest is via the [hypertidy universe](https://hypertidy.r-universe.dev/ui#builds): @@ -83,15 +82,24 @@ remotes::install_github("hypertidy/vapour") You will need development tools for building R packages. -On Linux and MacOS building also requires an available GDAL -installation, but on Windows the ROpenSci rwinlib tools are used and the -required GDAL will be downloaded and used when building the package. The -hypertidy universe way also has access to binaries. On windows this -installation is self-contained and only affects the use of R, it can be -used alongside other applications using GDAL. +On Linux, I’m using latest ubuntu and R usually, check + + +then + +``` bash +apt install --no-install-recommends software-properties-common dirmngr +add-apt-repository ppa:ubuntugis/ubuntugis-unstable --yes + +apt update + +## Install 3rd parties -For MacOS the package build is controlled by an internal CRAN process -including configure arguments for the gdal and proj data directories. +## NetCDF and geo-spatial wunderkind +apt install libgdal-dev +``` + +then `install.packages("vapour")` or whatever you use. ## Purpose @@ -206,17 +214,6 @@ package](https://github.com/rspatial/terra) and in packages `rgdal` and still only available through these lenses, but maybe more folks will get interested over time. -## Warnings - -It’s possible to give problematic “SELECT” statements via the `sql` -argument. Note that the geometry readers `vapour_read_geometry`, -`vapour_read_geometry_text`, and `vapour_read_extent` will strip out the -`SELECT ... FROM` clause and replace it with `SELECT * FROM` to ensure -that the geometry is accessible, though the attributes are ignored. This -means we can allow the user or `dplyr` to create any `SELECT` statement. -The function `vapour_read_geometry` will return a list of NULLs, in this -case. - ## Examples The package documentation page gives an overview of available functions. @@ -229,36 +226,18 @@ See the vignettes and documentation for examples WIP. ## Context -Examples of packages that use vapour are in development, -[RGDALSQL](https://github.com/mdsumner/RGDALSQL) and -[lazyraster](https://github.com/hypertidy/lazyraster). `RGDALSQL` aims -to leverage the facilities of GDAL to provide data *on-demand* for many -sources *as if* they were databases. `lazyraster` uses the -level-of-detail facility of GDAL to read just enough resolution from a -raster source using traditional window techniques. +Examples of packages that use vapour are in development, especially +[whatarelief](https://github.com/hypertidy/whatarelief) and +[ggdal](https://github.com/hypertidy/ggdal). + +Limitations, work-in-progress and other discussion: -Limitations, work-in-progress and other discussion are active here: We’ve kept a record of a minimal GDAL wrapper package here: -Before those I had worked on getting sp and dplyr to at least work -together and recently -rgdal was updated to allow tibbles to be used, something that spbabel -and spdplyr really needed to avoid friction. - -Early exploration of allow non-geometry read with rgdal was tried here: - - -Thanks to Edzer Pebesma and Roger Bivand and Tim Keitt for prior art -that I crib and copy from. Jeroen Ooms helped the R community hugely by -providing an accessible build process for libraries on Windows. Mark -Padgham helped kick me over a huge obstacle in using C++ libraries with -R. Simon Wotherspoon and Ben Raymond have endured ravings about wanting -this level of control for many years. - # Code of conduct Please note that this project is released with a [Contributor Code of diff --git a/src/00_raster_block_io.cpp b/src/00_raster_block_io.cpp index 7e1725c4..43319810 100644 --- a/src/00_raster_block_io.cpp +++ b/src/00_raster_block_io.cpp @@ -1,6 +1,7 @@ #include #include "gdalreadwrite/gdalreadwrite.h" #include "gdalraster/gdalraster.h" + using namespace Rcpp; From f9bac832904c01bfe1551e815df1aa81bc8e2006 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 15 Mar 2023 06:59:13 +0000 Subject: [PATCH 028/102] begin RFC 86 (w00t) --- DESCRIPTION | 5 +- R/RcppExports.R | 4 + .../gdalgeometry/gdalgeometry_stream.h | 313 ++++++++++++++++++ man/vapour_read_raster.Rd | 3 +- man/vapour_read_raster_block.Rd | 3 +- src/000-stream.cpp | 24 ++ src/RcppExports.cpp | 23 ++ 7 files changed, 371 insertions(+), 4 deletions(-) create mode 100644 inst/include/gdalgeometry/gdalgeometry_stream.h create mode 100644 src/000-stream.cpp diff --git a/DESCRIPTION b/DESCRIPTION index bb5af58b..434bdeef 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3.9007 +Version: 0.9.3.9008 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), @@ -12,7 +12,8 @@ Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c( person("Dale", "Maschette", role = c("ctb"), comment = "created the hex logo"), person("Joseph", "Stachelek", role = "ctb"), person("Even", "Rouault", role = "ctb", comment = "primary author of the COG format and its use of the GDALwarp app-library, example code used by the warper function here"), - person("Robert", "Hijmans", role = "ctb", comment = "code in terra package used as example/inspiration")) + person("Robert", "Hijmans", role = "ctb", comment = "code in terra package used as example/inspiration"), + person("Dewey", "Dunnington", role = "ctb", comment = "wrote the columnar-access mode streaming Arrow support")) Description: Provides low-level access to 'GDAL' functionality. 'GDAL' is the 'Geospatial Data Abstraction Library' a translator for raster and vector geospatial data formats that presents a single raster abstract data model and single vector abstract data model to the calling application diff --git a/R/RcppExports.R b/R/RcppExports.R index 17e8ec4a..b4d108b1 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,6 +1,10 @@ # Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 +gdal_dsn_read_geom_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { + .Call('_vapour_gdal_dsn_read_geom_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) +} + warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) } diff --git a/inst/include/gdalgeometry/gdalgeometry_stream.h b/inst/include/gdalgeometry/gdalgeometry_stream.h new file mode 100644 index 00000000..a72d7934 --- /dev/null +++ b/inst/include/gdalgeometry/gdalgeometry_stream.h @@ -0,0 +1,313 @@ +#ifndef GDALGEOMETRY_STREAM_H +#define GDALGEOMETRY_STREAM_H + +// WIP https://gdal.org/development/rfc/rfc86_column_oriented_api.html +// written entirely by Dewey Dunnington and the GDAL project +// https://github.com/paleolimbot/sf/tree/stream-reading + + +#define RCPP_DEFAULT_INCLUDE_CALL false + +#include + +#include +#if (GDAL_VERSION_MAJOR >= 3 && GDAL_VERSION_MINOR >= 6) + +#include + + +class GDALStreamWrapper { +public: + static void Make(struct ArrowArrayStream* stream, Rcpp::List shelter, + struct ArrowArrayStream* stream_out) { + stream_out->get_schema = &get_schema_wrap; + stream_out->get_next = &get_next_wrap; + stream_out->get_last_error = &get_last_error_wrap; + stream_out->release = &release_wrap; + stream_out->private_data = new GDALStreamWrapper(stream, shelter); + } + + ~GDALStreamWrapper() { + stream_.release(&stream_); + GDALDataset* poDS = (GDALDataset*)R_ExternalPtrAddr(shelter_[0]); + GDALClose(poDS); + R_SetExternalPtrAddr(shelter_[0], nullptr); + } + +private: + // The parent stream as returned from GDAL + struct ArrowArrayStream stream_; + Rcpp::List shelter_; + + GDALStreamWrapper(struct ArrowArrayStream* stream, Rcpp::List shelter): + shelter_(shelter) { + memcpy(&stream_, stream, sizeof(struct ArrowArrayStream)); + stream->release = nullptr; + } + + int get_schema(struct ArrowSchema* out) { + return stream_.get_schema(&stream_, out); + } + + int get_next(struct ArrowArray* out) { + return stream_.get_next(&stream_, out); + } + + const char* get_last_error() { + return stream_.get_last_error(&stream_); + } + + static int get_schema_wrap(struct ArrowArrayStream* stream, struct ArrowSchema* out) { + return reinterpret_cast(stream->private_data)->get_schema(out); + } + + static int get_next_wrap(struct ArrowArrayStream* stream, struct ArrowArray* out) { + return reinterpret_cast(stream->private_data)->get_next(out); + } + + static const char* get_last_error_wrap(struct ArrowArrayStream* stream) { + return reinterpret_cast(stream->private_data)->get_last_error(); + } + + static void release_wrap(struct ArrowArrayStream* stream) { + delete reinterpret_cast(stream->private_data); + stream->release = nullptr; + } +}; + +#endif + +namespace gdalgeometry_stream { +using namespace Rcpp; + +#if (GDAL_VERSION_MAJOR >= 3 && GDAL_VERSION_MINOR >= 6) + + + + + + +static void finalize_dataset_xptr(SEXP dataset_xptr) { + GDALDataset *poDS = (GDALDataset*)R_ExternalPtrAddr(dataset_xptr); + if (poDS != nullptr) { + GDALClose(poDS); + } +} + +inline Rcpp::List ogr_layer_setup(Rcpp::CharacterVector datasource, Rcpp::CharacterVector layer, + Rcpp::CharacterVector query, + //Rcpp::CharacterVector options, + bool quiet, + //Rcpp::CharacterVector drivers, + Rcpp::CharacterVector wkt_filter, + bool dsn_exists, + bool dsn_isdb, + int width) { + // adapted from the OGR tutorial @ www.gdal.org + //std::vector open_options = create_options(options, quiet); + //std::vector drivers_v = create_options(drivers, quiet); + GDALDataset *poDS; + poDS = (GDALDataset *) GDALOpenEx( datasource[0], GDAL_OF_VECTOR | GDAL_OF_READONLY, + // drivers.size() ? drivers_v.data() : NULL, open_options.data(), NULL ); + NULL, NULL, NULL ); + if( poDS == NULL ) { + // could not open dsn + if( dsn_isdb ) { + Rcpp::stop("Cannot open %s; Check connection parameters.", datasource); + } + if( dsn_exists ) { + Rcpp::stop("Cannot open %s; %s %s", + datasource, + "The source could be corrupt or not supported.", + "See `st_drivers()` for a list of supported formats."); + } + Rcpp::stop("Cannot open %s; The file doesn't seem to exist.", datasource); + } + + // Will close the dataset if some early return/exception prevents GDALClose() from being + // called/allows the result to be accessed by the caller. + Rcpp::RObject dataset_xptr = R_MakeExternalPtr(poDS, R_NilValue, R_NilValue); + R_RegisterCFinalizer(dataset_xptr, &finalize_dataset_xptr); + + if (layer.size() == 0 && Rcpp::CharacterVector::is_na(query[0])) { // no layer specified + switch (poDS->GetLayerCount()) { + case 0: { // error: + Rcpp::stop("No layers in datasource."); + } + case 1: { // silent: + OGRLayer *poLayer = poDS->GetLayer(0); + layer = Rcpp::CharacterVector::create(poLayer->GetName()); + break; + } + default: { // select first layer: message + warning: + OGRLayer *poLayer = poDS->GetLayer(0); + layer = Rcpp::CharacterVector::create(poLayer->GetName()); + if (! quiet) { // #nocov start + Rcpp::Rcout << "Multiple layers are present in data source " << datasource[0] << ", "; + Rcpp::Rcout << "reading layer `" << layer[0] << "'." << std::endl; + Rcpp::Rcout << "Use `st_layers' to list all layer names and their type in a data source." << std::endl; + Rcpp::Rcout << "Set the `layer' argument in `st_read' to read a particular layer." << std::endl; + } // #nocov end + Rcpp::Function warning("warning"); + warning("automatically selected the first layer in a data source containing more than one."); + } + } + } + + OGRLayer *poLayer; + if (! Rcpp::CharacterVector::is_na(query[0])) { + poLayer = poDS->ExecuteSQL(query[0], NULL, NULL); + if (poLayer == NULL) + Rcpp::stop("Query execution failed, cannot open layer.\n"); // #nocov + if (layer.size()) + Rcpp::warning("argument layer is ignored when query is specified\n"); // #nocov + } else + poLayer = poDS->GetLayerByName(layer[0]); + if (poLayer == NULL) { + Rcpp::Rcout << "Cannot open layer " << layer[0] << std::endl; + Rcpp::stop("Opening layer failed.\n"); + } + + // set spatial filter? + if (wkt_filter.size()) { + char *wkt = wkt_filter[0]; + OGRGeometry *new_geom; +#if GDAL_VERSION_MAJOR <= 2 && GDAL_VERSION_MINOR <= 2 + OGRErr err = OGRGeometryFactory::createFromWkt(&wkt, poLayer->GetSpatialRef(), &new_geom); +#else + OGRErr err = OGRGeometryFactory::createFromWkt((const char *) wkt, poLayer->GetSpatialRef(), &new_geom); +#endif + if (err != OGRERR_NONE) { + Rcpp::Rcout << "Cannot create geometry from: " << wkt_filter[0] << std::endl; + Rcpp::stop("wkt parse error.\n"); + } + poLayer->SetSpatialFilter(new_geom); + OGRGeometryFactory::destroyGeometry(new_geom); + } + + if (! quiet) { + if (! Rcpp::CharacterVector::is_na(query[0])) + Rcpp::Rcout << "Reading query `" << query[0] << "'" << std::endl << "from data source "; + else + Rcpp::Rcout << "Reading layer `" << layer[0] << "' from data source "; + // if (LENGTH(datasource[0]) > (width - (34 + LENGTH(layer[0])))) + Rcpp::String ds(datasource(0)); + if (layer.size()) { + Rcpp::String la(layer(0)); + if (strlen(ds.get_cstring()) > (width - (34 + strlen(la.get_cstring())))) + Rcpp::Rcout << std::endl << " "; + } + Rcpp::Rcout << "`" << datasource[0] << "' "; + if (((int) strlen(ds.get_cstring())) > (width - 25)) + Rcpp::Rcout << std::endl << " "; + Rcpp::Rcout << "using driver `" << poDS->GetDriverName() << "'" << std::endl; // #nocov + } + + // Keeps the dataset external pointer alive as long as the layer external pointer is alive + Rcpp::RObject layer_xptr = R_MakeExternalPtr(poLayer, R_NilValue, dataset_xptr); + + return Rcpp::List::create(dataset_xptr, layer_xptr); +} + + +inline Rcpp::List 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 = true, bool int64_as_string = false, + bool dsn_exists = true, + bool dsn_isdb = false, + int width = 80) { + Rcpp::List prep = ogr_layer_setup(datasource, layer, query, + //options, + quiet, + //drivers, + wkt_filter, + dsn_exists, dsn_isdb, width); + OGRDataSource* poDS = (OGRDataSource*)(R_ExternalPtrAddr(prep[0])); + OGRLayer* poLayer = (OGRLayer*)R_ExternalPtrAddr(prep[1]); + + Rcpp::List out; // = sf_from_ogrlayer(poLayer, quiet, int64_as_string, toTypeUser, fid_column_name, + // promote_to_multi); + + // clean up if SQL was used https://www.gdal.org/classGDALDataset.html#ab2c2b105b8f76a279e6a53b9b4a182e0 + if (! Rcpp::CharacterVector::is_na(query[0])) + poDS->ReleaseResultSet(poLayer); + + GDALClose(poDS); + R_SetExternalPtrAddr(prep[0], nullptr); + return out; +} + +inline Rcpp::List read_gdal_stream( + Rcpp::RObject stream_xptr, + Rcpp::CharacterVector datasource, + Rcpp::CharacterVector layer, + Rcpp::CharacterVector query, + Rcpp::CharacterVector options, + bool quiet, + Rcpp::CharacterVector drivers, + Rcpp::CharacterVector wkt_filter, + bool dsn_exists, + bool dsn_isdb, + Rcpp::CharacterVector fid_column, + int width) { + + const char* array_stream_options[] = {"INCLUDE_FID=NO", nullptr}; + if (fid_column.size() == 1) { + array_stream_options[0] = "INCLUDE_FID=YES"; + } + + Rcpp::List prep = ogr_layer_setup(datasource, layer, query, + //options, + quiet, + //drivers, + wkt_filter, + dsn_exists, dsn_isdb, width); + OGRDataSource* poDS = (OGRDataSource*)(R_ExternalPtrAddr(prep[0])); + OGRLayer* poLayer = (OGRLayer*)R_ExternalPtrAddr(prep[1]); + auto stream_out = reinterpret_cast( + R_ExternalPtrAddr(stream_xptr)); + + OGRSpatialReference* crs = poLayer->GetSpatialRef(); + char* wkt_out; + crs->exportToWkt(&wkt_out); + std::string wkt_str(wkt_out); + CPLFree(wkt_out); + + struct ArrowArrayStream stream_temp; + if (!poLayer->GetArrowStream(&stream_temp, array_stream_options)) { + Rcpp::stop("Failed to open ArrayStream from Layer"); + } + + GDALStreamWrapper::Make(&stream_temp, prep, stream_out); + + // The reported feature count is incorrect if there is a query + double num_features; + if (query.size() == 0) { + num_features = (double) poLayer->GetFeatureCount(false); + } else { + num_features = -1; + } + + return Rcpp::List::create(wkt_str, Rcpp::NumericVector::create(num_features)); +} + +#else + +inline Rcpp::RObject read_gdal_stream(Rcpp::CharacterVector datasource, Rcpp::CharacterVector layer, + Rcpp::CharacterVector query, + Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, + Rcpp::CharacterVector wkt_filter, + bool dsn_exists = true, + bool dsn_isdb = false, + int width = 80) { + Rcpp::stop("read_stream() requires GDAL >= 3.6"); +} + +#endif + +} // gdalgeometry_stream + +#endif diff --git a/man/vapour_read_raster.Rd b/man/vapour_read_raster.Rd index 723be49c..97d52224 100644 --- a/man/vapour_read_raster.Rd +++ b/man/vapour_read_raster.Rd @@ -13,7 +13,8 @@ vapour_read_raster( sds = NULL, native = FALSE, set_na = TRUE, - band_output_type = "" + band_output_type = "", + unscale = TRUE ) } \arguments{ diff --git a/man/vapour_read_raster_block.Rd b/man/vapour_read_raster_block.Rd index cf670d85..fa2de5aa 100644 --- a/man/vapour_read_raster_block.Rd +++ b/man/vapour_read_raster_block.Rd @@ -9,7 +9,8 @@ vapour_read_raster_block( offset, dimension, band = 1L, - band_output_type = "" + band_output_type = "", + unscale = TRUE ) } \arguments{ diff --git a/src/000-stream.cpp b/src/000-stream.cpp new file mode 100644 index 00000000..e1ffd19c --- /dev/null +++ b/src/000-stream.cpp @@ -0,0 +1,24 @@ +#include +#include "gdalgeometry/gdalgeometry_stream.h" + + +using namespace Rcpp; + +// see process_cpl_read_ogr_stream +// [[Rcpp::export]] +List gdal_dsn_read_geom_stream(RObject stream_xptr, + CharacterVector dsn, + CharacterVector layer, + CharacterVector sql, + Rcpp::CharacterVector options, + bool quiet, + Rcpp::CharacterVector drivers, + Rcpp::CharacterVector wkt_filter, + bool dsn_exists, + bool dsn_isdb, + Rcpp::CharacterVector fid_column_name, + int width) { + return gdalgeometry_stream::read_gdal_stream(stream_xptr, dsn, layer, sql, + options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, + fid_column_name, width); +} diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 9273a156..530a908c 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -10,6 +10,28 @@ Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); #endif +// gdal_dsn_read_geom_stream +List gdal_dsn_read_geom_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); +RcppExport SEXP _vapour_gdal_dsn_read_geom_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); + 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 dsn_exists(dsn_existsSEXP); + Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< int >::type width(widthSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); + return rcpp_result_gen; +END_RCPP +} // warp_general_cpp List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { @@ -720,6 +742,7 @@ END_RCPP } static const R_CallMethodDef CallEntries[] = { + {"_vapour_gdal_dsn_read_geom_stream", (DL_FUNC) &_vapour_gdal_dsn_read_geom_stream, 12}, {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, From ada65ff599b9e215cd499eb341698d87e22b9d65 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 15 Mar 2023 12:05:36 +0000 Subject: [PATCH 029/102] internal .read_stream --- R/RcppExports.R | 4 ++-- R/read_stream_internal.R | 40 ++++++++++++++++++++++++++++++++++++++++ src/000-stream.cpp | 2 +- src/RcppExports.cpp | 10 +++++----- 4 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 R/read_stream_internal.R diff --git a/R/RcppExports.R b/R/RcppExports.R index b4d108b1..7d832e27 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,8 +1,8 @@ # Generated by using Rcpp::compileAttributes() -> do not edit by hand # Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 -gdal_dsn_read_geom_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { - .Call('_vapour_gdal_dsn_read_geom_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) +gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { + .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) } warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { diff --git a/R/read_stream_internal.R b/R/read_stream_internal.R new file mode 100644 index 00000000..fd5ae457 --- /dev/null +++ b/R/read_stream_internal.R @@ -0,0 +1,40 @@ +.read_stream <- function(dsn, layer, ..., sql = NA, options = NULL, quiet = FALSE, + fid_column_name = character(0), + drivers = character(0), ## replace with vrt://..?if= + wkt_filter = character(0), ## extent + optional = FALSE, return_stream = FALSE) { + + ## vapourize this + layer <- if (missing(layer)) { + character() + } else { + enc2utf8(layer) + } + if (nchar(dsn) < 1L) { + stop("`dsn` must describe a valid data source name for GDAL (input wasan empty string).", call. = FALSE) + } + dsn_exists <- file.exists(dsn) ## good to see this finally stuck in sf + + if (length(dsn) == 1 && dsn_exists) { + dsn = enc2utf8(normalizePath(dsn)) + } + + + stream = nanoarrow::nanoarrow_allocate_array_stream() + + info = vapour:::gdal_dsn_read_vector_stream(stream, dsn, layer, sql, as.character(options), quiet, + drivers, wkt_filter, dsn_exists, dsn_isdb = FALSE, fid_column_name, 80L) + + if (return_stream) return(stream) + geometry_column <- unlist(lapply( + stream$get_schema()$children, function(s) identical(s$metadata[["ARROW:extension:name"]], "ogc.wkb") + )) + crs <- info[[1L]] + if (info[[2L]] == -1) { + num_features = NULL + } + list(data = suppressWarnings(nanoarrow::convert_array_stream(stream, size = num_features)), crs = crs) +} + + + diff --git a/src/000-stream.cpp b/src/000-stream.cpp index e1ffd19c..1728d242 100644 --- a/src/000-stream.cpp +++ b/src/000-stream.cpp @@ -6,7 +6,7 @@ using namespace Rcpp; // see process_cpl_read_ogr_stream // [[Rcpp::export]] -List gdal_dsn_read_geom_stream(RObject stream_xptr, +List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 530a908c..d289e648 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -10,9 +10,9 @@ Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); #endif -// gdal_dsn_read_geom_stream -List gdal_dsn_read_geom_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); -RcppExport SEXP _vapour_gdal_dsn_read_geom_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { +// gdal_dsn_read_vector_stream +List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); +RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -28,7 +28,7 @@ BEGIN_RCPP Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); Rcpp::traits::input_parameter< int >::type width(widthSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); return rcpp_result_gen; END_RCPP } @@ -742,7 +742,7 @@ END_RCPP } static const R_CallMethodDef CallEntries[] = { - {"_vapour_gdal_dsn_read_geom_stream", (DL_FUNC) &_vapour_gdal_dsn_read_geom_stream, 12}, + {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, From d229c603760aedd0e5a4286a3b4e9a3c1bde3549 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 21 Mar 2023 10:11:20 +0000 Subject: [PATCH 030/102] oops needed nanoarrow --- .Rbuildignore | 1 + DESCRIPTION | 1 + R/read_stream_internal.R | 8 +- .../gdalvectorstream.h} | 82 +++++++++++-------- src/000-stream.cpp | 4 +- 5 files changed, 56 insertions(+), 40 deletions(-) rename inst/include/{gdalgeometry/gdalgeometry_stream.h => gdalarrowstream/gdalvectorstream.h} (82%) diff --git a/.Rbuildignore b/.Rbuildignore index f201e580..538eafd1 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -31,3 +31,4 @@ ^CRAN-SUBMISSION$ ^Dockerfile$ ^inst/ci$ +^.*gpkg$ diff --git a/DESCRIPTION b/DESCRIPTION index 434bdeef..9856ba0e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -26,6 +26,7 @@ LazyData: true LinkingTo: Rcpp Imports: jsonlite, + nanoarrow, Rcpp, utils RoxygenNote: 7.2.3 diff --git a/R/read_stream_internal.R b/R/read_stream_internal.R index fd5ae457..0b38c647 100644 --- a/R/read_stream_internal.R +++ b/R/read_stream_internal.R @@ -25,10 +25,12 @@ info = vapour:::gdal_dsn_read_vector_stream(stream, dsn, layer, sql, as.character(options), quiet, drivers, wkt_filter, dsn_exists, dsn_isdb = FALSE, fid_column_name, 80L) + browser() if (return_stream) return(stream) - geometry_column <- unlist(lapply( - stream$get_schema()$children, function(s) identical(s$metadata[["ARROW:extension:name"]], "ogc.wkb") - )) + ##// layer has been freed as this point + # geometry_column <- unlist(lapply( + # stream$get_schema()$children, function(s) identical(s$metadata[["ARROW:extension:name"]], "ogc.wkb") + # )) crs <- info[[1L]] if (info[[2L]] == -1) { num_features = NULL diff --git a/inst/include/gdalgeometry/gdalgeometry_stream.h b/inst/include/gdalarrowstream/gdalvectorstream.h similarity index 82% rename from inst/include/gdalgeometry/gdalgeometry_stream.h rename to inst/include/gdalarrowstream/gdalvectorstream.h index a72d7934..d9862a9a 100644 --- a/inst/include/gdalgeometry/gdalgeometry_stream.h +++ b/inst/include/gdalarrowstream/gdalvectorstream.h @@ -1,5 +1,5 @@ -#ifndef GDALGEOMETRY_STREAM_H -#define GDALGEOMETRY_STREAM_H +#ifndef GDALVECTORSTREAM_H +#define GDALVECTORSTREAM_H // WIP https://gdal.org/development/rfc/rfc86_column_oriented_api.html // written entirely by Dewey Dunnington and the GDAL project @@ -77,7 +77,7 @@ class GDALStreamWrapper { #endif -namespace gdalgeometry_stream { +namespace gdalvectorstream { using namespace Rcpp; #if (GDAL_VERSION_MAJOR >= 3 && GDAL_VERSION_MINOR >= 6) @@ -210,35 +210,35 @@ inline Rcpp::List ogr_layer_setup(Rcpp::CharacterVector datasource, Rcpp::Charac } -inline Rcpp::List 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 = true, bool int64_as_string = false, - bool dsn_exists = true, - bool dsn_isdb = false, - int width = 80) { - Rcpp::List prep = ogr_layer_setup(datasource, layer, query, - //options, - quiet, - //drivers, - wkt_filter, - dsn_exists, dsn_isdb, width); - OGRDataSource* poDS = (OGRDataSource*)(R_ExternalPtrAddr(prep[0])); - OGRLayer* poLayer = (OGRLayer*)R_ExternalPtrAddr(prep[1]); - - Rcpp::List out; // = sf_from_ogrlayer(poLayer, quiet, int64_as_string, toTypeUser, fid_column_name, - // promote_to_multi); - - // clean up if SQL was used https://www.gdal.org/classGDALDataset.html#ab2c2b105b8f76a279e6a53b9b4a182e0 - if (! Rcpp::CharacterVector::is_na(query[0])) - poDS->ReleaseResultSet(poLayer); - - GDALClose(poDS); - R_SetExternalPtrAddr(prep[0], nullptr); - return out; -} +// inline Rcpp::List 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 = true, bool int64_as_string = false, +// bool dsn_exists = true, +// bool dsn_isdb = false, +// int width = 80) { +// Rcpp::List prep = ogr_layer_setup(datasource, layer, query, +// //options, +// quiet, +// //drivers, +// wkt_filter, +// dsn_exists, dsn_isdb, width); +// OGRDataSource* poDS = (OGRDataSource*)(R_ExternalPtrAddr(prep[0])); +// OGRLayer* poLayer = (OGRLayer*)R_ExternalPtrAddr(prep[1]); +// +// Rcpp::List out; // = sf_from_ogrlayer(poLayer, quiet, int64_as_string, toTypeUser, fid_column_name, +// // promote_to_multi); +// +// // clean up if SQL was used https://www.gdal.org/classGDALDataset.html#ab2c2b105b8f76a279e6a53b9b4a182e0 +// if (! Rcpp::CharacterVector::is_na(query[0])) +// poDS->ReleaseResultSet(poLayer); +// +// GDALClose(poDS); +// R_SetExternalPtrAddr(prep[0], nullptr); +// return out; +// } inline Rcpp::List read_gdal_stream( Rcpp::RObject stream_xptr, @@ -272,8 +272,13 @@ inline Rcpp::List read_gdal_stream( OGRSpatialReference* crs = poLayer->GetSpatialRef(); char* wkt_out; - crs->exportToWkt(&wkt_out); - std::string wkt_str(wkt_out); + std::string wkt_str; + if (crs) { + crs->exportToWkt(&wkt_out); + wkt_str = "yaba"; + } else { + wkt_str = ""; + } CPLFree(wkt_out); struct ArrowArrayStream stream_temp; @@ -283,6 +288,13 @@ inline Rcpp::List read_gdal_stream( GDALStreamWrapper::Make(&stream_temp, prep, stream_out); + // clean up if SQL was used https://www.gdal.org/classGDALDataset.html#ab2c2b105b8f76a279e6a53b9b4a182e0 + if (! Rcpp::CharacterVector::is_na(query[0])) + poDS->ReleaseResultSet(poLayer); + + GDALClose(poDS); + R_SetExternalPtrAddr(prep[0], nullptr); + // The reported feature count is incorrect if there is a query double num_features; if (query.size() == 0) { @@ -308,6 +320,6 @@ inline Rcpp::RObject read_gdal_stream(Rcpp::CharacterVector datasource, Rcpp::Ch #endif -} // gdalgeometry_stream +} // gdalvectorstream #endif diff --git a/src/000-stream.cpp b/src/000-stream.cpp index 1728d242..5777efad 100644 --- a/src/000-stream.cpp +++ b/src/000-stream.cpp @@ -1,5 +1,5 @@ #include -#include "gdalgeometry/gdalgeometry_stream.h" +#include "gdalarrowstream/gdalvectorstream.h" using namespace Rcpp; @@ -18,7 +18,7 @@ List gdal_dsn_read_vector_stream(RObject stream_xptr, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width) { - return gdalgeometry_stream::read_gdal_stream(stream_xptr, dsn, layer, sql, + return gdalvectorstream::read_gdal_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width); } From 4f0403c8fd7560a1e9816d5a073a43a7f65015d4 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 21 Mar 2023 10:24:57 +0000 Subject: [PATCH 031/102] and match signatures --- inst/include/gdalarrowstream/gdalvectorstream.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/inst/include/gdalarrowstream/gdalvectorstream.h b/inst/include/gdalarrowstream/gdalvectorstream.h index d9862a9a..631e1e66 100644 --- a/inst/include/gdalarrowstream/gdalvectorstream.h +++ b/inst/include/gdalarrowstream/gdalvectorstream.h @@ -308,12 +308,13 @@ inline Rcpp::List read_gdal_stream( #else -inline Rcpp::RObject read_gdal_stream(Rcpp::CharacterVector datasource, Rcpp::CharacterVector layer, +inline Rcpp::RObject read_gdal_stream(Rcpp::RObject stream_xptr, Rcpp::CharacterVector datasource, Rcpp::CharacterVector layer, Rcpp::CharacterVector query, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists = true, bool dsn_isdb = false, + Rcpp::CharacterVector fid_column, int width = 80) { Rcpp::stop("read_stream() requires GDAL >= 3.6"); } From 9f3837a0c8883ae0ce261d69af1497a9947a3738 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 21 Mar 2023 10:28:47 +0000 Subject: [PATCH 032/102] more things --- inst/include/gdalarrowstream/gdalvectorstream.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/inst/include/gdalarrowstream/gdalvectorstream.h b/inst/include/gdalarrowstream/gdalvectorstream.h index 631e1e66..2433697c 100644 --- a/inst/include/gdalarrowstream/gdalvectorstream.h +++ b/inst/include/gdalarrowstream/gdalvectorstream.h @@ -308,9 +308,13 @@ inline Rcpp::List read_gdal_stream( #else -inline Rcpp::RObject read_gdal_stream(Rcpp::RObject stream_xptr, Rcpp::CharacterVector datasource, Rcpp::CharacterVector layer, +inline Rcpp::RObject read_gdal_stream(Rcpp::RObject stream_xptr, + Rcpp::CharacterVector datasource, + Rcpp::CharacterVector layer, Rcpp::CharacterVector query, - Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, + Rcpp::CharacterVector options, + bool quiet, + Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists = true, bool dsn_isdb = false, From 5c7c86c5cfd881ffaecae6fe515b10d2be4961ac Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 21 Mar 2023 10:32:39 +0000 Subject: [PATCH 033/102] wrong type at R level --- inst/include/gdalarrowstream/gdalvectorstream.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/inst/include/gdalarrowstream/gdalvectorstream.h b/inst/include/gdalarrowstream/gdalvectorstream.h index 2433697c..006a948f 100644 --- a/inst/include/gdalarrowstream/gdalvectorstream.h +++ b/inst/include/gdalarrowstream/gdalvectorstream.h @@ -308,7 +308,7 @@ inline Rcpp::List read_gdal_stream( #else -inline Rcpp::RObject read_gdal_stream(Rcpp::RObject stream_xptr, +inline Rcpp::List read_gdal_stream(Rcpp::RObject stream_xptr, Rcpp::CharacterVector datasource, Rcpp::CharacterVector layer, Rcpp::CharacterVector query, @@ -319,7 +319,7 @@ inline Rcpp::RObject read_gdal_stream(Rcpp::RObject stream_xptr, bool dsn_exists = true, bool dsn_isdb = false, Rcpp::CharacterVector fid_column, - int width = 80) { + int width) { Rcpp::stop("read_stream() requires GDAL >= 3.6"); } From c27b74fcd5d4d032239e33dad970cfdb59e4754e Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 21 Mar 2023 10:47:16 +0000 Subject: [PATCH 034/102] verify by flame --- .../gdalarrowstream/gdalvectorstream.h | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/inst/include/gdalarrowstream/gdalvectorstream.h b/inst/include/gdalarrowstream/gdalvectorstream.h index 006a948f..6d79b0ea 100644 --- a/inst/include/gdalarrowstream/gdalvectorstream.h +++ b/inst/include/gdalarrowstream/gdalvectorstream.h @@ -308,18 +308,19 @@ inline Rcpp::List read_gdal_stream( #else -inline Rcpp::List read_gdal_stream(Rcpp::RObject stream_xptr, - Rcpp::CharacterVector datasource, - Rcpp::CharacterVector layer, - Rcpp::CharacterVector query, - Rcpp::CharacterVector options, - bool quiet, - Rcpp::CharacterVector drivers, - Rcpp::CharacterVector wkt_filter, - bool dsn_exists = true, - bool dsn_isdb = false, - Rcpp::CharacterVector fid_column, - int width) { +inline Rcpp::List read_gdal_stream( + Rcpp::RObject stream_xptr, + Rcpp::CharacterVector datasource, + Rcpp::CharacterVector layer, + Rcpp::CharacterVector query, + Rcpp::CharacterVector options, + bool quiet, + Rcpp::CharacterVector drivers, + Rcpp::CharacterVector wkt_filter, + bool dsn_exists, + bool dsn_isdb, + Rcpp::CharacterVector fid_column, + int width) { Rcpp::stop("read_stream() requires GDAL >= 3.6"); } From be245c621cba5ac49e55b3e43e1ffd38aba0a6a9 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Sun, 26 Mar 2023 22:23:08 +0000 Subject: [PATCH 035/102] cmd line code for arrow --- .gitignore | 1 + inst/cmd/stream.cpp | 54 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 inst/cmd/stream.cpp diff --git a/.gitignore b/.gitignore index f3fe723b..cd757ffc 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ proj_conf_test.c proj_conf_test.cpp configure* CRAN-RELEASE +*.gpkg diff --git a/inst/cmd/stream.cpp b/inst/cmd/stream.cpp new file mode 100644 index 00000000..0f905ff0 --- /dev/null +++ b/inst/cmd/stream.cpp @@ -0,0 +1,54 @@ +#include +#include +#include + +int main(int argc, char **argv) { + GDALAllRegister(); + // dsn, layer + // std::cout << argv[1] << std::endl; + // std::cout << argv[2] << std::endl; + GDALDataset * poDS = (GDALDataset*) GDALOpenEx( argv[1], GDAL_OF_VECTOR, NULL, NULL, NULL ); + if( poDS == NULL ) + { + printf( "Open failed %s.\n", argv[1] ); + exit( 1 ); + } + OGRLayer *poLayer; + + poLayer = poDS->GetLayerByName( argv[2] ); + + if (poLayer) { + struct ArrowArrayStream stream; + if( !poLayer->GetArrowStream(&stream, nullptr)) + { + fprintf(stderr, "GetArrowStream() failed\n"); + exit(1); + } + struct ArrowSchema schema; + if( stream.get_schema(&stream, &schema) == 0 ) + { + // Do something useful + schema.release(&schema); + } + while( true ) + { + struct ArrowArray array; + // Look for an error (get_next() returning a non-zero code), or + // end of iteration (array.release == nullptr) + // + if( stream.get_next(&stream, &array) != 0 || + array.release == nullptr ) + { + break; + } + // Do something useful + array.release(&array); + } + stream.release(&stream); + } else { + std::cout << "getting layer '" << argv[2] << "' from dsn '" << argv[1] << "' failed" << std::endl; + } + + GDALClose( poDS ); + return 1; +} From 6b0c4bf9faba667b9b2e0021cc69b12a4cf135ed Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 27 Mar 2023 00:55:02 +0000 Subject: [PATCH 036/102] check cleanups --- R/00_read_block.R | 1 + R/00_warpgeneral.R | 7 +++++-- R/raster-input.R | 1 + R/read_stream_internal.R | 2 +- R/vapour-gdal-library.R | 2 +- man/GDAL-library.Rd | 2 +- man/vapour_read_raster.Rd | 2 ++ man/vapour_read_raster_block.Rd | 2 ++ 8 files changed, 14 insertions(+), 5 deletions(-) diff --git a/R/00_read_block.R b/R/00_read_block.R index f5705393..7ecf9220 100644 --- a/R/00_read_block.R +++ b/R/00_read_block.R @@ -80,6 +80,7 @@ vapour_create_copy <- function(dsource, filename, overwrite = FALSE, driver = "G #' @param dimension window size to read from, or write to #' @param band_output_type numeric type of band to apply (else the native type if '') can be one of 'Byte', 'Int32', or 'Float64' #' @param band which band to read (1-based) +#' @param unscale default is `TRUE` so native values will be converted by offset and scale to floating point #' #' @return a list with a vector of data from the band read #' @export diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 43d9b3b0..53185998 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -1,8 +1,11 @@ -## wrapper around in-dev vapour function to simplify the warper interface (let GDAL do the work) -#' Title +#' General warper functions +#' +#' The warper is used to convert source/s to an output file or data in memory. #' +#' Two functions 'gdal_raster_data' and 'gdal_raster_dsn' act like the gdalwarp command line +#' tool. #' @param dsn #' @param target_crs #' @param target_dim diff --git a/R/raster-input.R b/R/raster-input.R index 785bf1f3..7b2b244d 100644 --- a/R/raster-input.R +++ b/R/raster-input.R @@ -49,6 +49,7 @@ #' @param sds index of subdataset to read (usually 1) #' @param set_na specify whether NA values should be set for the NODATA #' @param band_output_type numeric type of band to apply (else the native type if ''), is mapped to one of 'Byte', 'Int32', or 'Float64' +#' @param unscale default is `TRUE` so native values will be converted by offset and scale to floating point #' @export #' @return list of numeric vectors (only one for 'band') #' @examples diff --git a/R/read_stream_internal.R b/R/read_stream_internal.R index 0b38c647..66ddb37a 100644 --- a/R/read_stream_internal.R +++ b/R/read_stream_internal.R @@ -22,7 +22,7 @@ stream = nanoarrow::nanoarrow_allocate_array_stream() - info = vapour:::gdal_dsn_read_vector_stream(stream, dsn, layer, sql, as.character(options), quiet, + info = gdal_dsn_read_vector_stream(stream, dsn, layer, sql, as.character(options), quiet, drivers, wkt_filter, dsn_exists, dsn_isdb = FALSE, fid_column_name, 80L) browser() diff --git a/R/vapour-gdal-library.R b/R/vapour-gdal-library.R index 046de068..bc4e8090 100644 --- a/R/vapour-gdal-library.R +++ b/R/vapour-gdal-library.R @@ -172,7 +172,7 @@ vapour_geom_summary <- function(dsource, layer = 0L, sql = "", limit_n = NULL, s #' #' drv <- vapour_all_drivers() #' -#' f <- system.file("extdata/sst_c.gpkg", package = "vapour") +#' f <- system.file("extdata/sst_c.gpkg", package = "vapour", mustWork = TRUE) #' vapour_driver(f) #' #' as.data.frame(drv)[match(vapour_driver(f), drv$driver), ] diff --git a/man/GDAL-library.Rd b/man/GDAL-library.Rd index 2ffc69b6..5dd60312 100644 --- a/man/GDAL-library.Rd +++ b/man/GDAL-library.Rd @@ -44,7 +44,7 @@ vapour_gdal_version() drv <- vapour_all_drivers() -f <- system.file("extdata/sst_c.gpkg", package = "vapour") +f <- system.file("extdata/sst_c.gpkg", package = "vapour", mustWork = TRUE) vapour_driver(f) as.data.frame(drv)[match(vapour_driver(f), drv$driver), ] diff --git a/man/vapour_read_raster.Rd b/man/vapour_read_raster.Rd index 97d52224..d1c587ac 100644 --- a/man/vapour_read_raster.Rd +++ b/man/vapour_read_raster.Rd @@ -35,6 +35,8 @@ vapour_read_raster( \item{set_na}{specify whether NA values should be set for the NODATA} \item{band_output_type}{numeric type of band to apply (else the native type if ''), is mapped to one of 'Byte', 'Int32', or 'Float64'} + +\item{unscale}{default is \code{TRUE} so native values will be converted by offset and scale to floating point} } \value{ list of numeric vectors (only one for 'band') diff --git a/man/vapour_read_raster_block.Rd b/man/vapour_read_raster_block.Rd index fa2de5aa..fb2b0e86 100644 --- a/man/vapour_read_raster_block.Rd +++ b/man/vapour_read_raster_block.Rd @@ -23,6 +23,8 @@ vapour_read_raster_block( \item{band}{which band to read (1-based)} \item{band_output_type}{numeric type of band to apply (else the native type if '') can be one of 'Byte', 'Int32', or 'Float64'} + +\item{unscale}{default is \code{TRUE} so native values will be converted by offset and scale to floating point} } \value{ a list with a vector of data from the band read From 54526b3e5842904e805b99e643b3de9b7a0431f9 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 05:26:27 +0000 Subject: [PATCH 037/102] does setup-r work --- .github/workflows/R-CMD-check.yaml | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 9b6da9fd..a3ac6182 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -2,7 +2,7 @@ # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: [main, sql-dialect2] + branches: [main, master] pull_request: branches: [main, master] @@ -18,9 +18,8 @@ jobs: fail-fast: false matrix: config: - - {os: macOS-latest, r: 'release'} - - {os: windows-latest, r: 'release', binary: 'rtools'} - - {os: windows-latest, r: 'release', binary: 'rwinlib'} + - {os: macos-latest, r: 'release'} + - {os: windows-latest, r: 'release'} - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - {os: ubuntu-latest, r: 'release'} - {os: ubuntu-latest, r: 'oldrel-1'} @@ -30,15 +29,7 @@ jobs: R_KEEP_PKG_SOURCE: yes steps: - - name: Install macOS system dependencies - if: runner.os == 'macOS' - run: | - brew install openssl - brew install proj - brew install geos - brew install gdal - - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: r-lib/actions/setup-pandoc@v2 @@ -47,18 +38,12 @@ jobs: r-version: ${{ matrix.config.r }} http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true - rtools-version: '42' - + - uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::rcmdcheck needs: check - - name: ZapRtools - if: runner.os == 'windows' && matrix.config.binary == 'rwinlib' - run: rm src/Makevars.ucrt - - - uses: r-lib/actions/check-r-package@v2 with: upload-snapshots: true From a8fa82df2b8798b8045d54ab1163477e74092664 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 05:40:25 +0000 Subject: [PATCH 038/102] apply patch for 4.3 from CRAN --- NEWS.md | 2 ++ src/Makevars.ucrt | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 7c586857..b7999a95 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # vapour dev +* New Makevars.ucrt with patch contributed by CRAN, Tomas Kalibera. + * raster read gains "unscale" argument, `TRUE` by default which means offset and scale values are applied and return value is of type Float64, set to `FALSE` to avoid applying scale/offset to band values (this was always implicitly false (no offset scale applied) if the output type wasn't suitable). . * Fix inefficiency in gdal_raster_data() which was warping all bands in MEM lol. diff --git a/src/Makevars.ucrt b/src/Makevars.ucrt index 83b54ce8..5bfadc15 100644 --- a/src/Makevars.ucrt +++ b/src/Makevars.ucrt @@ -5,8 +5,10 @@ PKG_CPPFLAGS =\ -I../inst/include \ -DHAVE_PROJ_H +LIBSHARPYUV = $(or $(and $(wildcard $(R_TOOLS_SOFT)/lib/libsharpyuv.a),-lsharpyuv),) + PKG_LIBS = \ --fopenmp -lgdal -larmadillo -lopenblas -lgfortran -lquadmath -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 +-fopenmp -lgdal -larmadillo -lopenblas -lgfortran -lquadmath -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp $(LIBSHARPYUV) -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 CXX_STD = CXX From a3d1d21c1286ceb32ecb781471c10622c6587c4b Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 08:37:35 +0000 Subject: [PATCH 039/102] 43 --- .github/workflows/R-CMD-check.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index a3ac6182..72441fc0 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -36,6 +36,7 @@ jobs: - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} + r-tools: 43 http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true From 7ffcdfa26365871803bb6d2f4a877b4d46660713 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 08:41:22 +0000 Subject: [PATCH 040/102] ok 42 --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 72441fc0..63d1d371 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -36,7 +36,7 @@ jobs: - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} - r-tools: 43 + r-tools: 42 http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true From 76865686e26a6912226da402a059c5995afc81a1 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 09:51:41 +0000 Subject: [PATCH 041/102] path --- .github/workflows/R-CMD-check.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 63d1d371..626d172e 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -37,6 +37,7 @@ jobs: with: r-version: ${{ matrix.config.r }} r-tools: 42 + windows-path-include-rtools: true http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true From e1c9378b58204cf20bf9ab8ac6661816c1ba6a5a Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 10:03:51 +0000 Subject: [PATCH 042/102] r-tools-version lol --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 626d172e..a63c6e7f 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -36,7 +36,7 @@ jobs: - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} - r-tools: 42 + r-tools-version: 42 windows-path-include-rtools: true http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true From 3bee29b145b0babf424889d93395c21466fa4946 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 10:04:57 +0000 Subject: [PATCH 043/102] dough --- .github/workflows/R-CMD-check.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index a63c6e7f..2dc4bfd0 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -36,7 +36,7 @@ jobs: - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} - r-tools-version: 42 + rtools-version: 42 windows-path-include-rtools: true http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true From f2ab19e399b193c04e1847b433e6517ad69cdf17 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 10:27:33 +0000 Subject: [PATCH 044/102] just standard --- .github/workflows/{R-CMD-check.yaml => check-standard.yaml} | 2 -- 1 file changed, 2 deletions(-) rename .github/workflows/{R-CMD-check.yaml => check-standard.yaml} (94%) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/check-standard.yaml similarity index 94% rename from .github/workflows/R-CMD-check.yaml rename to .github/workflows/check-standard.yaml index 2dc4bfd0..a3ac6182 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/check-standard.yaml @@ -36,8 +36,6 @@ jobs: - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} - rtools-version: 42 - windows-path-include-rtools: true http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true From 7f224096ab1f7c2be65444a711674c33d9b3146e Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 10:33:38 +0000 Subject: [PATCH 045/102] rtools --- .github/workflows/check-standard.yaml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index a3ac6182..a758f2e6 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -19,7 +19,9 @@ jobs: matrix: config: - {os: macos-latest, r: 'release'} - - {os: windows-latest, r: 'release'} + - {os: windows-latest, r: '4.2.3', rtools-version: '42'} + - {os: windows-devel, r: '4.3.0', rtools-version: '43'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - {os: ubuntu-latest, r: 'release'} - {os: ubuntu-latest, r: 'oldrel-1'} @@ -38,7 +40,13 @@ jobs: r-version: ${{ matrix.config.r }} http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true - + rtools-version: ${{ matrix.config.rtools.version }} + + # - name: Install most Windows system dependencies + # if: runner.os == 'Windows' + # run: | + # pacman -Syu mingw-w64-x86_64-make --noconfirm + # - uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::rcmdcheck From dba539dec68b5977940f41c28e15b656127f5876 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 10:34:22 +0000 Subject: [PATCH 046/102] pacma --- .github/workflows/check-standard.yaml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index a758f2e6..6a65a3e0 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -18,13 +18,13 @@ jobs: fail-fast: false matrix: config: - - {os: macos-latest, r: 'release'} + # - {os: macos-latest, r: 'release'} - {os: windows-latest, r: '4.2.3', rtools-version: '42'} - {os: windows-devel, r: '4.3.0', rtools-version: '43'} - - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - - {os: ubuntu-latest, r: 'release'} - - {os: ubuntu-latest, r: 'oldrel-1'} + #- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + #- {os: ubuntu-latest, r: 'release'} + #- {os: ubuntu-latest, r: 'oldrel-1'} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} @@ -42,11 +42,11 @@ jobs: use-public-rspm: true rtools-version: ${{ matrix.config.rtools.version }} - # - name: Install most Windows system dependencies - # if: runner.os == 'Windows' - # run: | - # pacman -Syu mingw-w64-x86_64-make --noconfirm - # + - name: Install most Windows system dependencies + if: runner.os == 'Windows' + run: | + pacman -Syu mingw-w64-x86_64-make --noconfirm + - uses: r-lib/actions/setup-r-dependencies@v2 with: extra-packages: any::rcmdcheck From 9a30f940eb9ef0e6a64d0127055068c7799948bc Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 10:40:44 +0000 Subject: [PATCH 047/102] path include --- .github/workflows/check-standard.yaml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index 6a65a3e0..9fc861f8 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -19,8 +19,8 @@ jobs: matrix: config: # - {os: macos-latest, r: 'release'} - - {os: windows-latest, r: '4.2.3', rtools-version: '42'} - - {os: windows-devel, r: '4.3.0', rtools-version: '43'} + - {os: windows-latest, r: '4.2.3', rtools-version: '42', windows-path-include-rtools: 'true' } + - {os: windows-devel, r: '4.3.0', rtools-version: '43', windows-path-include-rtools: 'true'} #- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} #- {os: ubuntu-latest, r: 'release'} @@ -41,11 +41,12 @@ jobs: http-user-agent: ${{ matrix.config.http-user-agent }} use-public-rspm: true rtools-version: ${{ matrix.config.rtools.version }} + windows-path-include-rtools: ${{ matrix.config.windows-path-include-rtools }} - - name: Install most Windows system dependencies - if: runner.os == 'Windows' - run: | - pacman -Syu mingw-w64-x86_64-make --noconfirm + # - name: Install most Windows system dependencies + # if: runner.os == 'Windows' + # run: | + # pacman -Syu mingw-w64-x86_64-make --noconfirm - uses: r-lib/actions/setup-r-dependencies@v2 with: From e5a3bc7af70b5a6ec3dc8466c85aa152ca661e48 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 10:56:36 +0000 Subject: [PATCH 048/102] do the getting --- .github/workflows/check-standard.yaml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index 9fc861f8..e33a6117 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -19,7 +19,7 @@ jobs: matrix: config: # - {os: macos-latest, r: 'release'} - - {os: windows-latest, r: '4.2.3', rtools-version: '42', windows-path-include-rtools: 'true' } + - {os: windows-latest, r: '4.2.3', rtools-version: '43', windows-path-include-rtools: 'true' } - {os: windows-devel, r: '4.3.0', rtools-version: '43', windows-path-include-rtools: 'true'} #- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} @@ -43,10 +43,11 @@ jobs: rtools-version: ${{ matrix.config.rtools.version }} windows-path-include-rtools: ${{ matrix.config.windows-path-include-rtools }} - # - name: Install most Windows system dependencies - # if: runner.os == 'Windows' - # run: | - # pacman -Syu mingw-w64-x86_64-make --noconfirm + - name: Install Rtools + if: runner.os == 'Windows' + run: | + Invoke-WebRequest -Uri https://www.r-project.org/nosvn/winutf8/ucrt3/rtools43-5550-5548.exe -OutFile rtools43.exe + .\rtools43.exe /verysilent /suppressmsgboxes - uses: r-lib/actions/setup-r-dependencies@v2 with: From 62d60fcea2c430193885f4fa8ff6977800bafba8 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 11:02:47 +0000 Subject: [PATCH 049/102] use 43 but say it is 42? --- .github/workflows/check-standard.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index e33a6117..abcfda38 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -19,8 +19,8 @@ jobs: matrix: config: # - {os: macos-latest, r: 'release'} - - {os: windows-latest, r: '4.2.3', rtools-version: '43', windows-path-include-rtools: 'true' } - - {os: windows-devel, r: '4.3.0', rtools-version: '43', windows-path-include-rtools: 'true'} + - {os: windows-latest, r: '4.2.3', rtools-version: '42', windows-path-include-rtools: 'true', update-rtools: 'true'} + - {os: windows-devel, r: '4.3.0', rtools-version: '42', windows-path-include-rtools: 'true', update-rtools: 'true'} #- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} #- {os: ubuntu-latest, r: 'release'} @@ -46,8 +46,8 @@ jobs: - name: Install Rtools if: runner.os == 'Windows' run: | - Invoke-WebRequest -Uri https://www.r-project.org/nosvn/winutf8/ucrt3/rtools43-5550-5548.exe -OutFile rtools43.exe - .\rtools43.exe /verysilent /suppressmsgboxes + Invoke-WebRequest -Uri https://www.r-project.org/nosvn/winutf8/ucrt3/rtools43-5550-5548.exe -OutFile rtools42.exe + .\rtools42.exe /verysilent /suppressmsgboxes - uses: r-lib/actions/setup-r-dependencies@v2 with: From 9de7122cb8b2b1a2d404b7f9c3e23c7297d56836 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 00:07:57 +1100 Subject: [PATCH 050/102] don't use -b --- R/RcppExports.R | 422 ++--- .../include/gdalwarpgeneral/gdalwarpgeneral.h | 7 +- src/RcppExports.cpp | 1606 ++++++++--------- vapour.Rproj | 44 +- 4 files changed, 1037 insertions(+), 1042 deletions(-) diff --git a/R/RcppExports.R b/R/RcppExports.R index 7d832e27..67e1201d 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,211 +1,211 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { - .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) -} - -warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { - .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) -} - -warp_suggest_cpp <- function(dsn, target_crs) { - .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) -} - -set_gdal_config_cpp <- function(option, value) { - .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) -} - -get_gdal_config_cpp <- function(option) { - .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) -} - -cleanup_gdal_cpp <- function() { - .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') -} - -driver_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -driver_id_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -layer_names_gdal_cpp <- function(dsn) { - .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -drivers_list_gdal_cpp <- function() { - .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') -} - -proj_to_wkt_gdal_cpp <- function(proj4string) { - .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) -} - -crs_is_lonlat_cpp <- function(input_string) { - .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) -} - -register_gdal_cpp <- function() { - .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') -} - -version_gdal_cpp <- function() { - .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') -} - -vsi_list_gdal_cpp <- function(dsn) { - .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { - .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -projection_info_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -report_fields_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { - .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) -} - -gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { - .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) -} - -gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { - .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) -} - -gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { - .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) -} - -gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { - .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) -} - -gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { - .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) -} - -gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { - .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) -} - -gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { - .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) -} - -gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { - .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { - .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) -} - -gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { - .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) -} - -read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { - .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) -} - -read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { - .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) -} - -read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { - .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) -} - -raster_gcp_gdal_cpp <- function(dsn) { - .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -raster_has_geolocation_gdal_cpp <- function(dsn, sds) { - .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) -} - -raster_info_gdal_cpp <- function(dsn, min_max) { - .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) -} - -raster_extent_cpp <- function(dsn) { - .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) -} - -raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { - .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) -} - -sds_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -sds_list_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) -} - -vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { - .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) -} - -vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { - .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) -} - -vapour_create_copy_cpp <- function(dsource, dtarget, driver) { - .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) -} - -vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { - .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) -} - -vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { - .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) -} - -blocks_cpp1 <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) -} - -blocks_cpp <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) -} - -raster_gdalinfo_app_cpp <- function(dsn, options) { - .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) -} - -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) -} - -raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { - .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) -} - +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { + .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) +} + +warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { + .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) +} + +warp_suggest_cpp <- function(dsn, target_crs) { + .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) +} + +set_gdal_config_cpp <- function(option, value) { + .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) +} + +get_gdal_config_cpp <- function(option) { + .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) +} + +cleanup_gdal_cpp <- function() { + .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') +} + +driver_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +driver_id_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +layer_names_gdal_cpp <- function(dsn) { + .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +drivers_list_gdal_cpp <- function() { + .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') +} + +proj_to_wkt_gdal_cpp <- function(proj4string) { + .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) +} + +crs_is_lonlat_cpp <- function(input_string) { + .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) +} + +register_gdal_cpp <- function() { + .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') +} + +version_gdal_cpp <- function() { + .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') +} + +vsi_list_gdal_cpp <- function(dsn) { + .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { + .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +projection_info_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +report_fields_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { + .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) +} + +gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { + .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) +} + +gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { + .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) +} + +gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { + .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) +} + +gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { + .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) +} + +gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { + .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) +} + +gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { + .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) +} + +gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { + .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) +} + +gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { + .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { + .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) +} + +gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { + .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) +} + +read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { + .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) +} + +read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { + .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) +} + +read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { + .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) +} + +raster_gcp_gdal_cpp <- function(dsn) { + .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +raster_has_geolocation_gdal_cpp <- function(dsn, sds) { + .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) +} + +raster_info_gdal_cpp <- function(dsn, min_max) { + .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) +} + +raster_extent_cpp <- function(dsn) { + .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) +} + +raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { + .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) +} + +sds_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +sds_list_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) +} + +vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { + .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) +} + +vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { + .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) +} + +vapour_create_copy_cpp <- function(dsource, dtarget, driver) { + .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) +} + +vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { + .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) +} + +vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { + .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) +} + +blocks_cpp1 <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) +} + +blocks_cpp <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) +} + +raster_gdalinfo_app_cpp <- function(dsn, options) { + .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) +} + +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) +} + +raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { + .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) +} + diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index 0de1ab35..aa1f74fe 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -178,12 +178,7 @@ inline List gdal_warp_general(CharacterVector dsn, } - if (bands.size() > 0) { - for (int iband = 0; iband < bands.size(); iband++) { - papszArg = CSLAddString(papszArg, "-b"); - papszArg = CSLAddString(papszArg, CPLSPrintf("%i", bands[iband])); - } - } + // List out = List::create(1); // CharacterVector sss(CSLCount (papszArg)); // for (int sii = 0; sii < sss.size(); sii++) sss[sii] = papszArg[sii]; diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index d289e648..28b39a94 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -1,803 +1,803 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -#ifdef RCPP_USE_GLOBAL_ROSTREAM -Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); -Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); -#endif - -// gdal_dsn_read_vector_stream -List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); -RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); - 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 dsn_exists(dsn_existsSEXP); - Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< int >::type width(widthSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); - return rcpp_result_gen; -END_RCPP -} -// warp_general_cpp -List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); -RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); - rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); - return rcpp_result_gen; -END_RCPP -} -// warp_suggest_cpp -List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); -RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); - return rcpp_result_gen; -END_RCPP -} -// set_gdal_config_cpp -IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); -RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); - rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); - return rcpp_result_gen; -END_RCPP -} -// get_gdal_config_cpp -CharacterVector get_gdal_config_cpp(CharacterVector option); -RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); - return rcpp_result_gen; -END_RCPP -} -// cleanup_gdal_cpp -LogicalVector cleanup_gdal_cpp(); -RcppExport SEXP _vapour_cleanup_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// driver_gdal_cpp -CharacterVector driver_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// driver_id_gdal_cpp -CharacterVector driver_id_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// layer_names_gdal_cpp -CharacterVector layer_names_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// drivers_list_gdal_cpp -List drivers_list_gdal_cpp(); -RcppExport SEXP _vapour_drivers_list_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// proj_to_wkt_gdal_cpp -CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); -RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); - rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); - return rcpp_result_gen; -END_RCPP -} -// crs_is_lonlat_cpp -LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); -RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); - rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); - return rcpp_result_gen; -END_RCPP -} -// register_gdal_cpp -LogicalVector register_gdal_cpp(); -RcppExport SEXP _vapour_register_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// version_gdal_cpp -CharacterVector version_gdal_cpp(); -RcppExport SEXP _vapour_version_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// vsi_list_gdal_cpp -CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// feature_count_gdal_cpp -NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// projection_info_gdal_cpp -List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// report_fields_gdal_cpp -CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// vapour_geom_name_cpp -Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// vapour_layer_extent_cpp -Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_all -List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); -RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ij -List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ia -List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_fa -List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_all -List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ij -List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ia -List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_fa -List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_all -NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ij -NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ia -NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); - return rcpp_result_gen; -END_RCPP -} -// read_fields_gdal_cpp -List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// read_geometry_gdal_cpp -List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// read_fids_gdal_cpp -NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// raster_gcp_gdal_cpp -List raster_gcp_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_has_geolocation_gdal_cpp -LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); -RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); - return rcpp_result_gen; -END_RCPP -} -// raster_info_gdal_cpp -List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); -RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); - rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); - return rcpp_result_gen; -END_RCPP -} -// raster_extent_cpp -NumericVector raster_extent_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_io_gdal_cpp -List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_gdal_cpp -CharacterVector sds_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_list_gdal_cpp -List sds_list_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_block_cpp -Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// vapour_write_raster_block_cpp -Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); -RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_copy_cpp -Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); -RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_cpp -Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); -RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_value_cpp -Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); -RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp1 -Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp -Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// raster_gdalinfo_app_cpp -CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); -RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); - return rcpp_result_gen; -END_RCPP -} -// raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); - return rcpp_result_gen; -END_RCPP -} -// raster_warp_file_cpp -List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); -RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, - {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, - {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, - {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, - {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, - {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, - {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, - {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, - {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, - {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, - {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, - {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, - {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, - {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, - {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, - {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, - {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, - {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, - {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, - {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, - {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, - {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, - {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, - {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, - {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, - {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, - {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, - {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, - {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, - {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, - {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, - {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, - {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, - {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, - {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, - {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, - {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, - {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, - {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, - {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, - {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, - {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, - {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, - {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, - {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, - {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, - {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, - {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, - {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, - {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_vapour(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} +// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +#ifdef RCPP_USE_GLOBAL_ROSTREAM +Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); +Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); +#endif + +// gdal_dsn_read_vector_stream +List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); +RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); + 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 dsn_exists(dsn_existsSEXP); + Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< int >::type width(widthSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); + return rcpp_result_gen; +END_RCPP +} +// warp_general_cpp +List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); +RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); + rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); + return rcpp_result_gen; +END_RCPP +} +// warp_suggest_cpp +List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); +RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); + return rcpp_result_gen; +END_RCPP +} +// set_gdal_config_cpp +IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); +RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); + rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); + return rcpp_result_gen; +END_RCPP +} +// get_gdal_config_cpp +CharacterVector get_gdal_config_cpp(CharacterVector option); +RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); + return rcpp_result_gen; +END_RCPP +} +// cleanup_gdal_cpp +LogicalVector cleanup_gdal_cpp(); +RcppExport SEXP _vapour_cleanup_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// driver_gdal_cpp +CharacterVector driver_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// driver_id_gdal_cpp +CharacterVector driver_id_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// layer_names_gdal_cpp +CharacterVector layer_names_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// drivers_list_gdal_cpp +List drivers_list_gdal_cpp(); +RcppExport SEXP _vapour_drivers_list_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// proj_to_wkt_gdal_cpp +CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); +RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); + rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); + return rcpp_result_gen; +END_RCPP +} +// crs_is_lonlat_cpp +LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); +RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); + rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); + return rcpp_result_gen; +END_RCPP +} +// register_gdal_cpp +LogicalVector register_gdal_cpp(); +RcppExport SEXP _vapour_register_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// version_gdal_cpp +CharacterVector version_gdal_cpp(); +RcppExport SEXP _vapour_version_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// vsi_list_gdal_cpp +CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// feature_count_gdal_cpp +NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// projection_info_gdal_cpp +List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// report_fields_gdal_cpp +CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// vapour_geom_name_cpp +Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// vapour_layer_extent_cpp +Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_all +List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); +RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ij +List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ia +List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_fa +List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_all +List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ij +List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ia +List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_fa +List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_all +NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ij +NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ia +NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); + return rcpp_result_gen; +END_RCPP +} +// read_fields_gdal_cpp +List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// read_geometry_gdal_cpp +List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// read_fids_gdal_cpp +NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// raster_gcp_gdal_cpp +List raster_gcp_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_has_geolocation_gdal_cpp +LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); +RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); + return rcpp_result_gen; +END_RCPP +} +// raster_info_gdal_cpp +List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); +RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); + rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); + return rcpp_result_gen; +END_RCPP +} +// raster_extent_cpp +NumericVector raster_extent_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_io_gdal_cpp +List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_gdal_cpp +CharacterVector sds_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_list_gdal_cpp +List sds_list_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// warp_in_memory_gdal_cpp +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_block_cpp +Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// vapour_write_raster_block_cpp +Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); +RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_copy_cpp +Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); +RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_cpp +Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); +RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_value_cpp +Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); +RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp1 +Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp +Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// raster_gdalinfo_app_cpp +CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); +RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); + return rcpp_result_gen; +END_RCPP +} +// raster_vrt_cpp +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); + return rcpp_result_gen; +END_RCPP +} +// raster_warp_file_cpp +List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); +RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); + return rcpp_result_gen; +END_RCPP +} + +static const R_CallMethodDef CallEntries[] = { + {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, + {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, + {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, + {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, + {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, + {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, + {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, + {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, + {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, + {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, + {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, + {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, + {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, + {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, + {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, + {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, + {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, + {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, + {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, + {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, + {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, + {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, + {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, + {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, + {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, + {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, + {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, + {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, + {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, + {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, + {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, + {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, + {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, + {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, + {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, + {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, + {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, + {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, + {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, + {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, + {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, + {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, + {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, + {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, + {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, + {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, + {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, + {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, + {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_vapour(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/vapour.Rproj b/vapour.Rproj index ee53058f..3d1bddfe 100644 --- a/vapour.Rproj +++ b/vapour.Rproj @@ -1,22 +1,22 @@ -Version: 1.0 - -RestoreWorkspace: No -SaveWorkspace: No -AlwaysSaveHistory: Yes - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -LineEndingConversion: Posix - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageCheckArgs: --as-cran -PackageRoxygenize: rd,collate,namespace +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Yes + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +LineEndingConversion: Posix + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageCheckArgs: --as-cran +PackageRoxygenize: rd,collate,namespace From 5970cce7e29e6342e8227344e5af7bffdcfea681 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 00:14:36 +1100 Subject: [PATCH 051/102] patch for ucrt and CRAN issue --- DESCRIPTION | 4 +- NEWS.md | 4 + R/RcppExports.R | 366 ++++++------ src/Makevars.ucrt | 6 +- src/RcppExports.cpp | 1370 +++++++++++++++++++++---------------------- vapour.Rproj | 44 +- 6 files changed, 900 insertions(+), 894 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a7bed8b4..ed3218be 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.3 +Version: 0.9.4 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), @@ -35,7 +35,7 @@ Suggests: markdown, rmarkdown, spelling -SystemRequirements: libgdal-dev, GDAL (>= 2.2.3), PROJ (>= 4.8.0), C++11 +SystemRequirements: libgdal-dev, GDAL (>= 2.2.3), PROJ (>= 4.8.0) VignetteBuilder: knitr URL: https://github.com/hypertidy/vapour BugReports: https://github.com/hypertidy/vapour/issues diff --git a/NEWS.md b/NEWS.md index e0b566c1..92087b94 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# vapour 0.9.4 + +New Makevars.ucrt with patch contributed by CRAN, and removed outdated C++11 requirement. + # vapour 0.9.3 * Update to CRAN Makevars.ucrt. diff --git a/R/RcppExports.R b/R/RcppExports.R index cd582233..1dcf281c 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,183 +1,183 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -set_gdal_config_cpp <- function(option, value) { - .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) -} - -get_gdal_config_cpp <- function(option) { - .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) -} - -cleanup_gdal_cpp <- function() { - .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') -} - -driver_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -driver_id_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -layer_names_gdal_cpp <- function(dsn) { - .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -drivers_list_gdal_cpp <- function() { - .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') -} - -proj_to_wkt_gdal_cpp <- function(proj4string) { - .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) -} - -register_gdal_cpp <- function() { - .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') -} - -version_gdal_cpp <- function() { - .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') -} - -vsi_list_gdal_cpp <- function(dsn) { - .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { - .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -projection_info_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -report_fields_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { - .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) -} - -gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { - .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) -} - -gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { - .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) -} - -gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { - .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) -} - -gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { - .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) -} - -gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { - .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) -} - -gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { - .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) -} - -gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { - .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) -} - -gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { - .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { - .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) -} - -gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { - .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) -} - -read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { - .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) -} - -read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { - .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) -} - -read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { - .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) -} - -raster_gcp_gdal_cpp <- function(dsn) { - .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -raster_has_geolocation_gdal_cpp <- function(dsn, sds) { - .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) -} - -raster_info_gdal_cpp <- function(dsn, min_max) { - .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) -} - -raster_extent_cpp <- function(dsn) { - .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) -} - -raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type) { - .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type) -} - -sds_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -sds_list_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) -} - -vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type) { - .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type) -} - -vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { - .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) -} - -vapour_create_copy_cpp <- function(dsource, dtarget, driver) { - .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) -} - -vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { - .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) -} - -raster_gdalinfo_app_cpp <- function(dsn, options) { - .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) -} - -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation) -} - -raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { - .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) -} - +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +set_gdal_config_cpp <- function(option, value) { + .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) +} + +get_gdal_config_cpp <- function(option) { + .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) +} + +cleanup_gdal_cpp <- function() { + .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') +} + +driver_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +driver_id_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +layer_names_gdal_cpp <- function(dsn) { + .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +drivers_list_gdal_cpp <- function() { + .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') +} + +proj_to_wkt_gdal_cpp <- function(proj4string) { + .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) +} + +register_gdal_cpp <- function() { + .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') +} + +version_gdal_cpp <- function() { + .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') +} + +vsi_list_gdal_cpp <- function(dsn) { + .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { + .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +projection_info_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +report_fields_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { + .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) +} + +gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { + .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) +} + +gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { + .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) +} + +gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { + .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) +} + +gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { + .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) +} + +gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { + .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) +} + +gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { + .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) +} + +gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { + .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) +} + +gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { + .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { + .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) +} + +gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { + .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) +} + +read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { + .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) +} + +read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { + .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) +} + +read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { + .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) +} + +raster_gcp_gdal_cpp <- function(dsn) { + .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +raster_has_geolocation_gdal_cpp <- function(dsn, sds) { + .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) +} + +raster_info_gdal_cpp <- function(dsn, min_max) { + .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) +} + +raster_extent_cpp <- function(dsn) { + .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) +} + +raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type) { + .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type) +} + +sds_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +sds_list_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) +} + +vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type) { + .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type) +} + +vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { + .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) +} + +vapour_create_copy_cpp <- function(dsource, dtarget, driver) { + .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) +} + +vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { + .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) +} + +raster_gdalinfo_app_cpp <- function(dsn, options) { + .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) +} + +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation) +} + +raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { + .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) +} + diff --git a/src/Makevars.ucrt b/src/Makevars.ucrt index 75479143..5bfadc15 100644 --- a/src/Makevars.ucrt +++ b/src/Makevars.ucrt @@ -5,10 +5,12 @@ PKG_CPPFLAGS =\ -I../inst/include \ -DHAVE_PROJ_H +LIBSHARPYUV = $(or $(and $(wildcard $(R_TOOLS_SOFT)/lib/libsharpyuv.a),-lsharpyuv),) + PKG_LIBS = \ --fopenmp -lgdal -larmadillo -lopenblas -lgfortran -lquadmath -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 +-fopenmp -lgdal -larmadillo -lopenblas -lgfortran -lquadmath -lpq -lpgcommon -lpgport -lodbc32 -lodbccp32 -lblosc -lkea -lhdf5_cpp -lhdf5 -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lxml2 -lopenjp2 -lnetcdf -lmysqlclient -lspatialite -lgeos_c -lgeos -lminizip -lgeos -ljson-c -lgta -lfreexl -lexpat -lssl -lpsapi -lgif -lmfhdf -lhdf5_hl -lcrypto -lportablexdr -ldf -lhdf5 -lsz -lpng16 -lpng -lpoppler -llcms2 -lfreetype -lharfbuzz -lfreetype -llz4 -lpcre2-8 -lpcre -lcurl -lbcrypt -lrtmp -lssl -lssh2 -lidn2 -lunistring -liconv -lgcrypt -lcrypto -lgpg-error -lws2_32 -ltiff -llzma -ljpeg -lz -lcfitsio -lzstd -lwebpdecoder -lwebp $(LIBSHARPYUV) -lsbml-static -lgeotiff -lproj -lsqlite3 -lbz2 -lcrypt32 -lwldap32 -lsecur32 -CXX_STD = CXX11 +CXX_STD = CXX all: clean winlibs diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 5f0cee8a..d4fe49a3 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -1,685 +1,685 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -#ifdef RCPP_USE_GLOBAL_ROSTREAM -Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); -Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); -#endif - -// set_gdal_config_cpp -IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); -RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); - rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); - return rcpp_result_gen; -END_RCPP -} -// get_gdal_config_cpp -CharacterVector get_gdal_config_cpp(CharacterVector option); -RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); - return rcpp_result_gen; -END_RCPP -} -// cleanup_gdal_cpp -LogicalVector cleanup_gdal_cpp(); -RcppExport SEXP _vapour_cleanup_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// driver_gdal_cpp -CharacterVector driver_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// driver_id_gdal_cpp -CharacterVector driver_id_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// layer_names_gdal_cpp -CharacterVector layer_names_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// drivers_list_gdal_cpp -List drivers_list_gdal_cpp(); -RcppExport SEXP _vapour_drivers_list_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// proj_to_wkt_gdal_cpp -CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); -RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); - rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); - return rcpp_result_gen; -END_RCPP -} -// register_gdal_cpp -LogicalVector register_gdal_cpp(); -RcppExport SEXP _vapour_register_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// version_gdal_cpp -CharacterVector version_gdal_cpp(); -RcppExport SEXP _vapour_version_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// vsi_list_gdal_cpp -CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// feature_count_gdal_cpp -NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// projection_info_gdal_cpp -List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// report_fields_gdal_cpp -CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// vapour_geom_name_cpp -Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// vapour_layer_extent_cpp -Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_all -List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); -RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ij -List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ia -List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_fa -List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_all -List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ij -List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ia -List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_fa -List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_all -NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ij -NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ia -NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); - return rcpp_result_gen; -END_RCPP -} -// read_fields_gdal_cpp -List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// read_geometry_gdal_cpp -List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// read_fids_gdal_cpp -NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// raster_gcp_gdal_cpp -List raster_gcp_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_has_geolocation_gdal_cpp -LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); -RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); - return rcpp_result_gen; -END_RCPP -} -// raster_info_gdal_cpp -List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); -RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); - rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); - return rcpp_result_gen; -END_RCPP -} -// raster_extent_cpp -NumericVector raster_extent_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_io_gdal_cpp -List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type); -RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_gdal_cpp -CharacterVector sds_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_list_gdal_cpp -List sds_list_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_block_cpp -Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type); -RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// vapour_write_raster_block_cpp -Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); -RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_copy_cpp -Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); -RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_cpp -Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); -RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); - return rcpp_result_gen; -END_RCPP -} -// raster_gdalinfo_app_cpp -CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); -RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); - return rcpp_result_gen; -END_RCPP -} -// raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation)); - return rcpp_result_gen; -END_RCPP -} -// raster_warp_file_cpp -List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); -RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, - {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, - {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, - {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, - {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, - {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, - {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, - {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, - {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, - {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, - {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, - {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, - {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, - {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, - {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, - {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, - {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, - {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, - {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, - {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, - {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, - {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, - {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, - {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, - {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, - {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, - {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, - {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, - {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, - {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, - {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, - {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, - {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, - {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, - {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 5}, - {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, - {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 11}, - {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 5}, - {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, - {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, - {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, - {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 6}, - {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_vapour(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} +// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +#ifdef RCPP_USE_GLOBAL_ROSTREAM +Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); +Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); +#endif + +// set_gdal_config_cpp +IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); +RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); + rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); + return rcpp_result_gen; +END_RCPP +} +// get_gdal_config_cpp +CharacterVector get_gdal_config_cpp(CharacterVector option); +RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); + return rcpp_result_gen; +END_RCPP +} +// cleanup_gdal_cpp +LogicalVector cleanup_gdal_cpp(); +RcppExport SEXP _vapour_cleanup_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// driver_gdal_cpp +CharacterVector driver_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// driver_id_gdal_cpp +CharacterVector driver_id_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// layer_names_gdal_cpp +CharacterVector layer_names_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// drivers_list_gdal_cpp +List drivers_list_gdal_cpp(); +RcppExport SEXP _vapour_drivers_list_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// proj_to_wkt_gdal_cpp +CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); +RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); + rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); + return rcpp_result_gen; +END_RCPP +} +// register_gdal_cpp +LogicalVector register_gdal_cpp(); +RcppExport SEXP _vapour_register_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// version_gdal_cpp +CharacterVector version_gdal_cpp(); +RcppExport SEXP _vapour_version_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// vsi_list_gdal_cpp +CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// feature_count_gdal_cpp +NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// projection_info_gdal_cpp +List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// report_fields_gdal_cpp +CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// vapour_geom_name_cpp +Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// vapour_layer_extent_cpp +Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_all +List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); +RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ij +List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ia +List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_fa +List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_all +List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ij +List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ia +List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_fa +List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_all +NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ij +NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ia +NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); + return rcpp_result_gen; +END_RCPP +} +// read_fields_gdal_cpp +List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// read_geometry_gdal_cpp +List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// read_fids_gdal_cpp +NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// raster_gcp_gdal_cpp +List raster_gcp_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_has_geolocation_gdal_cpp +LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); +RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); + return rcpp_result_gen; +END_RCPP +} +// raster_info_gdal_cpp +List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); +RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); + rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); + return rcpp_result_gen; +END_RCPP +} +// raster_extent_cpp +NumericVector raster_extent_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_io_gdal_cpp +List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type); +RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_gdal_cpp +CharacterVector sds_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_list_gdal_cpp +List sds_list_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// warp_in_memory_gdal_cpp +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_block_cpp +Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type); +RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// vapour_write_raster_block_cpp +Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); +RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_copy_cpp +Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); +RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_cpp +Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); +RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); + return rcpp_result_gen; +END_RCPP +} +// raster_gdalinfo_app_cpp +CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); +RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); + return rcpp_result_gen; +END_RCPP +} +// raster_vrt_cpp +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation)); + return rcpp_result_gen; +END_RCPP +} +// raster_warp_file_cpp +List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); +RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); + return rcpp_result_gen; +END_RCPP +} + +static const R_CallMethodDef CallEntries[] = { + {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, + {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, + {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, + {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, + {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, + {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, + {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, + {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, + {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, + {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, + {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, + {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, + {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, + {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, + {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, + {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, + {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, + {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, + {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, + {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, + {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, + {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, + {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, + {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, + {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, + {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, + {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, + {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, + {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, + {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, + {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, + {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, + {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, + {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, + {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 5}, + {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, + {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 11}, + {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 5}, + {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, + {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, + {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 6}, + {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_vapour(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/vapour.Rproj b/vapour.Rproj index ee53058f..3d1bddfe 100644 --- a/vapour.Rproj +++ b/vapour.Rproj @@ -1,22 +1,22 @@ -Version: 1.0 - -RestoreWorkspace: No -SaveWorkspace: No -AlwaysSaveHistory: Yes - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -LineEndingConversion: Posix - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageCheckArgs: --as-cran -PackageRoxygenize: rd,collate,namespace +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Yes + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +LineEndingConversion: Posix + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageCheckArgs: --as-cran +PackageRoxygenize: rd,collate,namespace From 9a6febbfeb4de9448d9ae8b73e48771b84591742 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 09:00:07 +1100 Subject: [PATCH 052/102] run CI --- .github/workflows/R-CMD-check.yaml | 2 +- README.Rmd | 2 +- README.md | 531 +++++++++++++------------- man/figures/README-lod-1.png | Bin 31584 -> 16432 bytes man/figures/README-topo-example-1.png | Bin 11756 -> 10017 bytes man/figures/README-topo-example-2.png | Bin 109619 -> 35313 bytes 6 files changed, 267 insertions(+), 268 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 9b6da9fd..7cf3f812 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -2,7 +2,7 @@ # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: [main, sql-dialect2] + branches: [main, cran-patch-rtools43] pull_request: branches: [main, master] diff --git a/README.Rmd b/README.Rmd index f500b59b..fbfc6284 100644 --- a/README.Rmd +++ b/README.Rmd @@ -61,7 +61,7 @@ The package ~cannot be installed from CRAN~. ```{r, install-cran, eval=FALSE} ``` -The development version can be installed from Github, easiest is via the [hypertidy universe](https://hypertidy.r-universe.dev/ui#builds): +The development version can be installed from Github. ```{r install-universe, eval=FALSE} options(repos = c( diff --git a/README.md b/README.md index 05bcb8f9..944971a1 100644 --- a/README.md +++ b/README.md @@ -1,266 +1,265 @@ - - - -# vapour - - -[![R_build_status](https://github.com/hypertidy/vapour/workflows/R-CMD-check/badge.svg)](https://github.com/hypertidy/vapour/actions) -[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/vapour)](https://cran.r-project.org/package=vapour) -[![CRAN_Download_Badge](http://cranlogs.r-pkg.org/badges/vapour)](https://cran.r-project.org/package=vapour) - - -## Overview - -The vapour package provides access to the basic *read* functions -available in [GDAL](https://gdal.org/) for both -[raster](https://gdal.org/user/raster_data_model.html) and -[vector](https://gdal.org/user/vector_data_model.html) data sources. - -The functions are deliberately *lower-level* than these data models and -provide access to the component entities independently. - -For vector data: - -- read access to feature attributes. -- read access to raw binary geometry. -- read access to geometry in text forms (GeoJSON, WKT, GML, KML). -- read access to the extent, or bounding box, of feature geometries. -- helper functions to summarize feature identity and geometry status - -All vector/feature read tasks can optionally apply an arbitrary limit to -the maximum number of features read or queried, and all allow execution -of [OGRSQL](https://gdal.org/user/ogr_sql_dialect.html) to a layer prior -to data extraction. In combination with a SQL query a [bounding box -spatial filter](https://gdal.org/user/ogr_sql_dialect.html#executesql) -can be applied via the `extent` argument. - -For raster data: - -- read access to the list of available rasters within a collection - source (subdatasets). -- read access to *structural metadata* for individual raster sources. -- read access for raw data using GDAL’s [RasterIO - framework](https://gdal.org/tutorials/raster_api_tut.html) and its - dynamic image decimation / replication resampling algorithms. -- read access for raw data using GDAL’s [Warper - framework](https://gdal.org/api/gdalwarp_cpp.html) and its dynamic - image warping, a superset of the RasterIO capabilities. - -The `vapour_warp_raster()` function is a new feature in vapour, and -reflects many learnings about how the warper works and what is needed -for use. We simplify the approach taken in `vapour_read_raster()` by -allowing specifying an *extent* and *dimensions* as a minimum, and this -works for data sources that contain *overviews* (or pyramid -levels-of-detail) as it automatically chooses an appropriate level for -the request made. This works for files, urls, database connections, -online tiled image servers, and all the various ways of specifying GDAL -data sources. - -The workflows available are intended to support development of -applications in R for these vector and [raster -data](https://en.wikipedia.org/wiki/Raster_data) without being -constrained to any particular data model. - -## Installation - -The package \~cannot be installed from CRAN\~. - -The development version can be installed from Github, easiest is via the -[hypertidy universe](https://hypertidy.r-universe.dev/ui#builds): - -``` r -options(repos = c( - hypertidy = 'https://hypertidy.r-universe.dev', - CRAN = 'https://cloud.r-project.org')) -install.packages("vapour") -``` - -To install the development version the more github-traditional way: - -``` r -remotes::install_github("hypertidy/vapour") -``` - -You will need development tools for building R packages. - -On Linux and MacOS building also requires an available GDAL -installation, but on Windows the ROpenSci rwinlib tools are used and the -required GDAL will be downloaded and used when building the package. The -hypertidy universe way also has access to binaries. On windows this -installation is self-contained and only affects the use of R, it can be -used alongside other applications using GDAL. - -For MacOS the package build is controlled by an internal CRAN process -including configure arguments for the gdal and proj data directories. - -## Purpose - -The goal of vapour is to provide a basic **GDAL API** package for R. The -key functions provide vector geometry or attributes and raster data and -raster metadata. - -The priority is to give low-level access to key functionality rather -than comprehensive coverage of the library. The real advantage of -`vapour` is the flexibility of a modular workflow, not the outright -efficiency. - -A parallel goal is to be freed from the powerful but sometimes limiting -high-level data models of GDAL itself, specifically these are *simple -features* and *affine-based regular rasters composed of 2D slices*. -(GDAL will possibly remove these limitations over time but still there -will always be value in having modularity in an ecosystem of tools.) - -GDAL’s dynamic resampling of arbitrary raster windows is also very -useful for interactive tools on local data, and is radically -under-utilized. A quick example, topography data is available from -Amazon compute servers, first we need a config for the source: - -``` r -elevation.tiles.prod <- - ' - - https://s3.amazonaws.com/elevation-tiles-prod/geotiff/${z}/${x}/${y}.tif - - - -20037508.34 - 20037508.34 - 20037508.34 - -20037508.34 - 14 - 1 - 1 - top - - EPSG:3857 - 512 - 512 - 1 - Int16 - 403,404 - - -32768 - - -' -``` - -``` r -## we want an extent -ex <- c(-1, 1, -1, 1) * 5000 ## 10km wide/high region -## Madrid is at this location -pt <- cbind(-3.716667, 40.416667) -crs <- sprintf("+proj=laea +lon_0=%f +lat_0=%f +datum=WGS84", pt[1,1,drop = TRUE], pt[1,2, drop = TRUE]) -dm <- c(256, 256) - - -vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -## now we can use this in a matrix -image(m <- matrix(vals[[1]], nrow = dm[2], ncol = dm[1])[,dm[2]:1 ]) -``` - - - -``` r -## using the image list format -x <- list(x = seq(ex[1], ex[2], length.out = dm[1] + 1), y = seq(ex[3] ,ex[4], length.out = dm[1] + 1), z = m) -image(x) - -## or as a spatial object -library(raster) -#> Loading required package: sp -r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]]) -contour(r, add = TRUE) -``` - - - -If we want more detail, go ahead: - -``` r -dm <- c(512, 512) -vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -(r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]])) -#> class : RasterLayer -#> dimensions : 512, 512, 262144 (nrow, ncol, ncell) -#> resolution : 19.53125, 19.53125 (x, y) -#> extent : -5000, 5000, -5000, 5000 (xmin, xmax, ymin, ymax) -#> crs : +proj=laea +lat_0=40.416667 +lon_0=-3.716667 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs -#> source : memory -#> names : layer -#> values : 562, 742 (min, max) -plot(r, col = hcl.colors(24)) -``` - - - -GDAL is obstinately *format agnostic*, the A stands for *Abstraction* -and we like that in R too, just gives us the data. Here we created a -base matrix image object, and a raster package *RasterLayer*, but we -could use the spatstat im, or objects in stars or terra packages, it -makes no difference to the read-through-warp process. - -This partly draws on work done in [the sf -package](https://github.com/r-spatial/sf) and [the terra -package](https://github.com/rspatial/terra) and in packages `rgdal` and -`rgdal2`. I’m amazed that something as powerful and general as GDAL is -still only available through these lenses, but maybe more folks will get -interested over time. - -## Warnings - -It’s possible to give problematic “SELECT” statements via the `sql` -argument. Note that the geometry readers `vapour_read_geometry`, -`vapour_read_geometry_text`, and `vapour_read_extent` will strip out the -`SELECT ... FROM` clause and replace it with `SELECT * FROM` to ensure -that the geometry is accessible, though the attributes are ignored. This -means we can allow the user or `dplyr` to create any `SELECT` statement. -The function `vapour_read_geometry` will return a list of NULLs, in this -case. - -## Examples - -The package documentation page gives an overview of available functions. - -``` r -help("vapour-package") -``` - -See the vignettes and documentation for examples WIP. - -## Context - -Examples of packages that use vapour are in development, -[RGDALSQL](https://github.com/mdsumner/RGDALSQL) and -[lazyraster](https://github.com/hypertidy/lazyraster). `RGDALSQL` aims -to leverage the facilities of GDAL to provide data *on-demand* for many -sources *as if* they were databases. `lazyraster` uses the -level-of-detail facility of GDAL to read just enough resolution from a -raster source using traditional window techniques. - -Limitations, work-in-progress and other discussion are active here: - - -We’ve kept a record of a minimal GDAL wrapper package here: - - - -Before those I had worked on getting sp and dplyr to at least work -together and recently -rgdal was updated to allow tibbles to be used, something that spbabel -and spdplyr really needed to avoid friction. - -Early exploration of allow non-geometry read with rgdal was tried here: - - -Thanks to Edzer Pebesma and Roger Bivand and Tim Keitt for prior art -that I crib and copy from. Jeroen Ooms helped the R community hugely by -providing an accessible build process for libraries on Windows. Mark -Padgham helped kick me over a huge obstacle in using C++ libraries with -R. Simon Wotherspoon and Ben Raymond have endured ravings about wanting -this level of control for many years. - -# Code of conduct - -Please note that this project is released with a [Contributor Code of -Conduct](https://github.com/hypertidy/vapour/blob/master/CONDUCT.md). By -participating in this project you agree to abide by its terms. + + + +# vapour + + +[![R_build_status](https://github.com/hypertidy/vapour/workflows/R-CMD-check/badge.svg)](https://github.com/hypertidy/vapour/actions) +[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/vapour)](https://cran.r-project.org/package=vapour) +[![CRAN_Download_Badge](http://cranlogs.r-pkg.org/badges/vapour)](https://cran.r-project.org/package=vapour) + + +## Overview + +The vapour package provides access to the basic *read* functions +available in [GDAL](https://gdal.org/) for both +[raster](https://gdal.org/user/raster_data_model.html) and +[vector](https://gdal.org/user/vector_data_model.html) data sources. + +The functions are deliberately *lower-level* than these data models and +provide access to the component entities independently. + +For vector data: + +- read access to feature attributes. +- read access to raw binary geometry. +- read access to geometry in text forms (GeoJSON, WKT, GML, KML). +- read access to the extent, or bounding box, of feature geometries. +- helper functions to summarize feature identity and geometry status + +All vector/feature read tasks can optionally apply an arbitrary limit to +the maximum number of features read or queried, and all allow execution +of [OGRSQL](https://gdal.org/user/ogr_sql_dialect.html) to a layer prior +to data extraction. In combination with a SQL query a [bounding box +spatial filter](https://gdal.org/user/ogr_sql_dialect.html#executesql) +can be applied via the `extent` argument. + +For raster data: + +- read access to the list of available rasters within a collection + source (subdatasets). +- read access to *structural metadata* for individual raster sources. +- read access for raw data using GDAL’s [RasterIO + framework](https://gdal.org/tutorials/raster_api_tut.html) and its + dynamic image decimation / replication resampling algorithms. +- read access for raw data using GDAL’s [Warper + framework](https://gdal.org/api/gdalwarp_cpp.html) and its dynamic + image warping, a superset of the RasterIO capabilities. + +The `vapour_warp_raster()` function is a new feature in vapour, and +reflects many learnings about how the warper works and what is needed +for use. We simplify the approach taken in `vapour_read_raster()` by +allowing specifying an *extent* and *dimensions* as a minimum, and this +works for data sources that contain *overviews* (or pyramid +levels-of-detail) as it automatically chooses an appropriate level for +the request made. This works for files, urls, database connections, +online tiled image servers, and all the various ways of specifying GDAL +data sources. + +The workflows available are intended to support development of +applications in R for these vector and [raster +data](https://en.wikipedia.org/wiki/Raster_data) without being +constrained to any particular data model. + +## Installation + +The package \~cannot be installed from CRAN\~. + +The development version can be installed from Github. + +``` r +options(repos = c( + hypertidy = 'https://hypertidy.r-universe.dev', + CRAN = 'https://cloud.r-project.org')) +install.packages("vapour") +``` + +To install the development version the more github-traditional way: + +``` r +remotes::install_github("hypertidy/vapour") +``` + +You will need development tools for building R packages. + +On Linux and MacOS building also requires an available GDAL +installation, but on Windows the ROpenSci rwinlib tools are used and the +required GDAL will be downloaded and used when building the package. The +hypertidy universe way also has access to binaries. On windows this +installation is self-contained and only affects the use of R, it can be +used alongside other applications using GDAL. + +For MacOS the package build is controlled by an internal CRAN process +including configure arguments for the gdal and proj data directories. + +## Purpose + +The goal of vapour is to provide a basic **GDAL API** package for R. The +key functions provide vector geometry or attributes and raster data and +raster metadata. + +The priority is to give low-level access to key functionality rather +than comprehensive coverage of the library. The real advantage of +`vapour` is the flexibility of a modular workflow, not the outright +efficiency. + +A parallel goal is to be freed from the powerful but sometimes limiting +high-level data models of GDAL itself, specifically these are *simple +features* and *affine-based regular rasters composed of 2D slices*. +(GDAL will possibly remove these limitations over time but still there +will always be value in having modularity in an ecosystem of tools.) + +GDAL’s dynamic resampling of arbitrary raster windows is also very +useful for interactive tools on local data, and is radically +under-utilized. A quick example, topography data is available from +Amazon compute servers, first we need a config for the source: + +``` r +elevation.tiles.prod <- + ' + + https://s3.amazonaws.com/elevation-tiles-prod/geotiff/${z}/${x}/${y}.tif + + + -20037508.34 + 20037508.34 + 20037508.34 + -20037508.34 + 14 + 1 + 1 + top + + EPSG:3857 + 512 + 512 + 1 + Int16 + 403,404 + + -32768 + + +' +``` + +``` r +## we want an extent +ex <- c(-1, 1, -1, 1) * 5000 ## 10km wide/high region +## Madrid is at this location +pt <- cbind(-3.716667, 40.416667) +crs <- sprintf("+proj=laea +lon_0=%f +lat_0=%f +datum=WGS84", pt[1,1,drop = TRUE], pt[1,2, drop = TRUE]) +dm <- c(256, 256) + + +vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) +## now we can use this in a matrix +image(m <- matrix(vals[[1]], nrow = dm[2], ncol = dm[1])[,dm[2]:1 ]) +``` + + + +``` r +## using the image list format +x <- list(x = seq(ex[1], ex[2], length.out = dm[1] + 1), y = seq(ex[3] ,ex[4], length.out = dm[1] + 1), z = m) +image(x) + +## or as a spatial object +library(raster) +#> Loading required package: sp +r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]]) +contour(r, add = TRUE) +``` + + + +If we want more detail, go ahead: + +``` r +dm <- c(512, 512) +vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) +(r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]])) +#> class : RasterLayer +#> dimensions : 512, 512, 262144 (nrow, ncol, ncell) +#> resolution : 19.53125, 19.53125 (x, y) +#> extent : -5000, 5000, -5000, 5000 (xmin, xmax, ymin, ymax) +#> crs : +proj=laea +lon_0=-3.716667 +lat_0=40.416667 +datum=WGS84 +#> source : memory +#> names : layer +#> values : 562, 742 (min, max) +plot(r, col = hcl.colors(24)) +``` + + + +GDAL is obstinately *format agnostic*, the A stands for *Abstraction* +and we like that in R too, just gives us the data. Here we created a +base matrix image object, and a raster package *RasterLayer*, but we +could use the spatstat im, or objects in stars or terra packages, it +makes no difference to the read-through-warp process. + +This partly draws on work done in [the sf +package](https://github.com/r-spatial/sf) and [the terra +package](https://github.com/rspatial/terra) and in packages `rgdal` and +`rgdal2`. I’m amazed that something as powerful and general as GDAL is +still only available through these lenses, but maybe more folks will get +interested over time. + +## Warnings + +It’s possible to give problematic “SELECT” statements via the `sql` +argument. Note that the geometry readers `vapour_read_geometry`, +`vapour_read_geometry_text`, and `vapour_read_extent` will strip out the +`SELECT ... FROM` clause and replace it with `SELECT * FROM` to ensure +that the geometry is accessible, though the attributes are ignored. This +means we can allow the user or `dplyr` to create any `SELECT` statement. +The function `vapour_read_geometry` will return a list of NULLs, in this +case. + +## Examples + +The package documentation page gives an overview of available functions. + +``` r +help("vapour-package") +``` + +See the vignettes and documentation for examples WIP. + +## Context + +Examples of packages that use vapour are in development, +[RGDALSQL](https://github.com/mdsumner/RGDALSQL) and +[lazyraster](https://github.com/hypertidy/lazyraster). `RGDALSQL` aims +to leverage the facilities of GDAL to provide data *on-demand* for many +sources *as if* they were databases. `lazyraster` uses the +level-of-detail facility of GDAL to read just enough resolution from a +raster source using traditional window techniques. + +Limitations, work-in-progress and other discussion are active here: + + +We’ve kept a record of a minimal GDAL wrapper package here: + + + +Before those I had worked on getting sp and dplyr to at least work +together and recently +rgdal was updated to allow tibbles to be used, something that spbabel +and spdplyr really needed to avoid friction. + +Early exploration of allow non-geometry read with rgdal was tried here: + + +Thanks to Edzer Pebesma and Roger Bivand and Tim Keitt for prior art +that I crib and copy from. Jeroen Ooms helped the R community hugely by +providing an accessible build process for libraries on Windows. Mark +Padgham helped kick me over a huge obstacle in using C++ libraries with +R. Simon Wotherspoon and Ben Raymond have endured ravings about wanting +this level of control for many years. + +# Code of conduct + +Please note that this project is released with a [Contributor Code of +Conduct](https://github.com/hypertidy/vapour/blob/master/CONDUCT.md). By +participating in this project you agree to abide by its terms. diff --git a/man/figures/README-lod-1.png b/man/figures/README-lod-1.png index af5d6af1e11a03c80a90ac58fd220c1278ad36b0..576f8656534d71fbeb8a4336a8d57534571392a3 100644 GIT binary patch literal 16432 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 diff --git a/man/figures/README-topo-example-1.png b/man/figures/README-topo-example-1.png index ab3f1feee6bf42af01683187c0a99a2bc34e380c..722534d1f9692850dc800d82217c3cfbbf6e13c3 100644 GIT binary patch literal 10017 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 diff --git a/man/figures/README-topo-example-2.png b/man/figures/README-topo-example-2.png index 60f23443253d9331b3e8ec70f215d1d7986e2338..3e8447b298a6584e2fe3aa57f72e196df7962fe1 100644 GIT binary patch literal 35313 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 AbN~PV literal 109619 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 JiUj>U5tDb@#3q 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%0A7^;@|7c(=X_DWLfDZsXj- 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
ks;{)ze_eL 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 KONE$G(Ek7%HPKc8 From ec9be5d17f4a1d10ab93065ffa49d789fff03310 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 23:25:02 +0000 Subject: [PATCH 053/102] use dynamic_cast --- R/RcppExports.R | 366 +++---- inst/include/gdalraster/gdalraster.h | 2 +- src/RcppExports.cpp | 1370 +++++++++++++------------- 3 files changed, 869 insertions(+), 869 deletions(-) diff --git a/R/RcppExports.R b/R/RcppExports.R index 1dcf281c..cd582233 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,183 +1,183 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -set_gdal_config_cpp <- function(option, value) { - .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) -} - -get_gdal_config_cpp <- function(option) { - .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) -} - -cleanup_gdal_cpp <- function() { - .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') -} - -driver_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -driver_id_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -layer_names_gdal_cpp <- function(dsn) { - .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -drivers_list_gdal_cpp <- function() { - .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') -} - -proj_to_wkt_gdal_cpp <- function(proj4string) { - .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) -} - -register_gdal_cpp <- function() { - .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') -} - -version_gdal_cpp <- function() { - .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') -} - -vsi_list_gdal_cpp <- function(dsn) { - .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { - .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -projection_info_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -report_fields_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { - .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) -} - -gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { - .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) -} - -gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { - .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) -} - -gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { - .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) -} - -gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { - .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) -} - -gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { - .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) -} - -gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { - .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) -} - -gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { - .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) -} - -gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { - .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { - .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) -} - -gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { - .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) -} - -read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { - .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) -} - -read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { - .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) -} - -read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { - .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) -} - -raster_gcp_gdal_cpp <- function(dsn) { - .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -raster_has_geolocation_gdal_cpp <- function(dsn, sds) { - .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) -} - -raster_info_gdal_cpp <- function(dsn, min_max) { - .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) -} - -raster_extent_cpp <- function(dsn) { - .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) -} - -raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type) { - .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type) -} - -sds_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -sds_list_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) -} - -vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type) { - .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type) -} - -vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { - .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) -} - -vapour_create_copy_cpp <- function(dsource, dtarget, driver) { - .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) -} - -vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { - .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) -} - -raster_gdalinfo_app_cpp <- function(dsn, options) { - .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) -} - -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation) -} - -raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { - .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) -} - +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +set_gdal_config_cpp <- function(option, value) { + .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) +} + +get_gdal_config_cpp <- function(option) { + .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) +} + +cleanup_gdal_cpp <- function() { + .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') +} + +driver_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +driver_id_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +layer_names_gdal_cpp <- function(dsn) { + .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +drivers_list_gdal_cpp <- function() { + .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') +} + +proj_to_wkt_gdal_cpp <- function(proj4string) { + .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) +} + +register_gdal_cpp <- function() { + .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') +} + +version_gdal_cpp <- function() { + .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') +} + +vsi_list_gdal_cpp <- function(dsn) { + .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { + .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +projection_info_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +report_fields_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { + .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) +} + +gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { + .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) +} + +gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { + .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) +} + +gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { + .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) +} + +gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { + .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) +} + +gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { + .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) +} + +gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { + .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) +} + +gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { + .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) +} + +gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { + .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { + .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) +} + +gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { + .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) +} + +read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { + .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) +} + +read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { + .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) +} + +read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { + .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) +} + +raster_gcp_gdal_cpp <- function(dsn) { + .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +raster_has_geolocation_gdal_cpp <- function(dsn, sds) { + .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) +} + +raster_info_gdal_cpp <- function(dsn, min_max) { + .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) +} + +raster_extent_cpp <- function(dsn) { + .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) +} + +raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type) { + .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type) +} + +sds_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +sds_list_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options) +} + +vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type) { + .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type) +} + +vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { + .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) +} + +vapour_create_copy_cpp <- function(dsource, dtarget, driver) { + .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) +} + +vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { + .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) +} + +raster_gdalinfo_app_cpp <- function(dsn, options) { + .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) +} + +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation) +} + +raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { + .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) +} + diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 696afa83..23de6127 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -217,7 +217,7 @@ inline const char* gdal_vrt_text(GDALDataset* poSrcDS) { CharacterVector out(1); // can't do this unless poSrcDS really is VRT if (EQUAL(poSrcDS->GetDriverName(), "VRT")) { - VRTDataset * VRTdcDS = cpl::down_cast(poSrcDS ); + VRTDataset * VRTdcDS = dynamic_cast(poSrcDS ); // if (add_filename[0]) { // //VRTdcDS->SetDescription( filename[0]); // } diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index d4fe49a3..5f0cee8a 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -1,685 +1,685 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -#ifdef RCPP_USE_GLOBAL_ROSTREAM -Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); -Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); -#endif - -// set_gdal_config_cpp -IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); -RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); - rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); - return rcpp_result_gen; -END_RCPP -} -// get_gdal_config_cpp -CharacterVector get_gdal_config_cpp(CharacterVector option); -RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); - return rcpp_result_gen; -END_RCPP -} -// cleanup_gdal_cpp -LogicalVector cleanup_gdal_cpp(); -RcppExport SEXP _vapour_cleanup_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// driver_gdal_cpp -CharacterVector driver_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// driver_id_gdal_cpp -CharacterVector driver_id_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// layer_names_gdal_cpp -CharacterVector layer_names_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// drivers_list_gdal_cpp -List drivers_list_gdal_cpp(); -RcppExport SEXP _vapour_drivers_list_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// proj_to_wkt_gdal_cpp -CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); -RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); - rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); - return rcpp_result_gen; -END_RCPP -} -// register_gdal_cpp -LogicalVector register_gdal_cpp(); -RcppExport SEXP _vapour_register_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// version_gdal_cpp -CharacterVector version_gdal_cpp(); -RcppExport SEXP _vapour_version_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// vsi_list_gdal_cpp -CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// feature_count_gdal_cpp -NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// projection_info_gdal_cpp -List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// report_fields_gdal_cpp -CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// vapour_geom_name_cpp -Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// vapour_layer_extent_cpp -Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_all -List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); -RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ij -List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ia -List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_fa -List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_all -List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ij -List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ia -List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_fa -List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_all -NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ij -NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ia -NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); - return rcpp_result_gen; -END_RCPP -} -// read_fields_gdal_cpp -List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// read_geometry_gdal_cpp -List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// read_fids_gdal_cpp -NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// raster_gcp_gdal_cpp -List raster_gcp_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_has_geolocation_gdal_cpp -LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); -RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); - return rcpp_result_gen; -END_RCPP -} -// raster_info_gdal_cpp -List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); -RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); - rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); - return rcpp_result_gen; -END_RCPP -} -// raster_extent_cpp -NumericVector raster_extent_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_io_gdal_cpp -List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type); -RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_gdal_cpp -CharacterVector sds_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_list_gdal_cpp -List sds_list_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_block_cpp -Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type); -RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// vapour_write_raster_block_cpp -Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); -RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_copy_cpp -Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); -RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_cpp -Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); -RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); - return rcpp_result_gen; -END_RCPP -} -// raster_gdalinfo_app_cpp -CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); -RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); - return rcpp_result_gen; -END_RCPP -} -// raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation)); - return rcpp_result_gen; -END_RCPP -} -// raster_warp_file_cpp -List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); -RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, - {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, - {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, - {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, - {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, - {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, - {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, - {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, - {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, - {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, - {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, - {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, - {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, - {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, - {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, - {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, - {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, - {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, - {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, - {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, - {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, - {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, - {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, - {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, - {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, - {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, - {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, - {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, - {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, - {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, - {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, - {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, - {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, - {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, - {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 5}, - {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, - {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 11}, - {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 5}, - {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, - {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, - {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, - {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 6}, - {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_vapour(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} +// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +#ifdef RCPP_USE_GLOBAL_ROSTREAM +Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); +Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); +#endif + +// set_gdal_config_cpp +IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); +RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); + rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); + return rcpp_result_gen; +END_RCPP +} +// get_gdal_config_cpp +CharacterVector get_gdal_config_cpp(CharacterVector option); +RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); + return rcpp_result_gen; +END_RCPP +} +// cleanup_gdal_cpp +LogicalVector cleanup_gdal_cpp(); +RcppExport SEXP _vapour_cleanup_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// driver_gdal_cpp +CharacterVector driver_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// driver_id_gdal_cpp +CharacterVector driver_id_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// layer_names_gdal_cpp +CharacterVector layer_names_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// drivers_list_gdal_cpp +List drivers_list_gdal_cpp(); +RcppExport SEXP _vapour_drivers_list_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// proj_to_wkt_gdal_cpp +CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); +RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); + rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); + return rcpp_result_gen; +END_RCPP +} +// register_gdal_cpp +LogicalVector register_gdal_cpp(); +RcppExport SEXP _vapour_register_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// version_gdal_cpp +CharacterVector version_gdal_cpp(); +RcppExport SEXP _vapour_version_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// vsi_list_gdal_cpp +CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// feature_count_gdal_cpp +NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// projection_info_gdal_cpp +List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// report_fields_gdal_cpp +CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// vapour_geom_name_cpp +Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// vapour_layer_extent_cpp +Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_all +List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); +RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ij +List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ia +List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_fa +List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_all +List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ij +List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ia +List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_fa +List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_all +NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ij +NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ia +NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); + return rcpp_result_gen; +END_RCPP +} +// read_fields_gdal_cpp +List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// read_geometry_gdal_cpp +List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// read_fids_gdal_cpp +NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// raster_gcp_gdal_cpp +List raster_gcp_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_has_geolocation_gdal_cpp +LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); +RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); + return rcpp_result_gen; +END_RCPP +} +// raster_info_gdal_cpp +List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); +RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); + rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); + return rcpp_result_gen; +END_RCPP +} +// raster_extent_cpp +NumericVector raster_extent_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_io_gdal_cpp +List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type); +RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_gdal_cpp +CharacterVector sds_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_list_gdal_cpp +List sds_list_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// warp_in_memory_gdal_cpp +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_block_cpp +Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type); +RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// vapour_write_raster_block_cpp +Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); +RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_copy_cpp +Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); +RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_cpp +Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); +RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); + return rcpp_result_gen; +END_RCPP +} +// raster_gdalinfo_app_cpp +CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); +RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); + return rcpp_result_gen; +END_RCPP +} +// raster_vrt_cpp +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation)); + return rcpp_result_gen; +END_RCPP +} +// raster_warp_file_cpp +List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); +RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); + return rcpp_result_gen; +END_RCPP +} + +static const R_CallMethodDef CallEntries[] = { + {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, + {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, + {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, + {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, + {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, + {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, + {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, + {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, + {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, + {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, + {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, + {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, + {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, + {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, + {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, + {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, + {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, + {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, + {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, + {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, + {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, + {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, + {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, + {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, + {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, + {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, + {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, + {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, + {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, + {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, + {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, + {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, + {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, + {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, + {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 5}, + {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, + {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 11}, + {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 5}, + {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, + {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, + {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 6}, + {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_vapour(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} From 2a3e16ab76408f8ea68e6ebdf0e0638e780b85b8 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 23:32:44 +0000 Subject: [PATCH 054/102] remove FromHandle --- inst/include/gdalraster/gdalraster.h | 4 ++-- inst/include/gdalwarpmem/gdalwarpmem.h | 16 ++-------------- 2 files changed, 4 insertions(+), 16 deletions(-) diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 23de6127..b25887cf 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -612,7 +612,7 @@ inline List gdal_read_band_values(GDALDataset *hRet, CPLErr err; for (int iband = 0; iband < sbands; iband++) { - rasterBand = GDALDataset::FromHandle(hRet)->GetRasterBand(bands_to_read[static_cast(iband)]); + rasterBand = ( (GDALDataset *) hRet)->GetRasterBand(bands_to_read[static_cast(iband)]); //rasterBand = GDALGetRasterBand(hRet, bands_to_read[iband]); if (iband < 1) { // actual_XSize = GDALGetRasterBandXSize(rasterBand); @@ -794,7 +794,7 @@ inline List gdal_read_band_values(GDALDataset *hRet, psExtraArg = init_resample_alg(resample); CPLErr err; - rasterBand = GDALDataset::FromHandle(hRet)->GetRasterBand(bands_to_read[0]); + rasterBand = ((GDALDataset *)hRet)->GetRasterBand(bands_to_read[0]); actual_XSize = rasterBand->GetXSize(); actual_YSize = rasterBand->GetYSize(); diff --git a/inst/include/gdalwarpmem/gdalwarpmem.h b/inst/include/gdalwarpmem/gdalwarpmem.h index 39e615cf..a15b2134 100644 --- a/inst/include/gdalwarpmem/gdalwarpmem.h +++ b/inst/include/gdalwarpmem/gdalwarpmem.h @@ -187,20 +187,8 @@ inline List gdal_warp_in_memory(CharacterVector source_filename, for (int i = 0; i < window.size(); i++) window[i] = 0; - // we can't do gdal_warped_vrt here ... was just trying something and realized - // that cant work - // - // GDALRasterIOExtraArg psExtraArg; - // psExtraArg = gdallibrary::init_resample_alg(resample); - // - // std::vector values( GDALGetRasterXSize(hRet) * GDALGetRasterYSize(hRet) * nBands ); - // CPLErr err = - // GDALDataset::FromHandle(hRet)->RasterIO(GF_Read, 0, 0, GDALGetRasterXSize(hRet), GDALGetRasterYSize(hRet), - // &values[0], GDALGetRasterXSize(hRet), GDALGetRasterYSize(hRet), GDT_Float64, - // nBands, &bands_to_read[0], - // 0, 0, 0, &psExtraArg); - - List outlist = gdalraster::gdal_read_band_values(GDALDataset::FromHandle(hRet), + + List outlist = gdalraster::gdal_read_band_values((GDALDataset *)hRet, window, bands_to_read, band_output_type, From 077f53f217ef150ea3800fa73d065be11d6915ff Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 28 Mar 2023 23:33:48 +0000 Subject: [PATCH 055/102] news --- NEWS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 92087b94..e9369808 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,8 @@ # vapour 0.9.4 -New Makevars.ucrt with patch contributed by CRAN, and removed outdated C++11 requirement. +* Removed FromHandle (introduced GDAL 2.3) and undeclared use of down_cast, and now tested on GDAL 2.2.3. + +* New Makevars.ucrt with patch contributed by CRAN, and removed outdated C++11 requirement. # vapour 0.9.3 From 28c53f33c88d9557025d4217a91d2a04b10439d8 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 05:03:42 +0000 Subject: [PATCH 056/102] fix extent check --- R/00_warpgeneral.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 53185998..107e48d2 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -41,7 +41,7 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_e if (is.null(target_ext)) { target_ext <- numeric() } else { - if (~length(target_ext) == 4L ) stop("'target_ext' must be of length 4 (xmin, xmax, ymin, ymax") + if (!length(target_ext) == 4L ) stop("'target_ext' must be of length 4 (xmin, xmax, ymin, ymax") if (anyNA(target_ext)) stop("NA values in 'target_ext'") dif <- diff(target_ext)[c(1L, 3L)] @@ -85,7 +85,7 @@ gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ex if (is.null(target_ext)) { target_ext <- numeric() } else { - if (~length(target_ext) == 4L ) stop("'target_ext' must be of length 4 (xmin, xmax, ymin, ymax") + if (!length(target_ext) == 4L ) stop("'target_ext' must be of length 4 (xmin, xmax, ymin, ymax") if (anyNA(target_ext)) stop("NA values in 'target_ext'") dif <- diff(target_ext)[c(1L, 3L)] From 405f1ad1576c2195af613cadb97ad5f7cbb2023b Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 05:26:31 +0000 Subject: [PATCH 057/102] fix band select --- R/00_warpgeneral.R | 1 + R/RcppExports.R | 422 ++--- .../include/gdalwarpgeneral/gdalwarpgeneral.h | 18 +- src/RcppExports.cpp | 1606 ++++++++--------- vapour.Rproj | 44 +- 5 files changed, 1047 insertions(+), 1044 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 107e48d2..283736d5 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -67,6 +67,7 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_e if (any(target_res <= 0)) stop("all 'target_res' values must be > 0") } if (is.null(band_output_type)) band_output_type <- "Float64" + if (is.null(bands)) bands <- -1 warp_general_cpp(dsn, target_crs, as.numeric(target_ext), as.integer(target_dim), diff --git a/R/RcppExports.R b/R/RcppExports.R index 67e1201d..7d832e27 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,211 +1,211 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { - .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) -} - -warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { - .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) -} - -warp_suggest_cpp <- function(dsn, target_crs) { - .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) -} - -set_gdal_config_cpp <- function(option, value) { - .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) -} - -get_gdal_config_cpp <- function(option) { - .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) -} - -cleanup_gdal_cpp <- function() { - .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') -} - -driver_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -driver_id_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -layer_names_gdal_cpp <- function(dsn) { - .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -drivers_list_gdal_cpp <- function() { - .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') -} - -proj_to_wkt_gdal_cpp <- function(proj4string) { - .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) -} - -crs_is_lonlat_cpp <- function(input_string) { - .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) -} - -register_gdal_cpp <- function() { - .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') -} - -version_gdal_cpp <- function() { - .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') -} - -vsi_list_gdal_cpp <- function(dsn) { - .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { - .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -projection_info_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -report_fields_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { - .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) -} - -gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { - .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) -} - -gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { - .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) -} - -gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { - .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) -} - -gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { - .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) -} - -gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { - .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) -} - -gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { - .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) -} - -gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { - .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) -} - -gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { - .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { - .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) -} - -gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { - .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) -} - -read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { - .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) -} - -read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { - .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) -} - -read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { - .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) -} - -raster_gcp_gdal_cpp <- function(dsn) { - .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -raster_has_geolocation_gdal_cpp <- function(dsn, sds) { - .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) -} - -raster_info_gdal_cpp <- function(dsn, min_max) { - .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) -} - -raster_extent_cpp <- function(dsn) { - .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) -} - -raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { - .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) -} - -sds_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -sds_list_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) -} - -vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { - .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) -} - -vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { - .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) -} - -vapour_create_copy_cpp <- function(dsource, dtarget, driver) { - .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) -} - -vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { - .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) -} - -vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { - .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) -} - -blocks_cpp1 <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) -} - -blocks_cpp <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) -} - -raster_gdalinfo_app_cpp <- function(dsn, options) { - .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) -} - -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) -} - -raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { - .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) -} - +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { + .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) +} + +warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { + .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) +} + +warp_suggest_cpp <- function(dsn, target_crs) { + .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) +} + +set_gdal_config_cpp <- function(option, value) { + .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) +} + +get_gdal_config_cpp <- function(option) { + .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) +} + +cleanup_gdal_cpp <- function() { + .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') +} + +driver_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +driver_id_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +layer_names_gdal_cpp <- function(dsn) { + .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +drivers_list_gdal_cpp <- function() { + .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') +} + +proj_to_wkt_gdal_cpp <- function(proj4string) { + .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) +} + +crs_is_lonlat_cpp <- function(input_string) { + .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) +} + +register_gdal_cpp <- function() { + .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') +} + +version_gdal_cpp <- function() { + .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') +} + +vsi_list_gdal_cpp <- function(dsn) { + .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { + .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +projection_info_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +report_fields_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { + .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) +} + +gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { + .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) +} + +gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { + .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) +} + +gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { + .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) +} + +gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { + .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) +} + +gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { + .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) +} + +gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { + .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) +} + +gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { + .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) +} + +gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { + .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { + .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) +} + +gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { + .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) +} + +read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { + .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) +} + +read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { + .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) +} + +read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { + .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) +} + +raster_gcp_gdal_cpp <- function(dsn) { + .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +raster_has_geolocation_gdal_cpp <- function(dsn, sds) { + .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) +} + +raster_info_gdal_cpp <- function(dsn, min_max) { + .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) +} + +raster_extent_cpp <- function(dsn) { + .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) +} + +raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { + .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) +} + +sds_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +sds_list_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) +} + +vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { + .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) +} + +vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { + .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) +} + +vapour_create_copy_cpp <- function(dsource, dtarget, driver) { + .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) +} + +vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { + .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) +} + +vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { + .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) +} + +blocks_cpp1 <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) +} + +blocks_cpp <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) +} + +raster_gdalinfo_app_cpp <- function(dsn, options) { + .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) +} + +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) +} + +raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { + .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) +} + diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index aa1f74fe..de7b6ebe 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -214,22 +214,24 @@ inline List gdal_warp_general(CharacterVector dsn, } else { // Prepare to read bands int nBands; -// if (bands[0] == 0) { - nBands = (int)GDALGetRasterCount(hRet); - // } else { - // nBands = (int)bands.size(); - // } - std::vector bands_to_read(static_cast(nBands)); + nBands = (int)GDALGetRasterCount(hRet); + int nbands_to_read = bands.size(); +/// if user set bands to NULL, then all bands read (default is bands = 1L) + if (bands[0] < 1) { + nbands_to_read = nBands; + } + std::vector bands_to_read(static_cast(nbands_to_read)); for (int i = 0; i < nBands; i++) { // if (bands[0] == 0) { // bands_to_read[static_cast(i)] = i + 1; // } else { - bands_to_read[static_cast(i)] = i + 1; + bands_to_read[static_cast(i)] = bands[i]; if (bands_to_read[static_cast(i)] > (int)GDALGetRasterCount(hRet)) { GDALClose( hRet ); - stop("band number is not available: %i", bands_to_read[static_cast(i)]); + + stop("band number is not available: %i", bands[i]); } } diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 28b39a94..d289e648 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -1,803 +1,803 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -#ifdef RCPP_USE_GLOBAL_ROSTREAM -Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); -Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); -#endif - -// gdal_dsn_read_vector_stream -List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); -RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); - 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 dsn_exists(dsn_existsSEXP); - Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< int >::type width(widthSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); - return rcpp_result_gen; -END_RCPP -} -// warp_general_cpp -List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); -RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); - rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); - return rcpp_result_gen; -END_RCPP -} -// warp_suggest_cpp -List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); -RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); - return rcpp_result_gen; -END_RCPP -} -// set_gdal_config_cpp -IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); -RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); - rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); - return rcpp_result_gen; -END_RCPP -} -// get_gdal_config_cpp -CharacterVector get_gdal_config_cpp(CharacterVector option); -RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); - return rcpp_result_gen; -END_RCPP -} -// cleanup_gdal_cpp -LogicalVector cleanup_gdal_cpp(); -RcppExport SEXP _vapour_cleanup_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// driver_gdal_cpp -CharacterVector driver_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// driver_id_gdal_cpp -CharacterVector driver_id_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// layer_names_gdal_cpp -CharacterVector layer_names_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// drivers_list_gdal_cpp -List drivers_list_gdal_cpp(); -RcppExport SEXP _vapour_drivers_list_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// proj_to_wkt_gdal_cpp -CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); -RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); - rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); - return rcpp_result_gen; -END_RCPP -} -// crs_is_lonlat_cpp -LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); -RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); - rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); - return rcpp_result_gen; -END_RCPP -} -// register_gdal_cpp -LogicalVector register_gdal_cpp(); -RcppExport SEXP _vapour_register_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// version_gdal_cpp -CharacterVector version_gdal_cpp(); -RcppExport SEXP _vapour_version_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// vsi_list_gdal_cpp -CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// feature_count_gdal_cpp -NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// projection_info_gdal_cpp -List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// report_fields_gdal_cpp -CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// vapour_geom_name_cpp -Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// vapour_layer_extent_cpp -Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_all -List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); -RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ij -List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ia -List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_fa -List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_all -List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ij -List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ia -List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_fa -List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_all -NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ij -NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ia -NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); - return rcpp_result_gen; -END_RCPP -} -// read_fields_gdal_cpp -List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// read_geometry_gdal_cpp -List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// read_fids_gdal_cpp -NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// raster_gcp_gdal_cpp -List raster_gcp_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_has_geolocation_gdal_cpp -LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); -RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); - return rcpp_result_gen; -END_RCPP -} -// raster_info_gdal_cpp -List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); -RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); - rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); - return rcpp_result_gen; -END_RCPP -} -// raster_extent_cpp -NumericVector raster_extent_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_io_gdal_cpp -List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_gdal_cpp -CharacterVector sds_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_list_gdal_cpp -List sds_list_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_block_cpp -Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// vapour_write_raster_block_cpp -Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); -RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_copy_cpp -Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); -RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_cpp -Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); -RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_value_cpp -Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); -RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp1 -Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp -Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// raster_gdalinfo_app_cpp -CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); -RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); - return rcpp_result_gen; -END_RCPP -} -// raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); - return rcpp_result_gen; -END_RCPP -} -// raster_warp_file_cpp -List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); -RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, - {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, - {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, - {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, - {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, - {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, - {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, - {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, - {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, - {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, - {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, - {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, - {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, - {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, - {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, - {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, - {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, - {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, - {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, - {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, - {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, - {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, - {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, - {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, - {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, - {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, - {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, - {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, - {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, - {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, - {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, - {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, - {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, - {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, - {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, - {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, - {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, - {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, - {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, - {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, - {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, - {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, - {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, - {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, - {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, - {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, - {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, - {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, - {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, - {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_vapour(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} +// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +#ifdef RCPP_USE_GLOBAL_ROSTREAM +Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); +Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); +#endif + +// gdal_dsn_read_vector_stream +List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); +RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); + 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 dsn_exists(dsn_existsSEXP); + Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< int >::type width(widthSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); + return rcpp_result_gen; +END_RCPP +} +// warp_general_cpp +List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); +RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); + rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); + return rcpp_result_gen; +END_RCPP +} +// warp_suggest_cpp +List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); +RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); + return rcpp_result_gen; +END_RCPP +} +// set_gdal_config_cpp +IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); +RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); + rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); + return rcpp_result_gen; +END_RCPP +} +// get_gdal_config_cpp +CharacterVector get_gdal_config_cpp(CharacterVector option); +RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); + return rcpp_result_gen; +END_RCPP +} +// cleanup_gdal_cpp +LogicalVector cleanup_gdal_cpp(); +RcppExport SEXP _vapour_cleanup_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// driver_gdal_cpp +CharacterVector driver_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// driver_id_gdal_cpp +CharacterVector driver_id_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// layer_names_gdal_cpp +CharacterVector layer_names_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// drivers_list_gdal_cpp +List drivers_list_gdal_cpp(); +RcppExport SEXP _vapour_drivers_list_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// proj_to_wkt_gdal_cpp +CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); +RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); + rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); + return rcpp_result_gen; +END_RCPP +} +// crs_is_lonlat_cpp +LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); +RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); + rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); + return rcpp_result_gen; +END_RCPP +} +// register_gdal_cpp +LogicalVector register_gdal_cpp(); +RcppExport SEXP _vapour_register_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// version_gdal_cpp +CharacterVector version_gdal_cpp(); +RcppExport SEXP _vapour_version_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// vsi_list_gdal_cpp +CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// feature_count_gdal_cpp +NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// projection_info_gdal_cpp +List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// report_fields_gdal_cpp +CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// vapour_geom_name_cpp +Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// vapour_layer_extent_cpp +Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_all +List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); +RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ij +List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ia +List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_fa +List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_all +List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ij +List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ia +List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_fa +List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_all +NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ij +NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ia +NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); + return rcpp_result_gen; +END_RCPP +} +// read_fields_gdal_cpp +List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// read_geometry_gdal_cpp +List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// read_fids_gdal_cpp +NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// raster_gcp_gdal_cpp +List raster_gcp_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_has_geolocation_gdal_cpp +LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); +RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); + return rcpp_result_gen; +END_RCPP +} +// raster_info_gdal_cpp +List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); +RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); + rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); + return rcpp_result_gen; +END_RCPP +} +// raster_extent_cpp +NumericVector raster_extent_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_io_gdal_cpp +List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_gdal_cpp +CharacterVector sds_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_list_gdal_cpp +List sds_list_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// warp_in_memory_gdal_cpp +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_block_cpp +Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// vapour_write_raster_block_cpp +Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); +RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_copy_cpp +Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); +RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_cpp +Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); +RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_value_cpp +Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); +RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp1 +Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp +Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// raster_gdalinfo_app_cpp +CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); +RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); + return rcpp_result_gen; +END_RCPP +} +// raster_vrt_cpp +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); + return rcpp_result_gen; +END_RCPP +} +// raster_warp_file_cpp +List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); +RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); + return rcpp_result_gen; +END_RCPP +} + +static const R_CallMethodDef CallEntries[] = { + {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, + {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, + {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, + {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, + {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, + {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, + {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, + {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, + {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, + {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, + {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, + {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, + {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, + {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, + {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, + {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, + {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, + {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, + {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, + {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, + {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, + {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, + {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, + {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, + {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, + {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, + {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, + {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, + {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, + {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, + {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, + {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, + {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, + {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, + {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, + {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, + {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, + {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, + {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, + {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, + {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, + {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, + {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, + {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, + {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, + {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, + {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, + {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, + {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_vapour(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/vapour.Rproj b/vapour.Rproj index 3d1bddfe..ee53058f 100644 --- a/vapour.Rproj +++ b/vapour.Rproj @@ -1,22 +1,22 @@ -Version: 1.0 - -RestoreWorkspace: No -SaveWorkspace: No -AlwaysSaveHistory: Yes - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -LineEndingConversion: Posix - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageCheckArgs: --as-cran -PackageRoxygenize: rd,collate,namespace +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Yes + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +LineEndingConversion: Posix + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageCheckArgs: --as-cran +PackageRoxygenize: rd,collate,namespace From c978ddf3c067b9766dc63542b15aec7df69337fe Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 05:37:36 +0000 Subject: [PATCH 058/102] fix bands again --- inst/include/gdalwarpgeneral/gdalwarpgeneral.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index de7b6ebe..83831cdf 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -221,16 +221,14 @@ inline List gdal_warp_general(CharacterVector dsn, nbands_to_read = nBands; } std::vector bands_to_read(static_cast(nbands_to_read)); - for (int i = 0; i < nBands; i++) { - // if (bands[0] == 0) { - // bands_to_read[static_cast(i)] = i + 1; - // } else { + for (int i = 0; i < nbands_to_read; i++) { + if (bands[0] >= 1) { bands_to_read[static_cast(i)] = bands[i]; - - - if (bands_to_read[static_cast(i)] > (int)GDALGetRasterCount(hRet)) { + } else { + bands_to_read[static_cast(i)] = i + 1; + } + if (bands_to_read[static_cast(i)] > nBands) { GDALClose( hRet ); - stop("band number is not available: %i", bands[i]); } From b5adf4171185a9052ad2ef3dadaacd6cfeaa3622 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 21:04:45 +0000 Subject: [PATCH 059/102] fix dependence on GDAL 3.0 for warper --- inst/include/gdalapplib/gdalapplib.h | 33 +++++++------------------- inst/include/gdalwarpmem/gdalwarpmem.h | 32 ++++++++++--------------- 2 files changed, 22 insertions(+), 43 deletions(-) diff --git a/inst/include/gdalapplib/gdalapplib.h b/inst/include/gdalapplib/gdalapplib.h index 6b12e5bd..be746564 100644 --- a/inst/include/gdalapplib/gdalapplib.h +++ b/inst/include/gdalapplib/gdalapplib.h @@ -241,35 +241,20 @@ inline List gdalwarp_applib(CharacterVector source_filename, OGRSpatialReference *oTargetSRS = nullptr; oTargetSRS = new OGRSpatialReference; OGRErr target_chk = oTargetSRS->SetFromUserInput(target_crs[0]); - if (target_chk != OGRERR_NONE) Rcpp::stop("cannot initialize target projection"); - - - // const OGRSpatialReference *oSourceSRS = ((GDALDataset *)poSrcDS[0])->GetSpatialRef(); - - OGRSpatialReference *oSourceSRS = nullptr; - oSourceSRS = new OGRSpatialReference; - char *st = NULL; - ((GDALDataset *)poSrcDS[0])->GetSpatialRef()->exportToWkt(&st); + delete oTargetSRS; + if (target_chk != OGRERR_NONE) { + Rcpp::stop("cannot initialize target projection"); + } + const char *st = NULL; + st = ((GDALDataset *)poSrcDS[0])->GetProjectionRef(); - OGRErr source_chk = oSourceSRS->SetFromUserInput(st); - if (source_chk != OGRERR_NONE) Rcpp::stop("cannot initialize source projection"); - // - // - OGRCoordinateTransformation *poCT; - poCT = OGRCreateCoordinateTransformation(oSourceSRS, oTargetSRS); - if( poCT == NULL ) { - delete oTargetSRS; - delete oSourceSRS; - + if(*st == '\0') { Rcpp::stop( "Transformation to this target CRS not possible from this source dataset, target CRS given: \n\n %s \n\n", (char *) target_crs[0] ); - } - delete oTargetSRS; - delete oSourceSRS; - + papszArg = CSLAddString(papszArg, "-t_srs"); - papszArg = CSLAddString(papszArg, target_crs[0]); + papszArg = CSLAddString(papszArg, target_crs[0]); } diff --git a/inst/include/gdalwarpmem/gdalwarpmem.h b/inst/include/gdalwarpmem/gdalwarpmem.h index a15b2134..9f20dc7b 100644 --- a/inst/include/gdalwarpmem/gdalwarpmem.h +++ b/inst/include/gdalwarpmem/gdalwarpmem.h @@ -67,33 +67,27 @@ inline List gdal_warp_in_memory(CharacterVector source_filename, papszArg = CSLAddString(papszArg, "MEM"); if (!target_WKT[0].empty()) { - OGRSpatialReference *oTargetSRS = nullptr; - oTargetSRS = new OGRSpatialReference; - const char * strforuin = (const char *)target_WKT[0]; - OGRErr target_chk = oTargetSRS->SetFromUserInput(strforuin); - if (target_chk != OGRERR_NONE) Rcpp::stop("cannot initialize target projection"); - OGRSpatialReference oSRS; - const OGRSpatialReference* poSrcSRS = ((GDALDataset *)poSrcDS[0])->GetSpatialRef(); - if( poSrcSRS ) { - oSRS = *poSrcSRS; - if (!oSRS.IsEmpty()) { - OGRCoordinateTransformation *poCT; - poCT = OGRCreateCoordinateTransformation(&oSRS, oTargetSRS); - if( poCT == nullptr ) { - delete oTargetSRS; - Rcpp::stop( "Transformation to this target CRS not possible from this source dataset, target CRS given: \n\n %s \n\n", - (char *) target_WKT[0] ); - } + const char *wkt = ((GDALDataset*)poSrcDS[0])->GetProjectionRef(); + if (*wkt != '\0') { + // if supplied check that it's valid + OGRSpatialReference *oTargetSRS = nullptr; + oTargetSRS = new OGRSpatialReference; + OGRErr target_chk = oTargetSRS->SetFromUserInput(target_WKT[0]); + delete oTargetSRS; + if (target_chk != OGRERR_NONE) { + + Rcpp::stop("cannot initialize target projection"); + } else { + // we add our target projection iff a) source crs is valid b) target crs is valid c) transformation source->target is valid // user may have augmented the array of datasets with source_projection // if the source is just not defined we ignore the target with a warning papszArg = CSLAddString(papszArg, "-t_srs"); papszArg = CSLAddString(papszArg, target_WKT[0]); + } } else { Rcpp::warning("no source crs, target crs is ignored\n"); } - } - delete oTargetSRS; } // we always provide extent and dimension, crs is optional and just means subset/decimate double dfMinX = target_extent[0]; From d562db2580b1e41c1660df08b2a2b7e7b04312fd Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 29 Mar 2023 23:55:06 +0000 Subject: [PATCH 060/102] more older gdal --- inst/include/gdalreadwrite/gdalreadwrite.h | 7 ++-- vapour.Rproj | 44 +++++++++++----------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/inst/include/gdalreadwrite/gdalreadwrite.h b/inst/include/gdalreadwrite/gdalreadwrite.h index b861b6a8..15e93b25 100644 --- a/inst/include/gdalreadwrite/gdalreadwrite.h +++ b/inst/include/gdalreadwrite/gdalreadwrite.h @@ -63,9 +63,10 @@ inline CharacterVector gdal_create(CharacterVector filename, CharacterVector dri extent[3], 0, (extent[2] - extent[3])/ dimension[1]}; poDstDS->SetGeoTransform( adfGeoTransform ); - - - poDstDS->SetSpatialRef(oTargetSRS); + char *wkt; + oTargetSRS->exportToWkt(&wkt); + poDstDS->SetProjection(wkt); + //poDstDS->SetSpatialRef(oTargetSRS); GDALClose(poDstDS); diff --git a/vapour.Rproj b/vapour.Rproj index 3d1bddfe..ee53058f 100644 --- a/vapour.Rproj +++ b/vapour.Rproj @@ -1,22 +1,22 @@ -Version: 1.0 - -RestoreWorkspace: No -SaveWorkspace: No -AlwaysSaveHistory: Yes - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -LineEndingConversion: Posix - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageCheckArgs: --as-cran -PackageRoxygenize: rd,collate,namespace +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Yes + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +LineEndingConversion: Posix + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageCheckArgs: --as-cran +PackageRoxygenize: rd,collate,namespace From 6eba8d72514b77ae3dcdea9aa8847601d4ede5dd Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 00:05:21 +0000 Subject: [PATCH 061/102] fix up srs --- inst/include/gdallibrary/gdallibrary.h | 9 +++++---- inst/include/gdalraster/gdalraster.h | 26 +++++++++++++++----------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/inst/include/gdallibrary/gdallibrary.h b/inst/include/gdallibrary/gdallibrary.h index ee429535..398c8aba 100644 --- a/inst/include/gdallibrary/gdallibrary.h +++ b/inst/include/gdallibrary/gdallibrary.h @@ -658,13 +658,14 @@ inline List gdal_read_geometry(CharacterVector dsn, inline CharacterVector gdal_proj_to_wkt(CharacterVector proj_str) { - OGRSpatialReference oSRS; + OGRSpatialReference *oSRS = nullptr; + oSRS = new OGRSpatialReference; char *pszWKT = NULL; - oSRS.SetFromUserInput(proj_str[0]); - oSRS.exportToWkt(&pszWKT); + oSRS->SetFromUserInput(proj_str[0]); + oSRS->exportToWkt(&pszWKT); CharacterVector out = Rcpp::CharacterVector::create(pszWKT); CPLFree(pszWKT); - + delete oSRS; return out; } diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index b25887cf..2f5d604c 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -132,22 +132,24 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, } if (!projection[0].empty()) { // have to validate this - OGRSpatialReference srs; - - if (srs.SetFromUserInput(projection[0]) != OGRERR_NONE) { + OGRSpatialReference *srs = nullptr; + srs = new OGRSpatialReference; + if (srs->SetFromUserInput(projection[0]) != OGRERR_NONE) { Rprintf("cannot set projection (CRS) from input 'projection' argument, ignoring: '%s'\n", (const char*)projection[0]); } else { translate_argv.AddString("-a_srs"); translate_argv.AddString(projection[0]); } + delete srs; } GDALDataset* oDS = (GDALDataset*)gdalH_open_dsn(dsn, sds); if (geolocation.size() == 2) { - OGRSpatialReference geolsrs; + OGRSpatialReference *geolsrs = nullptr; + geolsrs = new OGRSpatialReference; char *pszGeoSrsWKT = nullptr; - geolsrs.SetFromUserInput("OGC:CRS84"); - geolsrs.exportToWkt(&pszGeoSrsWKT); + geolsrs->SetFromUserInput("OGC:CRS84"); + geolsrs->exportToWkt(&pszGeoSrsWKT); oDS->SetMetadataItem( "SRS", pszGeoSrsWKT, "GEOLOCATION" ); oDS->SetMetadataItem( "X_DATASET", geolocation[0], "GEOLOCATION" ); @@ -159,6 +161,7 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, oDS->SetMetadataItem( "PIXEL_STEP", "1", "GEOLOCATION" ); oDS->SetMetadataItem( "LINE_STEP", "1", "GEOLOCATION" ); CPLFree(pszGeoSrsWKT); + delete geolsrs; } if (oDS == nullptr) return(nullptr); @@ -413,21 +416,22 @@ inline List gdal_raster_info(CharacterVector dsn, LogicalVector min_max) names[5] = "bands"; char *stri; - OGRSpatialReference oSRS; + OGRSpatialReference *oSRS = nullptr; + oSRS = new OGRSpatialReference; const char *proj2; proj2 = GDALGetProjectionRef(hDataset); char **cwkt = (char **) &proj2; #if GDAL_VERSION_MAJOR <= 2 && GDAL_VERSION_MINOR <= 2 - oSRS.importFromWkt(cwkt); + oSRS->importFromWkt(cwkt); #else - oSRS.importFromWkt( (const char**) cwkt); + oSRS->importFromWkt( (const char**) cwkt); #endif - oSRS.exportToProj4(&stri); + oSRS->exportToProj4(&stri); out[6] = Rcpp::CharacterVector::create(stri); //Rcpp::CharacterVector::create(stri); names[6] = "projstring"; CPLFree(stri); - + delete oSRS; int succ; out[7] = GDALGetRasterNoDataValue(hBand, &succ); names[7] = "nodata_value"; From 9611e3b8e1f266abbc5c93f4bba448ff696334ce Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 00:21:49 +0000 Subject: [PATCH 062/102] more srs --- inst/include/gdalapplib/gdalapplib.h | 4 +++- inst/include/gdallibrary/gdallibrary.h | 2 +- inst/include/gdalraster/gdalraster.h | 10 +++++++--- inst/include/gdalreadwrite/gdalreadwrite.h | 14 ++++++-------- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/inst/include/gdalapplib/gdalapplib.h b/inst/include/gdalapplib/gdalapplib.h index be746564..a77d9c4b 100644 --- a/inst/include/gdalapplib/gdalapplib.h +++ b/inst/include/gdalapplib/gdalapplib.h @@ -241,7 +241,9 @@ inline List gdalwarp_applib(CharacterVector source_filename, OGRSpatialReference *oTargetSRS = nullptr; oTargetSRS = new OGRSpatialReference; OGRErr target_chk = oTargetSRS->SetFromUserInput(target_crs[0]); - delete oTargetSRS; + if (oTargetSRS != nullptr) { + delete oTargetSRS; + } if (target_chk != OGRERR_NONE) { Rcpp::stop("cannot initialize target projection"); } diff --git a/inst/include/gdallibrary/gdallibrary.h b/inst/include/gdallibrary/gdallibrary.h index 398c8aba..bd4689b6 100644 --- a/inst/include/gdallibrary/gdallibrary.h +++ b/inst/include/gdallibrary/gdallibrary.h @@ -665,7 +665,7 @@ inline CharacterVector gdal_proj_to_wkt(CharacterVector proj_str) { oSRS->exportToWkt(&pszWKT); CharacterVector out = Rcpp::CharacterVector::create(pszWKT); CPLFree(pszWKT); - delete oSRS; + if (oSRS != nullptr) delete oSRS; return out; } diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 2f5d604c..96e74ac3 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -140,7 +140,7 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, translate_argv.AddString("-a_srs"); translate_argv.AddString(projection[0]); } - delete srs; + if (srs != nullptr) delete srs; } GDALDataset* oDS = (GDALDataset*)gdalH_open_dsn(dsn, sds); @@ -161,7 +161,9 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, oDS->SetMetadataItem( "PIXEL_STEP", "1", "GEOLOCATION" ); oDS->SetMetadataItem( "LINE_STEP", "1", "GEOLOCATION" ); CPLFree(pszGeoSrsWKT); - delete geolsrs; + if (geolsrs != nullptr) { + delete geolsrs; + } } if (oDS == nullptr) return(nullptr); @@ -431,7 +433,9 @@ inline List gdal_raster_info(CharacterVector dsn, LogicalVector min_max) out[6] = Rcpp::CharacterVector::create(stri); //Rcpp::CharacterVector::create(stri); names[6] = "projstring"; CPLFree(stri); - delete oSRS; + if (oSRS != nullptr) { + delete oSRS; + } int succ; out[7] = GDALGetRasterNoDataValue(hBand, &succ); names[7] = "nodata_value"; diff --git a/inst/include/gdalreadwrite/gdalreadwrite.h b/inst/include/gdalreadwrite/gdalreadwrite.h index 15e93b25..4014eac8 100644 --- a/inst/include/gdalreadwrite/gdalreadwrite.h +++ b/inst/include/gdalreadwrite/gdalreadwrite.h @@ -24,7 +24,9 @@ inline CharacterVector gdal_create(CharacterVector filename, CharacterVector dri oTargetSRS = new OGRSpatialReference; OGRErr target_chk = oTargetSRS->SetFromUserInput(projection[0]); if (target_chk != OGRERR_NONE) { - delete oTargetSRS; + if (oTargetSRS != nullptr) { + delete oTargetSRS; + } Rcpp::stop("cannot initialize target projection"); } @@ -63,14 +65,10 @@ inline CharacterVector gdal_create(CharacterVector filename, CharacterVector dri extent[3], 0, (extent[2] - extent[3])/ dimension[1]}; poDstDS->SetGeoTransform( adfGeoTransform ); - char *wkt; - oTargetSRS->exportToWkt(&wkt); - poDstDS->SetProjection(wkt); - //poDstDS->SetSpatialRef(oTargetSRS); - - GDALClose(poDstDS); - delete oTargetSRS; + if (oTargetSRS != nullptr) { + delete oTargetSRS; + } return Rcpp::CharacterVector::create(filename[0]); } inline CharacterVector gdal_create_copy(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver) { From 85668b6cf4a31b05870629e6aecee497a1a5295f Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 00:32:14 +0000 Subject: [PATCH 063/102] fix forward declares --- inst/include/gdalraster/gdalraster.h | 31 ++++++++-------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 96e74ac3..7570e604 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -132,21 +132,19 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, } if (!projection[0].empty()) { // have to validate this - OGRSpatialReference *srs = nullptr; - srs = new OGRSpatialReference; + OGRSpatialReference *srs = new OGRSpatialReference; if (srs->SetFromUserInput(projection[0]) != OGRERR_NONE) { Rprintf("cannot set projection (CRS) from input 'projection' argument, ignoring: '%s'\n", (const char*)projection[0]); } else { translate_argv.AddString("-a_srs"); translate_argv.AddString(projection[0]); } - if (srs != nullptr) delete srs; + delete srs; } GDALDataset* oDS = (GDALDataset*)gdalH_open_dsn(dsn, sds); if (geolocation.size() == 2) { - OGRSpatialReference *geolsrs = nullptr; - geolsrs = new OGRSpatialReference; + OGRSpatialReference *geolsrs = new OGRSpatialReference; char *pszGeoSrsWKT = nullptr; geolsrs->SetFromUserInput("OGC:CRS84"); geolsrs->exportToWkt(&pszGeoSrsWKT); @@ -161,22 +159,13 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, oDS->SetMetadataItem( "PIXEL_STEP", "1", "GEOLOCATION" ); oDS->SetMetadataItem( "LINE_STEP", "1", "GEOLOCATION" ); CPLFree(pszGeoSrsWKT); - if (geolsrs != nullptr) { - delete geolsrs; - } + delete geolsrs; + } if (oDS == nullptr) return(nullptr); int nBands = oDS->GetRasterCount(); - // Rprintf("%i\n", nBands); - // if (bands[0] > 0) { - // for (int iband = 0; iband < bands.size(); iband++ ) { - // if (bands[iband] > nBands) { - // Rprintf("%i\n", bands[iband]); - // Rprintf("mismatch bands\n"); - // } - // } - // } + if (bands[0] > 0) { for (int iband = 0; iband < bands.size(); iband++ ) { if (bands[iband] > nBands) { @@ -418,8 +407,7 @@ inline List gdal_raster_info(CharacterVector dsn, LogicalVector min_max) names[5] = "bands"; char *stri; - OGRSpatialReference *oSRS = nullptr; - oSRS = new OGRSpatialReference; + OGRSpatialReference *oSRS = new OGRSpatialReference; const char *proj2; proj2 = GDALGetProjectionRef(hDataset); char **cwkt = (char **) &proj2; @@ -433,9 +421,8 @@ inline List gdal_raster_info(CharacterVector dsn, LogicalVector min_max) out[6] = Rcpp::CharacterVector::create(stri); //Rcpp::CharacterVector::create(stri); names[6] = "projstring"; CPLFree(stri); - if (oSRS != nullptr) { - delete oSRS; - } + delete oSRS; + int succ; out[7] = GDALGetRasterNoDataValue(hBand, &succ); names[7] = "nodata_value"; From bb2de6ff38ed346970dbe7982b93e8b1c34dd5ce Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 00:39:33 +0000 Subject: [PATCH 064/102] missing include --- inst/include/gdalraster/gdalraster.h | 1 + 1 file changed, 1 insertion(+) diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 7570e604..3b6ecdc5 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -4,6 +4,7 @@ #include "gdal_priv.h" #include "gdal_utils.h" // for GDALTranslateOptions #include "vrtdataset.h" +#include namespace gdalraster { using namespace Rcpp; From 6830d08c4f1f6065df2ecb201355c5f90f7fc39d Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 00:56:03 +0000 Subject: [PATCH 065/102] version 3 for wkt_format --- R/00_utils.R | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/R/00_utils.R b/R/00_utils.R index 998b163d..437cadc4 100644 --- a/R/00_utils.R +++ b/R/00_utils.R @@ -18,11 +18,14 @@ gdalinfo_internal <- function(x, json = TRUE, } if (length(sd) > 1) message("'sd' argument cannot be vectorized over 'dsn', ignoring all but first value") + version <- vapour_gdal_version() + v3 <- FALSE + if (grep("GDAL 2", version )) v3 <- TRUE extra <- c(if(json) "-json", if (is.numeric(sd) && sd[1L] > 0) c("-sd", sd[1L]), if (stats) "-stats", if (checksum) "-checksum", - if (nchar(wkt_format[1]) > 0) c("-wkt_format", wkt_format[1L]), + if (nchar(wkt_format[1]) > 0 && v3) c("-wkt_format", wkt_format[1L]), if (length(oo) > 0 && any(nchar(oo) > 0) ) rep_zip("-oo", oo[nchar(oo) > 0]), if (length(initial_format) > 0 && any(nchar(initial_format) > 0)) rep_zip("-if", initial_format[nchar(initial_format) > 0])) From b91bb9fdcba216b2226a213fe9ca6122bceee7ca Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 00:59:24 +0000 Subject: [PATCH 066/102] be exactly wrong --- R/00_utils.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/00_utils.R b/R/00_utils.R index 437cadc4..d734b2cf 100644 --- a/R/00_utils.R +++ b/R/00_utils.R @@ -19,8 +19,8 @@ gdalinfo_internal <- function(x, json = TRUE, if (length(sd) > 1) message("'sd' argument cannot be vectorized over 'dsn', ignoring all but first value") version <- vapour_gdal_version() - v3 <- FALSE - if (grep("GDAL 2", version )) v3 <- TRUE + v3 <- TRUE + if (grep("GDAL 2", version )) v3 <- FALSE extra <- c(if(json) "-json", if (is.numeric(sd) && sd[1L] > 0) c("-sd", sd[1L]), if (stats) "-stats", From ca5a8f46ee299c78aa99eefa652522e5cbe7c9ff Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 01:04:03 +0000 Subject: [PATCH 067/102] be exactly right --- R/00_utils.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/00_utils.R b/R/00_utils.R index d734b2cf..f11ced80 100644 --- a/R/00_utils.R +++ b/R/00_utils.R @@ -20,7 +20,7 @@ gdalinfo_internal <- function(x, json = TRUE, version <- vapour_gdal_version() v3 <- TRUE - if (grep("GDAL 2", version )) v3 <- FALSE + if (grepl("GDAL 2", version )) v3 <- FALSE extra <- c(if(json) "-json", if (is.numeric(sd) && sd[1L] > 0) c("-sd", sd[1L]), if (stats) "-stats", From 000431710dffbdf0069693d7653fd0538cc95feb Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 03:23:29 +0000 Subject: [PATCH 068/102] more pre-v3 stuff --- inst/include/gdalraster/gdalraster.h | 2 +- .../include/gdalwarpgeneral/gdalwarpgeneral.h | 21 ++++++------------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 6767deab..1371b569 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -798,7 +798,7 @@ inline NumericVector gdal_read_band_value(GDALDataset *hRet, CPLErr err; for (int iband = 0; iband < sbands; iband++) { - rasterBand = GDALDataset::FromHandle(hRet)->GetRasterBand(bands_to_read[static_cast(iband)]); + rasterBand = hRet->GetRasterBand(bands_to_read[static_cast(iband)]); //rasterBand = GDALGetRasterBand(hRet, bands_to_read[iband]); if (iband < 1) { // actual_XSize = GDALGetRasterBandXSize(rasterBand); diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index 83831cdf..93abc7f1 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -114,19 +114,11 @@ inline List gdal_warp_general(CharacterVector dsn, const char * strforuin = (const char *)target_crs[0]; OGRErr target_chk = oTargetSRS->SetFromUserInput(strforuin); if (target_chk != OGRERR_NONE) Rcpp::stop("cannot initialize target projection"); - OGRSpatialReference oSRS; - const OGRSpatialReference* poSrcSRS = ((GDALDataset *)poSrcDS[0])->GetSpatialRef(); - if( poSrcSRS ) { - oSRS = *poSrcSRS; - if (!oSRS.IsEmpty()) { - OGRCoordinateTransformation *poCT; - poCT = OGRCreateCoordinateTransformation(&oSRS, oTargetSRS); - if( poCT == nullptr ) { - delete oTargetSRS; - Rcpp::stop( "Transformation to this target CRS not possible from this source dataset, target CRS given: \n\n %s \n\n", - (char *) target_crs[0] ); - } - // we add our target projection iff a) source crs is valid b) target crs is valid c) transformation source->target is valid + const char *st = NULL; + st = ((GDALDataset *)poSrcDS[0])->GetProjectionRef(); + + if( *st != '\0') { + // we add our target projection iff a) source crs is valid b) target crs is valid c) transformation source->target is valid // user may have augmented the array of datasets with source_projection // if the source is just not defined we ignore the target with a warning papszArg = CSLAddString(papszArg, "-t_srs"); @@ -134,8 +126,7 @@ inline List gdal_warp_general(CharacterVector dsn, } else { Rcpp::warning("no source crs, target crs is ignored\n"); } - } - delete oTargetSRS; + } if (target_extent.size() > 0) { From 954fff5a640b25a9315e89bff0aa82ecf2ac0904 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 03:27:13 +0000 Subject: [PATCH 069/102] remove FromHandle --- inst/include/gdalwarpgeneral/gdalwarpgeneral.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index 93abc7f1..05ba5913 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -231,7 +231,7 @@ inline List gdal_warp_general(CharacterVector dsn, for (int i = 0; i < window.size(); i++) window[i] = 0; - outlist = gdalraster::gdal_read_band_values(GDALDataset::FromHandle(hRet), + outlist = gdalraster::gdal_read_band_values(((GDALDataset*) hRet), window, bands_to_read, band_output_type, From 4553707b50941523c14910bde1ec338cc777df62 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 03:36:00 +0000 Subject: [PATCH 070/102] update news,, fix yaml --- .github/workflows/check-standard.yaml | 2 +- NEWS.md | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index 4ff93e85..93b5a48a 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -2,7 +2,7 @@ # Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help on: push: - branches: [main, dev-main] + branches: [main, dev-main] pull_request: branches: [main, master] diff --git a/NEWS.md b/NEWS.md index 4b75c6cd..8d487741 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,12 +1,14 @@ # vapour 0.94 +* vapour now imports nanoarrow and includes internal experimental support for GDAL stream reading (RFC 86). Nothing is +exposed for general use yet however. + * New Makevars.ucrt with patch contributed by CRAN, Tomas Kalibera. * raster read gains "unscale" argument, `TRUE` by default which means offset and scale values are applied and return value is of type Float64, set to `FALSE` to avoid applying scale/offset to band values (this was always implicitly false (no offset scale applied) if the output type wasn't suitable). . * Fix inefficiency in gdal_raster_data() which was warping all bands in MEM lol. - * Fix for `vapour_vrt()` where 'geolocation' was not being included. Fixes #192. * New capability to drop dataset and band metdata, used by functions `vapour_vrt()` and `vapour_warp_raster()` which gain a new argument 'nomd', which From 10f8f09ee89cc2fe8893e562d622bda67bf1279b Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 03:40:18 +0000 Subject: [PATCH 071/102] nanoarrow --- NEWS.md | 4 ++-- inst/include/gdalarrowstream/gdalvectorstream.h | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index 8d487741..54c7cb3e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,7 @@ # vapour 0.94 -* vapour now imports nanoarrow and includes internal experimental support for GDAL stream reading (RFC 86). Nothing is -exposed for general use yet however. +* vapour now imports nanoarrow and includes internal experimental support for GDAL (>= 3.6) stream reading (RFC 86). Nothing is +exposed for general use yet. * New Makevars.ucrt with patch contributed by CRAN, Tomas Kalibera. diff --git a/inst/include/gdalarrowstream/gdalvectorstream.h b/inst/include/gdalarrowstream/gdalvectorstream.h index 6d79b0ea..f0e1d2bf 100644 --- a/inst/include/gdalarrowstream/gdalvectorstream.h +++ b/inst/include/gdalarrowstream/gdalvectorstream.h @@ -5,9 +5,6 @@ // written entirely by Dewey Dunnington and the GDAL project // https://github.com/paleolimbot/sf/tree/stream-reading - -#define RCPP_DEFAULT_INCLUDE_CALL false - #include #include From 52387c9c30362be23288a4cb097a6804769609e0 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 03:41:11 +0000 Subject: [PATCH 072/102] all the ci --- .github/workflows/check-standard.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index 93b5a48a..dd0b0cea 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -18,13 +18,13 @@ jobs: fail-fast: false matrix: config: - # - {os: macos-latest, r: 'release'} + - {os: macos-latest, r: 'release'} - {os: windows-latest, r: '4.2.3', rtools-version: '42', windows-path-include-rtools: 'true', update-rtools: 'true'} - {os: windows-devel, r: '4.3.0', rtools-version: '42', windows-path-include-rtools: 'true', update-rtools: 'true'} - #- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - #- {os: ubuntu-latest, r: 'release'} - #- {os: ubuntu-latest, r: 'oldrel-1'} + - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} + - {os: ubuntu-latest, r: 'release'} + - {os: ubuntu-latest, r: 'oldrel-1'} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} From 332f233c4fa73c383028e370658cb377af2fc40d Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 03:48:55 +0000 Subject: [PATCH 073/102] fix floating logical test --- src/00_raster_block_io.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/00_raster_block_io.cpp b/src/00_raster_block_io.cpp index 43319810..2de84821 100644 --- a/src/00_raster_block_io.cpp +++ b/src/00_raster_block_io.cpp @@ -87,7 +87,7 @@ Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVec GDALDatasetH ds = gdalraster::gdalH_open_dsn(dsource[0], 0); GDALRasterBand * poBand = ((GDALDataset*) ds)->GetRasterBand(1); - if (! poBand->GetRasterDataType() == GDT_Float32 ) Rcpp::stop("\n"); + if (! (poBand->GetRasterDataType() == GDT_Float32 )) Rcpp::stop("\n"); int nXBlockSize, nYBlockSize; poBand->GetBlockSize( &nXBlockSize, &nYBlockSize ); @@ -104,7 +104,13 @@ Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVec // for partial edge blocks. poBand->GetActualBlockSize(iXBlock, iYBlock, &nXValid, &nYValid); NumericVector float_data(nXValid * nYValid); - poBand->ReadBlock( iXBlock, iYBlock, faBlockData ); + CPLErr err = poBand->ReadBlock( iXBlock, iYBlock, faBlockData ); + if (!(err == OGRERR_NONE)) { + GDALClose(ds); + CPLFree(faBlockData); + Rcpp::stop("could not read block\n"); + + } for( int iY = 0; iY < nYValid; iY++ ) { for( int iX = 0; iX < nXValid; iX++ ) From 1e59eafc21c1a2913aa8f40cddf84582394530c4 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 03:53:07 +0000 Subject: [PATCH 074/102] gawd --- .github/workflows/check-standard.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index dd0b0cea..e6e86a05 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -31,6 +31,14 @@ jobs: R_KEEP_PKG_SOURCE: yes steps: + - name: Install macOS system dependencies + if: runner.os == 'macOS' + run: | + brew install openssl + brew install proj + brew install geos + brew install gdal + - uses: actions/checkout@v3 - uses: r-lib/actions/setup-pandoc@v2 @@ -42,12 +50,6 @@ jobs: use-public-rspm: true rtools-version: ${{ matrix.config.rtools.version }} windows-path-include-rtools: ${{ matrix.config.windows-path-include-rtools }} - - - name: Install Rtools - if: runner.os == 'Windows' - run: | - Invoke-WebRequest -Uri https://www.r-project.org/nosvn/winutf8/ucrt3/rtools43-5550-5548.exe -OutFile rtools42.exe - .\rtools42.exe /verysilent /suppressmsgboxes - uses: r-lib/actions/setup-r-dependencies@v2 with: From 6b5fc3223a26c500d593c9bb671c062ee3e3fa0e Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 04:01:07 +0000 Subject: [PATCH 075/102] fix Wconversion --- inst/include/gdalwarpgeneral/gdalwarpgeneral.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index 05ba5913..e7427d94 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -206,7 +206,7 @@ inline List gdal_warp_general(CharacterVector dsn, // Prepare to read bands int nBands; nBands = (int)GDALGetRasterCount(hRet); - int nbands_to_read = bands.size(); + int nbands_to_read = (int)bands.size(); /// if user set bands to NULL, then all bands read (default is bands = 1L) if (bands[0] < 1) { nbands_to_read = nBands; @@ -250,8 +250,8 @@ inline List gdal_warp_general(CharacterVector dsn, //poDataset->GetGeoTransform( adfGeoTransform ); GDALGetGeoTransform(hRet, adfGeoTransform ); double xmin = adfGeoTransform[0]; - double xmax = adfGeoTransform[0] + dimx * adfGeoTransform[1]; - double ymin = adfGeoTransform[3] + dimy * adfGeoTransform[5]; + double xmax = adfGeoTransform[0] + (double)dimx * adfGeoTransform[1]; + double ymin = adfGeoTransform[3] + (double)dimy * adfGeoTransform[5]; double ymax = adfGeoTransform[3]; From 5ae8f54b773320f9a5a0b22747a917f1a4197060 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 04:13:29 +0000 Subject: [PATCH 076/102] try to get windows working at least on gh --- .github/workflows/check-standard.yaml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index e6e86a05..b77913aa 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -19,8 +19,8 @@ jobs: matrix: config: - {os: macos-latest, r: 'release'} - - {os: windows-latest, r: '4.2.3', rtools-version: '42', windows-path-include-rtools: 'true', update-rtools: 'true'} - - {os: windows-devel, r: '4.3.0', rtools-version: '42', windows-path-include-rtools: 'true', update-rtools: 'true'} + - {os: windows-latest, r: '4.2.3', rtools-version: '42', windows-path-include-rtools: 'true', update-rtools: 'true', binary: 'rwinlib'} + - {os: windows-devel, r: '4.3.0', rtools-version: '43', windows-path-include-rtools: 'true', update-rtools: 'true'} - {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'} - {os: ubuntu-latest, r: 'release'} @@ -39,6 +39,10 @@ jobs: brew install geos brew install gdal + - name: ZapRtools + if: runner.os == 'windows' && matrix.config.binary == 'rwinlib' + run: rm src/Makevars.ucrt + - uses: actions/checkout@v3 - uses: r-lib/actions/setup-pandoc@v2 From 734d0276da47e1768783a1153b67a2c0f722beca Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 04:34:21 +0000 Subject: [PATCH 077/102] update dsn specified with a tilde, fixes #193 --- NEWS.md | 2 ++ R/index_input_geometry.R | 10 +++------- R/raster-info.R | 1 + R/utils.R | 8 +++++--- R/vapour-gdal-library.R | 1 + R/vapour_input_attributes.R | 9 +++++++++ R/vapour_input_geometry.R | 7 ++++++- 7 files changed, 27 insertions(+), 11 deletions(-) diff --git a/NEWS.md b/NEWS.md index 54c7cb3e..fa44354d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # vapour 0.94 +* All functions that read or query data source/s now check for tilde "~" at the beginning of the string/s, and normalize the path as needed. Reported by @Sibada in #193. + * vapour now imports nanoarrow and includes internal experimental support for GDAL (>= 3.6) stream reading (RFC 86). Nothing is exposed for general use yet. diff --git a/R/index_input_geometry.R b/R/index_input_geometry.R index f1018bc8..79bf4c91 100644 --- a/R/index_input_geometry.R +++ b/R/index_input_geometry.R @@ -29,6 +29,7 @@ validate_limit_fa <- function(x) { #' @name vapour_read_geometry #' @export vapour_read_geometry_ia <- function(dsource, layer = 0L, sql = "", extent = NA, ia = NULL) { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) ia <- validate_limit_ia(ia) extent <- validate_extent(extent, sql) @@ -37,16 +38,11 @@ vapour_read_geometry_ia <- function(dsource, layer = 0L, sql = "", extent = NA, #' @name vapour_read_geometry #' @export vapour_read_geometry_ij <- function(dsource, layer = 0L, sql = "", extent = NA, ij = NULL) { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) ij <- validate_limit_ij(ij) extent <- validate_extent(extent, sql) gdal_dsn_read_geom_ij( dsn = dsource, layer = layer, sql = sql, ex = extent, format = "wkb", ij = ij) } -## this one will crash if fa not in 1:length(nfeatures) - these are 1-based (or arbitrary) -# vapour_read_geometry_fa <- function(dsource, layer = 0L, sql = "", extent = NA, fa = NULL) { -# if (!is.numeric(layer)) layer <- index_layer(dsource, layer) -# fa <- validate_limit_fa(fa) -# extent <- validate_extent(extent, sql) -# gdal_dsn_read_geom_fa( dsn = dsource, layer = layer, sql = sql, ex = extent, format = "wkb", fa = fa) -# } + diff --git a/R/raster-info.R b/R/raster-info.R index 0eb57132..622225ff 100644 --- a/R/raster-info.R +++ b/R/raster-info.R @@ -140,6 +140,7 @@ sds_boilerplate_checks <- function(x, sds = NULL) { #' vapour_raster_info(f) vapour_raster_info <- function(x, ..., sds = NULL, min_max = FALSE) { sd <- if (is.null(sds)) 0 else sds + x <- .check_dsn_single(x) info <- gdalinfo_internal(x[1L], json = TRUE, stats = min_max, sd = sd, ...) json <- jsonlite::fromJSON(info) sds <- NULL diff --git a/R/utils.R b/R/utils.R index ad24c244..9e4743fa 100644 --- a/R/utils.R +++ b/R/utils.R @@ -8,8 +8,8 @@ if (nchar(x) < 1) stop(sprintf(mess, "Not a valid character string:")) if (file.exists(x)) { ## we only want to normalize out the "~" - if (grepl("~", x)) { - x <- normalizePath(x) + if (grepl("^~", x)) { + x <- normalizePath(x) } } x @@ -22,7 +22,9 @@ ## if (length(x) > 1L) stop(sprintf(mess, "Longer than 1 element:")) if (!is.character(x)) stop(sprintf(mess, "Not a character vector:")) if (any(nchar(x) < 1)) stop(sprintf(mess, "Not a valid character vector:")) - + tildes <- unlist(lapply(x, function(.x) grepl("~", .x))) + normthem <- tildes & file.exists(x) + x <- ifelse(normthem, normalizePath(x), x) x } diff --git a/R/vapour-gdal-library.R b/R/vapour-gdal-library.R index bc4e8090..4a42f38b 100644 --- a/R/vapour-gdal-library.R +++ b/R/vapour-gdal-library.R @@ -125,6 +125,7 @@ vapour_crs_is_lonlat <- function(crs) { #' text(gsum$xmin, gsum$ymin, labels = gsum$FID) vapour_geom_summary <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { #limit_n <- validate_limit_n(limit_n) + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(x = dsource, layername = layer) extent <- validate_extent(extent, sql, warn = FALSE) diff --git a/R/vapour_input_attributes.R b/R/vapour_input_attributes.R index 08e8b9a3..36df021b 100644 --- a/R/vapour_input_attributes.R +++ b/R/vapour_input_attributes.R @@ -64,6 +64,7 @@ validate_extent <- function(extent, sql, warn = TRUE) { #' vapour_layer_names(mvfile) #' @export vapour_layer_names <- function(dsource, ...) { + dsource <- .check_dsn_single(dsource) if ("sql" %in% names(list(...))) { message("old 'sql' argument is unused") } @@ -88,6 +89,7 @@ vapour_layer_names <- function(dsource, ...) { #' file <- system.file("extdata/tab/list_locality_postcode_meander_valley.tab", package = "vapour") #' vapour_geom_name(file) ## empty string vapour_geom_name <- function(dsource, layer = 0L, sql = "") { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) vapour_geom_name_cpp(dsource = dsource, layer = layer, sql = sql, ex = 0) } @@ -114,6 +116,7 @@ vapour_geom_name <- function(dsource, layer = 0L, sql = "") { #' range(fids <- vapour_read_names(mvfile)) #' length(fids) vapour_read_fids <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) limit_n <- validate_limit_n(limit_n) skip_n <- skip_n[1L] @@ -126,6 +129,7 @@ vapour_read_fids <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip #' @name vapour_read_fids #' @export vapour_read_names <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) vapour_read_fids(dsource, layer, sql, limit_n, skip_n, extent) } #' Read feature field types. @@ -153,6 +157,7 @@ vapour_read_names <- function(dsource, layer = 0L, sql = "", limit_n = NULL, ski #' vapour_report_fields(mvfile, #' sql = "SELECT POSTCODE, NAME FROM list_locality_postcode_meander_valley") vapour_report_fields <- function(dsource, layer = 0L, sql = "") { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) report_fields_gdal_cpp(dsource, layer, sql = sql) } @@ -160,6 +165,7 @@ vapour_report_fields <- function(dsource, layer = 0L, sql = "") { #' @name vapour_report_fields #' @export vapour_report_attributes <- function(dsource, layer = 0L, sql = "") { + dsource <- .check_dsn_single(dsource) vapour_report_fields(dsource, layer, sql) } #' Read feature field data @@ -190,6 +196,8 @@ vapour_report_attributes <- function(dsource, layer = 0L, sql = "") { #' vapour_read_fields(dsource, sql = SQL) #' @export vapour_read_fields <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) limit_n <- validate_limit_n(limit_n) extent <- validate_extent(extent, sql) @@ -202,5 +210,6 @@ vapour_read_fields <- function(dsource, layer = 0L, sql = "", limit_n = NULL, sk #' @name vapour_read_fields #' @export vapour_read_attributes <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) vapour_read_fields(dsource, layer, sql, limit_n, skip_n, extent) } diff --git a/R/vapour_input_geometry.R b/R/vapour_input_geometry.R index 663c756d..52757503 100644 --- a/R/vapour_input_geometry.R +++ b/R/vapour_input_geometry.R @@ -41,7 +41,7 @@ #' vapour_layer_info(mvfile, extent = c(412000, 420000, 5352612.8, 5425154.3), #' sql = "SELECT * FROM list_locality_postcode_meander_valley")$count vapour_layer_info <- function(dsource, layer = 0L, sql = "", extent = NA, count = TRUE, ...) { - + dsource <- .check_dsn_single(dsource) layer_names <- try(vapour_layer_names(dsource)) if (inherits(layer_names, "try-error") && grepl("rest.*FeatureServer/0", dsource)) { message("looks like dsource is a ESRI Feature Services, try constructing the DSN as \n \ https://<_>rest/services///FeatureServer/0query?where=objectid+%3D+objectid&outfields=*&f=json\n see ESRIJSON document in gdal.org and this example https://gist.github.com/mdsumner/c54bdc119accf95138f5ad7ab574337d\n") @@ -90,6 +90,7 @@ vapour_layer_info <- function(dsource, layer = 0L, sql = "", extent = NA, count #' mvfile <- system.file(file.path("extdata/tab", file), package="vapour") #' vapour_layer_extent(mvfile) vapour_layer_extent <- function(dsource, layer = 0L, sql = "", extent = 0, ...) { + dsource <- .check_dsn_single(dsource) layer_names <- vapour_layer_names(dsource) layer_name <- layer if (!is.numeric(layer)) layer <- match(layer_name, layer_names) - 1 @@ -164,6 +165,7 @@ vapour_layer_extent <- function(dsource, layer = 0L, sql = "", extent = 0, ...) #' @export #' @name vapour_read_geometry vapour_read_geometry <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) limit_n <- validate_limit_n(limit_n) extent <- validate_extent(extent, sql) @@ -173,6 +175,7 @@ vapour_read_geometry <- function(dsource, layer = 0L, sql = "", limit_n = NULL, #' @export #' @rdname vapour_read_geometry vapour_read_geometry_text <- function(dsource, layer = 0L, sql = "", textformat = "json", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) textformat = match.arg (tolower (textformat), c ("json", "gml", "kml", "wkt")) limit_n <- validate_limit_n(limit_n) @@ -185,6 +188,7 @@ vapour_read_geometry_text <- function(dsource, layer = 0L, sql = "", textformat #' @rdname vapour_read_geometry #' @export vapour_read_extent <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) limit_n <- validate_limit_n(limit_n) extent <- validate_extent(extent, sql) @@ -201,6 +205,7 @@ vapour_read_extent <- function(dsource, layer = 0L, sql = "", limit_n = NULL, sk #' @rdname vapour_read_geometry #' @export vapour_read_type <- function(dsource, layer = 0L, sql = "", limit_n = NULL, skip_n = 0, extent = NA) { + dsource <- .check_dsn_single(dsource) if (!is.numeric(layer)) layer <- index_layer(dsource, layer) limit_n <- validate_limit_n(limit_n) extent <- validate_extent(extent, sql) From 9cc14c4443679596f78d3e4ce1cee48a038e482b Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 05:19:55 +0000 Subject: [PATCH 078/102] readme --- README.Rmd | 6 +- README.md | 300 ++------------------------ man/figures/README-lod-1.png | Bin 16432 -> 38212 bytes man/figures/README-topo-example-1.png | Bin 10017 -> 11756 bytes man/figures/README-topo-example-2.png | Bin 35313 -> 109619 bytes 5 files changed, 21 insertions(+), 285 deletions(-) diff --git a/README.Rmd b/README.Rmd index b0335e76..2633f986 100644 --- a/README.Rmd +++ b/README.Rmd @@ -163,8 +163,8 @@ x <- list(x = seq(ex[1], ex[2], length.out = dm[1] + 1), y = seq(ex[3] ,ex[4], l image(x) ## or as a spatial object -library(raster) -r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]]) +library(terra) +r <- rast(ext(ex), nrows = dm[2], ncols = dm[1], crs = crs, vals = vals[[1]]) contour(r, add = TRUE) ``` @@ -174,7 +174,7 @@ If we want more detail, go ahead: ```{r lod} dm <- c(512, 512) vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -(r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]])) +(r <- rast(ext(ex), nrows = dm[2], ncols = dm[1], crs = crs, vals = vals[[1]])) plot(r, col = hcl.colors(24)) ``` diff --git a/README.md b/README.md index 2a2165d1..120d839d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ -<<<<<<< HEAD @@ -65,8 +64,7 @@ provide binaries. install.packages("vapour") ``` -The development version can be installed from Github, easiest is via the -[hypertidy universe](https://hypertidy.r-universe.dev/ui#builds): +The development version can be installed from Github. ``` r options(repos = c( @@ -163,6 +161,8 @@ dm <- c(256, 256) vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) +#> scale: 1.000000 +#> offset: 0.000000 ## now we can use this in a matrix image(m <- matrix(vals[[1]], nrow = dm[2], ncol = dm[1])[,dm[2]:1 ]) ``` @@ -175,9 +175,9 @@ x <- list(x = seq(ex[1], ex[2], length.out = dm[1] + 1), y = seq(ex[3] ,ex[4], l image(x) ## or as a spatial object -library(raster) -#> Loading required package: sp -r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]]) +library(terra) +#> terra 1.7.18 +r <- rast(ext(ex), nrows = dm[2], ncols = dm[1], crs = crs, vals = vals[[1]]) contour(r, add = TRUE) ``` @@ -188,15 +188,18 @@ If we want more detail, go ahead: ``` r dm <- c(512, 512) vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -(r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]])) -#> class : RasterLayer -#> dimensions : 512, 512, 262144 (nrow, ncol, ncell) -#> resolution : 19.53125, 19.53125 (x, y) -#> extent : -5000, 5000, -5000, 5000 (xmin, xmax, ymin, ymax) -#> crs : +proj=laea +lat_0=40.416667 +lon_0=-3.716667 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs -#> source : memory -#> names : layer -#> values : 562, 742 (min, max) +#> scale: 1.000000 +#> offset: 0.000000 +(r <- rast(ext(ex), nrows = dm[2], ncols = dm[1], crs = crs, vals = vals[[1]])) +#> class : SpatRaster +#> dimensions : 512, 512, 1 (nrow, ncol, nlyr) +#> resolution : 19.53125, 19.53125 (x, y) +#> extent : -5000, 5000, -5000, 5000 (xmin, xmax, ymin, ymax) +#> coord. ref. : +proj=laea +lat_0=40.416667 +lon_0=-3.716667 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs +#> source(s) : memory +#> name : lyr.1 +#> min value : 562 +#> max value : 742 plot(r, col = hcl.colors(24)) ``` @@ -244,270 +247,3 @@ We’ve kept a record of a minimal GDAL wrapper package here: Please note that this project is released with a [Contributor Code of Conduct](https://github.com/hypertidy/vapour/blob/master/CONDUCT.md). By participating in this project you agree to abide by its terms. -======= - - - -# vapour - - -[![R_build_status](https://github.com/hypertidy/vapour/workflows/R-CMD-check/badge.svg)](https://github.com/hypertidy/vapour/actions) -[![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/vapour)](https://cran.r-project.org/package=vapour) -[![CRAN_Download_Badge](http://cranlogs.r-pkg.org/badges/vapour)](https://cran.r-project.org/package=vapour) - - -## Overview - -The vapour package provides access to the basic *read* functions -available in [GDAL](https://gdal.org/) for both -[raster](https://gdal.org/user/raster_data_model.html) and -[vector](https://gdal.org/user/vector_data_model.html) data sources. - -The functions are deliberately *lower-level* than these data models and -provide access to the component entities independently. - -For vector data: - -- read access to feature attributes. -- read access to raw binary geometry. -- read access to geometry in text forms (GeoJSON, WKT, GML, KML). -- read access to the extent, or bounding box, of feature geometries. -- helper functions to summarize feature identity and geometry status - -All vector/feature read tasks can optionally apply an arbitrary limit to -the maximum number of features read or queried, and all allow execution -of [OGRSQL](https://gdal.org/user/ogr_sql_dialect.html) to a layer prior -to data extraction. In combination with a SQL query a [bounding box -spatial filter](https://gdal.org/user/ogr_sql_dialect.html#executesql) -can be applied via the `extent` argument. - -For raster data: - -- read access to the list of available rasters within a collection - source (subdatasets). -- read access to *structural metadata* for individual raster sources. -- read access for raw data using GDAL’s [RasterIO - framework](https://gdal.org/tutorials/raster_api_tut.html) and its - dynamic image decimation / replication resampling algorithms. -- read access for raw data using GDAL’s [Warper - framework](https://gdal.org/api/gdalwarp_cpp.html) and its dynamic - image warping, a superset of the RasterIO capabilities. - -The `vapour_warp_raster()` function is a new feature in vapour, and -reflects many learnings about how the warper works and what is needed -for use. We simplify the approach taken in `vapour_read_raster()` by -allowing specifying an *extent* and *dimensions* as a minimum, and this -works for data sources that contain *overviews* (or pyramid -levels-of-detail) as it automatically chooses an appropriate level for -the request made. This works for files, urls, database connections, -online tiled image servers, and all the various ways of specifying GDAL -data sources. - -The workflows available are intended to support development of -applications in R for these vector and [raster -data](https://en.wikipedia.org/wiki/Raster_data) without being -constrained to any particular data model. - -## Installation - -The package \~cannot be installed from CRAN\~. - -The development version can be installed from Github. - -``` r -options(repos = c( - hypertidy = 'https://hypertidy.r-universe.dev', - CRAN = 'https://cloud.r-project.org')) -install.packages("vapour") -``` - -To install the development version the more github-traditional way: - -``` r -remotes::install_github("hypertidy/vapour") -``` - -You will need development tools for building R packages. - -On Linux and MacOS building also requires an available GDAL -installation, but on Windows the ROpenSci rwinlib tools are used and the -required GDAL will be downloaded and used when building the package. The -hypertidy universe way also has access to binaries. On windows this -installation is self-contained and only affects the use of R, it can be -used alongside other applications using GDAL. - -For MacOS the package build is controlled by an internal CRAN process -including configure arguments for the gdal and proj data directories. - -## Purpose - -The goal of vapour is to provide a basic **GDAL API** package for R. The -key functions provide vector geometry or attributes and raster data and -raster metadata. - -The priority is to give low-level access to key functionality rather -than comprehensive coverage of the library. The real advantage of -`vapour` is the flexibility of a modular workflow, not the outright -efficiency. - -A parallel goal is to be freed from the powerful but sometimes limiting -high-level data models of GDAL itself, specifically these are *simple -features* and *affine-based regular rasters composed of 2D slices*. -(GDAL will possibly remove these limitations over time but still there -will always be value in having modularity in an ecosystem of tools.) - -GDAL’s dynamic resampling of arbitrary raster windows is also very -useful for interactive tools on local data, and is radically -under-utilized. A quick example, topography data is available from -Amazon compute servers, first we need a config for the source: - -``` r -elevation.tiles.prod <- - ' - - https://s3.amazonaws.com/elevation-tiles-prod/geotiff/${z}/${x}/${y}.tif - - - -20037508.34 - 20037508.34 - 20037508.34 - -20037508.34 - 14 - 1 - 1 - top - - EPSG:3857 - 512 - 512 - 1 - Int16 - 403,404 - - -32768 - - -' -``` - -``` r -## we want an extent -ex <- c(-1, 1, -1, 1) * 5000 ## 10km wide/high region -## Madrid is at this location -pt <- cbind(-3.716667, 40.416667) -crs <- sprintf("+proj=laea +lon_0=%f +lat_0=%f +datum=WGS84", pt[1,1,drop = TRUE], pt[1,2, drop = TRUE]) -dm <- c(256, 256) - - -vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -## now we can use this in a matrix -image(m <- matrix(vals[[1]], nrow = dm[2], ncol = dm[1])[,dm[2]:1 ]) -``` - - - -``` r -## using the image list format -x <- list(x = seq(ex[1], ex[2], length.out = dm[1] + 1), y = seq(ex[3] ,ex[4], length.out = dm[1] + 1), z = m) -image(x) - -## or as a spatial object -library(raster) -#> Loading required package: sp -r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]]) -contour(r, add = TRUE) -``` - - - -If we want more detail, go ahead: - -``` r -dm <- c(512, 512) -vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -(r <- setValues(raster(extent(ex), nrows = dm[2], ncols = dm[1], crs = crs), vals[[1]])) -#> class : RasterLayer -#> dimensions : 512, 512, 262144 (nrow, ncol, ncell) -#> resolution : 19.53125, 19.53125 (x, y) -#> extent : -5000, 5000, -5000, 5000 (xmin, xmax, ymin, ymax) -#> crs : +proj=laea +lon_0=-3.716667 +lat_0=40.416667 +datum=WGS84 -#> source : memory -#> names : layer -#> values : 562, 742 (min, max) -plot(r, col = hcl.colors(24)) -``` - - - -GDAL is obstinately *format agnostic*, the A stands for *Abstraction* -and we like that in R too, just gives us the data. Here we created a -base matrix image object, and a raster package *RasterLayer*, but we -could use the spatstat im, or objects in stars or terra packages, it -makes no difference to the read-through-warp process. - -This partly draws on work done in [the sf -package](https://github.com/r-spatial/sf) and [the terra -package](https://github.com/rspatial/terra) and in packages `rgdal` and -`rgdal2`. I’m amazed that something as powerful and general as GDAL is -still only available through these lenses, but maybe more folks will get -interested over time. - -## Warnings - -It’s possible to give problematic “SELECT” statements via the `sql` -argument. Note that the geometry readers `vapour_read_geometry`, -`vapour_read_geometry_text`, and `vapour_read_extent` will strip out the -`SELECT ... FROM` clause and replace it with `SELECT * FROM` to ensure -that the geometry is accessible, though the attributes are ignored. This -means we can allow the user or `dplyr` to create any `SELECT` statement. -The function `vapour_read_geometry` will return a list of NULLs, in this -case. - -## Examples - -The package documentation page gives an overview of available functions. - -``` r -help("vapour-package") -``` - -See the vignettes and documentation for examples WIP. - -## Context - -Examples of packages that use vapour are in development, -[RGDALSQL](https://github.com/mdsumner/RGDALSQL) and -[lazyraster](https://github.com/hypertidy/lazyraster). `RGDALSQL` aims -to leverage the facilities of GDAL to provide data *on-demand* for many -sources *as if* they were databases. `lazyraster` uses the -level-of-detail facility of GDAL to read just enough resolution from a -raster source using traditional window techniques. - -Limitations, work-in-progress and other discussion are active here: - - -We’ve kept a record of a minimal GDAL wrapper package here: - - - -Before those I had worked on getting sp and dplyr to at least work -together and recently -rgdal was updated to allow tibbles to be used, something that spbabel -and spdplyr really needed to avoid friction. - -Early exploration of allow non-geometry read with rgdal was tried here: - - -Thanks to Edzer Pebesma and Roger Bivand and Tim Keitt for prior art -that I crib and copy from. Jeroen Ooms helped the R community hugely by -providing an accessible build process for libraries on Windows. Mark -Padgham helped kick me over a huge obstacle in using C++ libraries with -R. Simon Wotherspoon and Ben Raymond have endured ravings about wanting -this level of control for many years. - -# Code of conduct - -Please note that this project is released with a [Contributor Code of -Conduct](https://github.com/hypertidy/vapour/blob/master/CONDUCT.md). By -participating in this project you agree to abide by its terms. ->>>>>>> cran-patch-rtools43 diff --git a/man/figures/README-lod-1.png b/man/figures/README-lod-1.png index 576f8656534d71fbeb8a4336a8d57534571392a3..b358ccfb648efbbdf01ce6c75296d5ec52263bbe 100644 GIT binary patch literal 38212 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�!BcZ~;7L8E{Qf>K3~ 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 Oh@Q5=-J(0TA^!!SWJuQl literal 16432 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 literal 10017 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 JiUj>U5tDb@#3q zVG_Gn$mKfm?v#Er=5FpZU8Ms~OGmNF$%v3gI^j?>YXZlwU;9`=LVI`(Pp zDi8=#G7G=m`Y(2ADzufNW;nciI?EwF>$@z{B zHq&0|WoP>&gQKBAzP2`2%hw&5Jg!^Gi$Qfa#okG z3#(q`K`P$PRL|#>RKTeuqDEj9W6t3MXl2K3xem@Q12z1V!JoM}3h@&2jz@7z?;_X< z>1@w6BUa~7387kKrqJ+@l+RLWZ;S1d&}m2x#Dgoi&HA7Y~ju2nlcFA+(T8p0=3|WaY}2ZirgC;qr*SA&Wog z&@S9hC=}d}&)$A0dfnl8fdB_v>u+Zd>e;Tk<&*>h!QejOgZqRlmFk;!5-(nhOH9rx zGv>&NTdC=}-^?9V&2uYBwpV7wiA2IJt6u9c=!=ohw03)x4B4?ot&f*Pe&e10=Cl4* zVgc~at-P;(&wH4XD;5hI)%O_MGpKimx+0-~(#{g&QDnOxyu!?lxY)DzeH!XFRRb-t zF}t6EuW_Cf8!@gD@+uyv=WqdXBV6mrO8(4ctv~K!zD{LtE|W?pH9k-fV#J=Ne4yGY z0Ut3B6vf1^FXyX@Qsqw+@VR#>cCUOJa(yVW-S_9QG#xh)gPi!>v8DuljYO3y3)Qyb zVQ$r(zG5_VB~MA30uRfiJeiND1pgQhGx%;Vhpv&B$%~!2@Fi}gV=ZI5aPk&Cnoy`L z4w{Z^U;I{57IxME?SlB}io}mH6IG(yp&p$8+q+ z4t<|nym{rMqGX%~0j?+3kC{Ao-xt50b#u10vJ$FPns+C(Y0=0>tt}Daa(xf&*f$jpfzs_W)b#A2SoGNi7J(eLh*%9RV>?Ov~TjVZ;@1;bJN*oPUtM=tte=Cct4TUzj< zMiRVsF#fw$2miPA)cJiMq1AXMU#dvYlIG?YhSqZzYQ@|%8Ya#8>z5r@ogF2wj%YTl zSMb-XPhY&5^80tg8adrDa7FDdb8;oVlgLNUTL07d^B2ubcf|-F$QREB3Zll``DrDwbd4QaV7PiUK7-rkpG}8$xkSFxfv}pyt;scIEPs7p+XG zSPPaATrM5#hMZ_QqnzOpljWZ0vSN&K%5t92zhc30^F{$=DETJJ8dg&(2qT$Y4jd<#4C4;*19ah*u!jQ2)^fa7{*> z0yT8Ee=pOP`zxpJ{s zXsK#=BcYS*KmYLAZM*+jx9P;Bch~v(xDM$P{?2QC-OQppBVF`5MQX<)`QnNHagyj-rLK6uYNN8M2qUBA)RCuo4t6f=*%@*qXB-%GFGKNSF;j z`Qur+g+v2irgBco1Xsdr0Av~#r4gA=18b}W*b5PWgVrQvYNQ&ZYFgSd*4(s6i@1xQ zcfnc2tYli)FvAlYLGkXy7&~62Az~j>n($&Uz|XhnXt1WSMAl}SJB!o!*@!eQ4V=iQ zh>|kZ)UhJmh68!{h_Mm!M-D@s$XAo3q@N>d*q=*33w4^WQv8_C&Rp8t@v*^4}aU7hVFzR-E% z3!POe^_3g(tA0J+r0d6B+69*>Aar!Jo%`-HzFt)*|2Y2nPHTUQG)(ZTf4{t9^M$=D zMheSS$;2h)sMQ)z)fG)jskh48?j;BdAS{44`*J&xPqwmXH~qrt(HL6^0q(Rgt2f5- zQ|!3L*=cw?ptuLhvIBO;5az}=mdpG~EJO`6E0GD9q~xIj4P2HHQ^4{iSP3#U>3s9bc+`BDV$@@&7G?|9=1{dr5M7e)-pr zosSzotf^4Q$o>tBUTILrrB!1e;QX~jjfR|jxud;Rzs~i5jeBnBJO9ZG4+|Bl&aG;T z4A*;F4kD4TS(AXJ^G8pArPrnF@nzoq{-=XSPu?mc8gE&IH>!2}eg%tVcAnh9PPaSv z%;m(6&Hc^$xPpAy@FoeF?EHuQmys(ue~(vtGGmZw=Sj_H{@)y*g17$MqPy9&uxP!c zvzTm^2@Ph_RGcc{SU#}|fLs+40Rh$s!A8g|uVT{Gz*nh^b~e+FEYy&!WM>Y$b8!|C zEFnxngfospGF99w?9_&0G~(9pn(H<+$fh0`NT2N zjoHb}Oy*0UiU(T?)EZ966N1=xUssPCO;}e;EdKt3PAG;T4-M{jq7{Zn60d)A3^oJgX)zk z3E#5w{M`pB4I3EyD=Biqn;Me$@^C6FRIc7|{G~p6Wx(DZ*IFnLbR4}tJj83_@KVV# ze;kZ%7w)gaWY!PuBoB3Bq@OF3dNHXNKvEX{zQo&^7t84!8^GN(-0i9DVw4iCMNs60 zb`+AV#Lu9|^17UzIh>aw)zHe8{*E-X2Cx(AE*U?PkBz`Ic0Zoa?>RhFkfKB^z*$5u z2Ugd@N36q7J|KZ8DRWX-Wa$+2eYs?+a4^y3Fs&&g_Vd4r8Ke!5I|%9 zV$(A=0U^xwX7WRR%-}V*8llcs1R>1xVq83T++Fl~ zeW8H#9OaP(LEka0ggyJ!14eLL1|7w#V%=vEn3 zJ_E`21=2#_rf;9v`Jv8QI|HbY;L8W&Z{11i9Vl}neIVd zD}2P%)&H<)OTT@ciV8looJ-?G0gKXD?EAQht?{|^JJXmO!|7*nk#IYkfx9_01lNQL zj*3knM#1t7uFD9O;3VQ?0rjkCWyfGgTt#IkuqTZHkF4-rX$yik)>qxMO;O^?q=xgt_+N96ITZBCGm_C&o`)&Dd~hPfaaUI`MmCia@vq8*>Rt} zag1&195U}|7X4G`hj!YX5Zd@acC7Z+tbG&bA}6tvok*e504lX+{ehGb-8`M_L_m0b zhYQhp?VC6OISJRCf|7A4-ZWT=gl=YO8sUh*13WTvl)JCF96lR6f7R&% znW9}&zm|=Cnud5a5A`;+7i~#MzWiGXrOHYyGL_wpL3!ockOn@3`h@@R)1i;vHl$Q5 zu@;T&*Dxnf{>zSQP7abeOCqO_ZT;MUP@zzuv7E3*10NJhZYL5{F5jw1o>nK#&+5sX z1H}Zd6MpubNQ7z>JG(CD$8@H9(AA!F6+3cBQj)Jm0}evmM6|Ul+tdAUKE7fT*!@U8 zJ9Aj(ho>%My*!i}ViX+8<5U4FE%#(;V16oJK59{KYMI<%4=xCJ{s3RJ!$pFZEx+I8 zWg|X>I#$g0CP~RHImt?1b0b{O<~B`%rxt;_Tk%&qeiE+aGTIlQfgRgZ5ksJ^>$-?p z?91kCCMD3$mY3Zg`|v9dowW=`7A~eJ@vdGHbFl_6#;UOu^IQZfdnAD^KZYC#vHk z*>ff%G|(#w zL0uboxtpM7u9N140zsidnU;~~;Z_~pUuI11({uR3cV6pjr`14KCq@r${4hCp#pX*d z3<@0_mMKU(V<{(Ck?YA+59=#qFKRR1hO8W_KXmfpCMrGaCV8U5IdE zOExb*q`w0b-OSHbv`B$sj+$I`b#qu$8V#JW({)vyzq==kn&P65i;G*neEDy`{r2F& zgQ6)(B$C>-YY!hj{MA=qty|Zu#NyKUSG(wqfkwloU%r=TEfxZ~1*(=I z4)!)8rAl)sD$Bt})G@3|f@zfnKXg!2@^4AGl0udfQO@AL87gE2_(MMz4^|71zznM(;R8w0qQ%k_NH6cngP z&qWQMj!1-1fQN{7cHEZpVKT3|(OXX%_Ei~&@;Q-Djv5ycb*=c++k}MelLh>q&6bMP zl8T)3%QJ8gGNuY7BvxjSt>)cF4sf$YYGrDano`w(H4_)(_%WRuau)jP2=*I>K593$ zWO08UKcv&co~iDJ;xZP;b~u~N54uuh^b!2=Oy|0D{=+W%3l}bQ>eR{I-F?uYK@A%= zbaQjlXf#<_S<%tan>TM>v0}yH!-vDetEG4PzZn7nMeGjPN`!4g%d)swBeceIX82p*`sr57k`&TyU$1&;>ZB~*K1-!6C0+vlcVNAA&n)*=HwTlv4nYY z)KFn&n?gg3f-aVB5MG4nLPl6(&s-BKr;UM|h}mAuPUeaX-)ily{1|`bGS!{l)qeFl z4y?RZthQA1Q6mWc?YH0V+O_NNzyEG)Th>%rym;~0v14bAMir@=NW@4Dwz`st7#~W+Uwl`W&~m|e zHC)VPZ8q730DWpRLWJ=OjoM~w3C-8GVrPy~hdT+2bG%K0vj`gj$#Q&kRi;VREV;$q zLeiDokW7le?#l7eN+vK~=;mJyi76CUp-e z)l&nRa+GSUv>u)!+r0*&Mi6{dRMeU^Ys#}bAQp?KOqnuxuw|NbYio}f(4+k~qNd%N zl~~xJnctbqiO=>n&0H))^FpDZL0zw9KOg?|y`ct=vkV&4^;-YqDNzs@Jk}x_TH|F6Mb@o`n^}0-GO023ohVfE%Pkfq(X$q-i<9%(9iIq*jg zuO(1V>u@&_eq!ob6C|nF@-~coH41dM=>93114;pDR_wKTP-`PL^*2{*^`l5IeadU*eI^30cCUT9Pb3un zFsrv2&UI}&J~chJd&Gh-XGIL^Z9C=#ERtpGfnEmlsX(eTWS$X;Q*(O2)7BAP#Vn@L;Q^dhZl8A|riKuj*z zGDwpFhy~PjBGeVv(spoS0f*v=Oyp2J2b!7L8cPko-X>d1oh@C(Lj|`B0halhZ$@ii zK`I(pTJE_>kkjQn-};vF3hdA0`*emo@tjL>c36^Am_AXT%_7Z2lhXjf${PDie$ zvpr!pgxQpm+e=pRd>l3c)Zi^y}Wqg^+FSW2Py~tShLoTet%+nl-C!#)YHO0GJphw$+e;R`?iw{2dV8nkL{+ulHI?bVnBH~Ro7)Dxwq^d?-I@k_0vXw|uUDVmb>!~Z&13D1lwSu= zcgI#u1G7u|0vQKw<~CLO#@5Da^t0`p9Bh}ZJ6uHYBK@iL0s)^*>k>L})#!J3Dpl$W zH&~re4{fFC-O5E$xedQSfQ>b^+zpK>GU$83_d^-Gk?rF!;58ILpd*15 z`Br@G7!%BxU|v7Yo;1c9lu6eIA-ot=_QfI!`8t(3DZJ-tEVGuu+Dz^%SfH!Wz)wO~ zdsbvH-v=ilK!SoF(pln5pfx-qfTH~KiSY3?zD?sZy+TKik)dK%GSfX6r{|`M3JMnb z(n!L|0+wZPET8u+sv%f)D7uAs1s^1#FWQr#B+!~>HhknoV}nr@i=@gMMl&0NtXY@I zD<-xWHVL!NAQ5qClg#)326vMAd^@)jAHUM1 zHp^c&e|nmf(=M=oe%&>DlLk-O>g!=I6bfPzaw7VKs5P3s$L~e-4l!_e`FMPx+ytpO ziy$nt)~!3G)PD5QyqmMl?iC|q60(H?!Mv%Rg9F`wJF%IEPRIPP^VWo~?=%hZ>fR>c z?U!2H=9sC6laz&*acNuwLrE`S_%H04XfbWOjy@c`X)?i=7=rrDskb~>oykk_40GZI zXOo+l?ak$5FTKifAA7MZgDDSr#)(>1{FcoN&c*Cr9%Eb>8biLi;s&fMGwAC`cl~k# zjzZq`;G<+hBm`IyBH`{ME41d@?tntWl61P->#bMx5SKNVpDf<;U_v~;Rt#{gY{W+= z6673+8b&iyU zyI6aKS9!qIX5{^`B%H(53;k-HXR~IMOeiGRbObxqP{UEvK2*pYDwT?x!&M zC*B)URuSFoZBU+6bvs^)YnZpYov)|EoTZVA)}HO(rQX`l2WrdZmPZM}?>ca4`o|kj z?V9Q7ZcYNYdG30ZO6?vxE%u)UPL8EM;tDJ1${;7dFzQ;;&)ctDxt+T0`(btboK32! zQzu5AjAr~YqQ1nwB9Zfwc>L0nd~=jJeHamrjh=!g;I*B= zDN0sma9+w3clzi`idMrF8Hz^>l|(>e8-%bflO4Hy>Q!8Tu9H50xlNRmcm*L6Cb}XP zl+E)mxkSGQ{1H$=ykJ)@8?)Hcs^UsEnVL0^0uv#U;^aOf3En{~&D2r_jTNHk1G!ho zm#KJ)`N+#+{di2xo-+e?3t5zgRLyL!;s&^u+DkbEGxiXT-FV+%Hct5@JMACWf89l2 z0#{d8dwY9tZ||o_LW5c`s09}uaN{AdX=LUD zT#4nwjns0(N`#e&5IbdUQg&mX*qpb+Wha z)+V4^n}E(^e!U!>TF1}ia)8gaGiP|k?5>U1JJ7WrGxzf0UV7B0Lm;hc)6(B41+Mb& zwjfSE`?RyEP2lAL`@<1Y7n}q3CNLhH@Wz4VN7IgcRYf0n8ii5 zd!CHNdsumhjv=@^6sHQ?OZagDZ~a1iI$u0T6N9E{^FW#hmU>05SIHF5>l9}=I= zk&mfYT1BRT4~uqlEuO|kbelE_W8UBS&HFt^J?eL75@t;wC=v;tov`%SAMZk!NzQ+xbd&zg#Bt;+~M}@ndd%R!B;xxYVCBW!RL$i&@s3=A4>Gt61HB{}&WeF9bXA|Z>Pv0-FwWhu|_7a@!2=%8?tw>KNY_0Hd!8^npcfF^p-P|7| z51);BcS76xwM{m}KX`M%y+-$5)Nyc$3oW%4^i$i%kux`*{0fs&gL5mnx2& zjlCS5y7TbuS4V`~=KP~Et}eU;ThCC(6S<-|&B9c;+wpvJo^Osu!|zv^{5u}@3~R!( zO{it`H}KnS;__(V3>oIkK_A-N@v#>lCu1cjX7?O5C-X^H0VFB8EF)XRPvvr?JJ`|A zj@`LTO=LrDtl;$o1~~AdYXuqLIw9BaVKR0?cIMK?mX@}~QhFM=Dd$W9(S=-Iang<4TAdEz07H6`#31^ZS zUY`#tD3z_zs1Y&v?%liF+S=+Ax=|{XW5C*!5AEP4@4iOs7uM8_5EJel$R_LONawtVNMHbR4K)XR(47Alkz z-}?FT_4xU-A_nv{RzJ=pn%5@yCfz>XymE4*;9^_MRD!>LH?8ORjm<;7n+K}eG;|!? z!QBiGd45dfjP;zl&F7=AvBK4!@H*yr+Ka;TDmBON^T$@9!t{cU`M{195vZ05|p&ErIr0ItgTAQ`m=0kpH@ z6*r>ge4fhsT6l^{SMg3F8d&$p?PNIcUj~I5ZpyhV<5U3;3TbYO5N^t`7SO?-Pzj+D z-R)Ise%@TkU1zHJIg=y#eC}N-+58#^4Sbry-9l!1(x(#MUYVNLZ;}Z80tk1ftv4Q~ zd{Fv|<(^;+zD5wdv$OM>HESXwB6PkR85ucv@ZikM%68!6z+L2#Kmxio*)r2B91JIT$7nxQmRspgL=sTYmIxzK7eS=9Uc!@L_ z_u=lWT-oGN&4=|0c5~MKGt$>gcK5-{Gr!p8<>C0{?BUHC*Zz6aiC?yy`s3#}T%C1? zP|YUzS7xkh65>DYm0sEdjHmg-XJWrzb9(QJk(F1fU$ZfC>luKAO!8%P2}Qfi(8GyP zfBJ-#bp@42$s>^`r`vKq>CNCqpr7FP#PHPx4h+Fs2$t|3YqRWzEH-5$5-`Sv04tn? z1XvU7uY2$%8K0-{xi=nScI2=z8(%R~+-YsgWf?!FqkyUIgg<(e^igkxCVsM#>v8~p zF~O$fJ(Qs8Sl_wiBqb`lVNXD%ClO_ zjn$JF^flKXJ|=h{7Z#6Y_Aqi}0D&H6W2 z@5|Nw^XnWqpZUwasF~mV-JwOmknTb4oBM?Xma=h6sI&~z5A4;nU-u^KHlK``uv8!r z)D7^sACr3JMtqlcdb`V;hu6k-dv?N7e_z)|!M;KDysgBdGLxy0?9(%)X_*C;&-;0) zD=&2|{yRF6Gj~urJZ^%WoKd*#Z0sjn`0Y)a1sZii2MHs?Ir*TN;Pv574&D8+7FJ1M zxSt~qLi#usCv2Brnzdh1K4gF+ZzVCnkx&V5xMM3ISIw+sqUF5eMlT1;R7rV@tGfef zg-BO$RLqeC{yu}Pn1OW|UfPJmgayz(2xmKF z3O1d>&0a_R+uaefO27=^$X!l8;7Stl*uckxSzC6I={TFK6887T^5W&6#`y%u$b-(Jw z*d6B?zL-NFQO85yp`|b|l;P`ekTA1{-Z4$w`1BmKuH20Ez)i#uqkFW71-#_S5GU4U za#%}|GR%fgylPfuwgs^}jm^nK<fwpDR_}eJG8NlU`4C*|6)z=hM54?Dsh3UZ=0d|s zx#})))cMS$=F@v6%b%r8c7KU2qJfUvSk#fQY$#o#O*K|&Ys0XQ-AE6u&VDdvBA4x|?_VG~}Cd^ZF;YhxWpMNjIjRMwtj z^CiZ$BGijOS8BWB?NHWjRi5nQ(&_UBU%$X$t>)Yc6+ivW*E{ibd3=VrbUqx)dNo4yVUhS#lE$t^qqaj;{T*ZNC=I-Z<{){MH zq@w-IthveWcloseV!>mAe2-JA7@A5(rqZ(8^vOEmy&uil;!9PY}VPQ^A zj(I{iQmOR%_3QfH?b4-7`X4RKo0T@fk6lX7CXDN9V0aaxJi$N6ASR1kIjMQvOyPPm z7ZVuWg3tOP7J^xkp$ATEy2!l@Vls)(B3sVHHoV)l*auL8GBh7`pJ9u5r6+CD!c-yA!0Pep;UF=WSKRCFQRAv|p)<>dCy@zBlT|-5lIq?M0$e-qJE;pD$H( z8oj<}Gs(=+0j`c!5*qtuU-Il#w=aE#cCMlJ1Ct|T$q6DKa4iY728o!)-h9-XR^{R{ z+RuyzMjxP+m{-k>aatDTNw?~__6ZXF`1^G9VY>e6;I~iE#GR4)UG%XDq^TGa$1_e0 zbJAS}@UO$7Gz2i!z1V6mg4y3iqzzwP;P5l%9Q%~uO+YmW-IQ_B8=3cB#5yH|rG*4d z=fanG8XY^d2+H&N=@`B~!r3^SB-C@qQG$m(!5%dBp@n}bCN_iM%P22C$l%#uNXuv6 zD}-uU1Lf`bdnqhGfJTFtGmUD|x?Wjj+#+P=GkX(%T|%j1;TT3}skms64$immSxb)suc9xEWB_Gz)QA9KX-4RDgm)E+uj;iS~7f2;k~07RAOJ~3 zK~xT`{NK@uFLZwIjsDJ##%9h`GDr{P)JG*o+bTZ z{Xa*}#a_FU=ILhFripJ*pqs?H`0kt?BrgpMvl0sd!^L&##7LEzT~RF9iA=$iKD^Me zxOPtGGqd$Fdv3DExV5azf^|Ea(R=v2rJm7GQ3bFK!uMxV#_JuBtKiwcXeZ(Qz>3dy zE1o48T$J*yubKI1H3WNe*_q1{zX~cQj3oQ}9=vjx)4J=obmJ+(n~Z7`x+zcaHy<)> z9hv#O*{@jZ+fD+o>;N&Td^?VATAAUAS#+7hrfIaOM&(?ci*@@SSUG~Q%B79x$;py( z{61Hb$S*{#AtsX>$pD?}(byZI0Ew6|Ut0K6Ml-$)!OIjpNa1QcyQ4UIgYY^GY>t~& z>@X#V^Y@5OK&>IWfI=lhS~9*{Dc8MDf=^5@Y&9t=_V84(NXIW)pSvDNNY0wG@XtL5 zFE5!tdT2kR#HcDy@FmF1E@<6v-iois7Ucx!jLmB_+g{1~nBb2ciF|!Eo=!|3z`*9EN-K3fGb>LMoyx+&70w;XEm*k<8gJlg`zq~{n1=a;%+)NVw@zj52U#t zPBsVxJllj|FZ}gHAIe+p8Vx(6SaX=jThwwV*oVI1d@`JW?sMQW`SQmj-5lr~!la&v zMc7&q;%8K?zrd?qZhnTn-A$eBZWz8^&h1;&+kN0tnU=3QVQRzp3gPN(x9rOo$4^`H z$IoxHXsTO(ULc@hUH67{OBKm$G`zR)@Q2?XUGv!hokwXj>^hacWP3tya^Oz>ZebcH)jJ!IhPpdJ1E)^)8JnN<(syFslvk-(*{eQQ9nh z9QZi7;$eoN)bMvccM54Jp|vfJ)w}5v!be`bk$_mh#LD#}%U7}e9%qLeJ6&tqJdvg}@jzTsT>iWLX=;~apO6DL0{D+^ymFq|s?+XZ?wzyJn8`M%Zk zlFf?`nX-*HJMmsOf;@Cf{LRtxkbq777{!)ysc>bm)O+JErP zk@;_RE59cwV;O53^beD=rhK@5+nU$=_pn&#*cjWr1iia9S~7q1(3h5++B3`Fr+8u& z3gZX_On$C;_m?*4d{>5Twtf|l938|bXL%?mKu`UScAlW4kOB=6 zu{5=zy&WCx%xNvNAdPqht!>$o%>^m%7$>@5S%gT~p2HXyB<2>#0VlI*>8V$Y_TNb7 znB%2BDwmLn}BC7&C~EI-B8 zv1P}Xx5>(*T^&}BdxyGSH1aQ1B3OB9FTtNnBl^C) zY5T$GXM0y5R98fwMKoW_*Y&Me`+T!}f2TG(H=& zk0$j4gQa{lA2=4pR;?CYZ)Xm=nhmsN<-Y-OIpJ z%(ejH660zLGRA z@M;G=vHpU!PV#ll1n#u3~Pf@5```rXnFKxhSZ;~AkB&FsYJ$dW! ziJN;5U2$@<9Wl7o@IfsNG_c9cku@B!>ipJmwS;ABK6mbkT)dkDvk(Z%K3BPNY{aE@ zY`4>B`#qD|F}E+)rC0FEYii!iWc*=92k}POQ-ZfJ=A@y4g&mA)%04xcFgKppZ>ecp z@FjFu^kSZx^;zu7<$K>!jq=h}%unT#6kjXE0`k@PiV3nNNJ6(-)Uzw5^VkG#$oVlH zsfMq7^mf`Uk32P7vuSSoxN(4ySe3y!DW7@MO0UGFu~62b)mBbN=&;~*E}J(~7`U2M zBdG6AY!;KY@@e14F0mRLgRdzBUxZ2u-57?xEc)~Jn7EuvUt8)r#W0@NflCQ|d6;AO z@O9#)R=n5}J?&RY!6XHn^7!d2-yG$i>DZQ2s5T=>UZY|EWhVW^vWaD-`pl+zfmgeE z%T6rYc=6Q{;WH+*b+9u^N?Y4epOTi_xXVY0m%kB zdA@g(=<7hQM=7xxDyAgR&w=M$^!5lSbLRhLu{)R5{uMj?^VMw0W?K%eZ8<09BQIK; z5^DTCo7;ta;AsI7f`eA9k7jFM9dGGeFpu72!4Y;nvJ@ikGj#_?U&B$W9g)7D)l-58 zP^nb0v9Z3szBV?c$W11bWoKu5dwW;%{Em)}3r6J~xKj4@)3=#9l=0mvd3rFB)Qgaq z%bfijxx@QC7~0s_nm3acXnh2)P|;`shhNj1uV)6$pTEbLC0L1Q7ewzc`ZdGJ)_j8h z>z3Ed#Ygw77~$)wN6kwY%B0rUZTCpO~z2oKflkH*egIZ>&s)!!gM8+~>%uMLf} z^$w_z;7=FuMJgY7($_r7h!K!MM9CI{$}Bba$YSuAiv}?iZ4z z3og{L;LU;~H(gr{P4qzFTS{D z&6=Wj*R5Ok(n~K@ex3$|ZYl#atoDLJ)|_MUG5R&+!yY;eXiFJbI&JsUG0fhFOu@W< zbgys1*~~EL({pL@AxA$U(9;|{zWJmZ8x{_3RNu5b-7*%uN~M0`wUzQh<@cYzV2p%q z8B|8NzCz^X%ZI+SBrMc_(VS62p`g4Szxl75AANuP%8m(Endi#9m31$2-7&VG#Y)7Q z$rRn0&Zlv~5!Rk3YC1NLBDGc5*HWqGVLlqL5#jS_!yPw-;EZq5zIRZ{WbA`~s8 zAzyK13cjU9^i*noy}+jj__%ke6j$w^*nhna{->XQdiULTzxd({AR;27Wy_Xh#*7&{ zbm)*FL!R{148c@tzmvv^2kg7WvHNtZ$DWr7F;{WI>=KSWH+lO{=JsKP>1~gT?$;!m zcX!0ut^yO&0Nh+`&R$M5mEg5==>d^Q_{)-)zgn`lO}}|BkM8pEJAzlwPSok#y4b743mzqV*r)T zk$RG-Y886G$qFNXG=Yv>NF&zE*hKmwyq`pp5@4b$FS!B;!B%MgtzD5Z;*p_pRmP7Q z$ka^ppiMby*G7sG2NRvhF$&gXk)`5C|HqDclMw8}m|*^oz4MN5s(jn{H{E-0x+l<5 z_TGCh*`O$>fGCK7iUVZn4@Ci)f=od+$ll0m*{h|jwv^Jn_ez`b{?XE=ZIY%NU%fv3 zL6hg4JUKb%xt@Dnci$6CZA^O`?Dct-MN}4XIb;{$ZAKd_^yOvyXlfuV=cQ0rV`57> zI5Bc3>H;Rb?sihVMAvVV_&0*!qobocbt*CMCQO)c=FFK{vu5?_)2B>4{!M^#UeC!V zDVtYm+>atK4w0C&JW_LrOhZqLj?N7AX2S@DIdrvpHzZ{V1eS``nLi*@t+^!Z@l?*{@roJ<{TjchFR8@ZXc^0772ulS6z*08pP=YrXTKYY8( z$Mbfz=)HK{u(mVa?`dTCM%-HFruwIL&l)#vW841Ue>kD@xVPGx7?ldud_2Cz=gTjR zZR4r0BPUj=CSdL$(y|%7iUXfvTFw~K(O~b}yuY8$E;SsEsR9N#vEeaWpYm->Otk;m zc6{w2BcENtXsZ^P_BH48W{iBuw=Eg(QNblG=Gt9S@})qvWNKtR8R`N~W}>G?Kprs# zyl+ZhL!1>;yA<}NlPRIO3Q2Y$Lc$7274s;MM|q4lVX+mORbqD_E10>)bZf`KFg86Q zIvW>591XF^M^~NG!931kv^!rkFPmWRX~FU<{4}tvtS8`Z!QKfB*n*aN*~X0Zi#NhW z-=vFwB%QJTsjP*hki1|B+ph$w_xcU@r zO}-w+=yp)9ZBHR8^xJ3Th@ZX635m*$NzRW;$qxw43JA+JHqf>z4{;03=do{pgpO$CjxjFUsD=9~_{qW7%B#Le#N^k&w%e4>%Fd zL@!!e(%b^;*ZZ0O_};)1zgRxFOg{(awJ3>kREU5ire0xwD`n~QU> z-HCoOzNRc&zB$eHSNuJ-BwtF_XZ9$LN&D#EkR_#)^RGl3J5Ku-XVI@&vu5VZnKNh3 z95iT9mo8njwY7m$r%nwSGGxMp3AVPjKmPb*trEP7j4qP!Jdt}*+>0V4iO?jHvN6|V zKqF>!#J#j5xmMRrMFgK)z=aS*rM-IvVopEfLI@LDuuPu*X>~fs6o`pPA|i>HRDz<| zcO7>dTD#$4LpygGx027_a$EVS7^D}8rLoERshOhlcT-m#P8inHW7?SJJ|2~D$YF=KlYV|hFUSf=L$s)2mXG3^B503g&dgi z(y!rcZY;s!b-94-U41)(N&C4o6TNcAN4>ZZL(u#y~#>j?B#jFCGbMXty~VI(?O3B z#<_4DMWxFGyS+TvLuvQxaxj%7*7j6>muJS%E+VbYPOA`os2&9zn$QLrAwDC zU%oseBO^34)Xl9Z_3Olm6H}*7jfsf?>Ym_567EEDB#37T0I9h=PsG85miDx?$IB9T z3v3M)MzZUe;KdSlKj4Rpcv@jn+OwptRumerP>{@0S%S|Ok&wZyP_|#e{~5NXI9bxb z6jv)owymJWdm*Yr@UlqNYPx>!gKd93vN6|h*2t=%tNG}@4XqV@&(~15@VtH}^t12w z-8%J+qA~SF@Ic?OEBbcxnLVwKY?R@LO*d`_#%`ZuWvnmX#O-ab`1HX)Y|hq>Au zquPwS)(F81CHUOnf=gK?AO9TAXK^zJOAUN=7-@t{x&3IJ5&S&^KEJ`O5har>Ty^h6 z^3h@LeyY&%dH4}OUgFC1lB}2i2p%9mKR+reszHMWg%*4vL?Y4Et5-upLZ(igs^nNz zP=?^klX{+rr}0Fl6Oqb|S6q9ElPLol(#{bC7-`eUN{#_k9@SYfE6je9YrCHhX8u{s z^jO-jY*D5XsLt!5@mzn-%}}026P7@F4wgoE+cT~sLt7O!kS#_Pc)F19t6VNGv1sdm zKk8{%^22BG$NmoeXl(P@@3q#`QK*WeZsD1oBeeCMoe{cD(U^K9_|TULL*8AZp`kW* zXq&f3wr`-F1QduQpZ;*+uk%mF^|bnUn4PPgoCE@il+pA25;OR50&QN`M-<=ZLJ`Av z;Aq0S;c}WU)Gy5gPg0qC9Ty|kbV5z=uOs+EQJ}Mt?0ClR-c>xw`a3llM7fG!Rb_1ccyQ-WkACPj~}@_ z4X1KFE{dPE3A<_0fH_@@{``;N>jH*`hB5Q90I`IKG(wVyP6x;>;AsK@F+5Mi(-KD$ z?2T#dKsPsqCa)~2xiVJ2r9pHCZCCUANcuNa^^gjwJu;cUZu2OT$5DjFVWLkbFWP(3 zr~wU|wzV=rd-V3f<9C;TH+uZ=wuRPwY+}~NeGj)Byf=TM(}#oPEaajXzkSzPaDZ6@__(wo zD2^nzfC;B^{`Om5Afa{I7if`694@a;VPqUg_hB=|QXi@wfqD}vu|aV{7m9o)@v zFhNa#mO9NFFtH^~Y)h3A6{6lP8|8>h)5 zt|Q)GFU%{L*xL%QwKQ1xNvDZJeTL0A9GQ@}aFTPG2$6{9NiGF3fQ*mo*9M8%DQt_I87Gx99MT45Aj=?PQ_gEy=-jzPJk z$(ELwX>%@;{#B|Yyq8Glay5$ejzVIVW#X`W9822>cXR1yP{QujIe9g)FCII6mdZ;< zErx&!x?Ou&l9)|yfgBa^I>wv0y44=SQ)utR_x-W1*LtDqSnX0N4`VnNOjrsDSv-hl zYCC4Cz`QCt>6lz}K-J7+pD3nNM1l=*+d3E9do6K1^FnqiqY<&lc=k{KYWy z^0j3Opv1MVqM@%m!M=P|ePd6%Ki7RY?7g*ZTFmnHYEWp$yE>R$+CFZ~oTCHhM~v*_ z)y6)lp`)IrM#+-n;N5A@!pu<%0%i~3oi3$n=hOsz+L=o)I3L1LZ&jvT!%!ZC@;2kM zrt~?^`_}X}$6gzaax1A6k_$*KATgiBd=m0W)+g_^P@!%%)><^yr-?x&(yi}h5SmLn zW1L=xJ~GAVtJj0l=O{N;1>$Lpn*sr8MYx^7xJ|y4 zuzZ^6$QfT}5%*$@vgVJ+%(>2&&9PEY!WW-~rP4LyRs`mH_0R77+X#M4v$C($tbtw| zErg>p`0Eh`Vq!9Qp2*`kO!esBkgl#+8PLp5P8^{+S@E8>NTo%cYO5I4z@;P2Q>O}sG!iMZ`;`L#81sv9f3A4pZQ^nm?Z%3ZrN(HfBNUa&;*wo*Lz8%W4{L|l(S()b-x!0hRUz0KM5d4xSJ`%l zVcr<)Vr4*ME4-|*Gg5d+b*Q}R498F_#|rN2O9?U_Wg1GNKFlO zN-O!~7l?zyQ$JgF(ZW=BkX!3S*^*r*a; ztq_$W_)q>KIEk-%;A_i)05;#|(zK%PTPi+-1rn0;$SY|~fq^Dw+A4`KiX=QsBOr;V zsXR;Lej+{W>10Dw3z}P$BKxz+^fDt;T*8ir;u&ELus4peHbe^v&7rF)Vkt)w8DXW; z?n-2_`RF5Q>6*%cY-nQ^b_FlM(8$`f+Bjp zo6D*sUKIc|(P6q7K2@E34Vw7Hzst)E>tUxjtXX^a}bf2LB&QK`deOZI)lAuNT)pQO4-Cfnlxiw&$}y*m!|&hSS~yB?|8O zB0}PL7|x4$UL_HqPJBAKLNwH|FvQB3w(g7_nr~}fRW&;mAe9pIGW+=Tp!%yEOk$4X{!5p zSe*QALpoWLw{ z#AvCJBW9E}fIz@^VQ32IY6kEyll~R}>H-XFNM&W)Gk$tNqt_};A}P;Pnd!?AXH39E zgVmjAzF*lHlJgjTh5=4|*7OZZEKmilblFvRsjHR1t4tQ&;c^UCx-4kLKqs=aaMtBf zGA(7CPw%v#@9**nJ|mBVkMRGb&Zb-e{#^uL?-}nZA~Bm^uHa_QS3N3b_ZqR<%fQ2i z6JK!Q5o^!#6W6x>!@AitD$E&Usnidu0ck80j6_^6`?D$9=mk7}UGz57V1lmhL~O zrK!H=o8EILwb`)uL8qBdx-`+7@s?fNMn(bw&D;&vPGZt;9QcfuE{ybL!wts&$)dhg zMk1)}BT)E2$v#%a0}emJ)x1;~a$z6ZuVI)Eom?vMi8Tdt9e!+A@~3RVotl8*RsdI1 zi4~&eh>0e@xDcPqu{&UlP*M_%&nvAWm6*@fG`#ik)UQPEo9@p503ZNKL_t)*{!9cb z12{9Nlx}}WIzQfLLlCKX7;2Dri!O@qWs!twSLkfZY@>e|yT8fU8B9bLPsed1jzxD^ z7sNapq>x=&g5KE-ZA}7VXJ*V-Q?oQtZ}|JMf17b7j3hp%`XRn%)iM+-w8Y)o*m!pWkfL9!y`6>u()!?(Hch)La; zI|x&^>e9Txs@++?mme=Zw`4}=9&Mc}6t^jlGEL`tkN#!ayWK_%Y^i9xa@0tYU4;i0 zA}u55r?qDepSpkR^f$(aMTtOVI?-k47VJ3k=(l|jT`Z+rzw|OQ(g04~N}0C&$)lgp zOF}4O<4u0O#vkM8=v>+96ruc%x$qfzl}h*DIQc$}N_(^aywAP>j!k;Aic|K#V6+>+ zxhQ;0xg5>-*SE%@Fh;m?I-(@4{lE)G$<(1mWU=f%cN5VNu%K0GWm5&b`^1EIF0iW? ztrfWXvkJ&8z*e#ALL%jpYs4qBrLmkO#D6GiN+YkzFz_TJAK!i4AB~wd5-A5>@Z}A% z3Ygb|kA2XUF^7M+kHDA(@)QgD{?34gOqbCksmE?|{}H?#D5~nIOM(Z|a%s4nRYMr9 zLg%+yCHR^`Y#K`sbKwzpHn%e|sFwFgVAbxkWfvW7jXqOa@2&)82>!Pnm+w7#_5087 zR_$!EoL!-TUQL28#Efrtr>14^SpB}bjBHIAniq*B^H*OxaxwVKrqPZXPl4$__+{p@ z?IY9#h$FfDf++{NH4{@6dVZ*mImfXm9fkx%5+?7%!;<;E-YkL-NakT8I+|z-c*~W$ z3B=_x$O)mCtxx&LhfC3TnP8_+W&u~C8RRVIBG=|#&Q9WHEq*)OH z!zwlo73kalbs@yb&Zwogs={6B7M^N)=EeWYyc-sg81yu{$`-tujxiugif?< z;!rqJISS7sJF@&~dvt2Jb&uc5jpv;mEZkj+j6rEma;aIV33|16*3?k{c*%KhCv6v7 zonGzix1P(q7?9V|69X$;oe2r!uSe)=p|4$(0ar~Fh*@}!kJ@AZT1zJ_mlIF<>J(xr zzYIoGz0_l+1clFInSUxCt2%7-Xl8+rSy4pXP9Hr@E<_QQ!9ZtpHE=QFd=&Q*3D0Dh zYgvKSLbw_6UPGi(=J<0X9yI~h1!$>}Ehavn7$H~F_%e_bA=`S;ysCYof!!hO3E`KH zG^k)P`-dStQ>9_XHCpIz;E9%b(Z518F=Of#^2Ic>KvRug_IMaG)P<35n8{=U8fdcY zE;BmHS&)si@e3zMkG8%=w`)Y6j%l|^*4EZFId#?Wp9K#po91QAjyf~wFNAO~kV~N? zW@D*O|Azd~UnSAp@~F_zSJFpL^(K4DKQuX$Zi|^eqNvLpRZX)$dna}7#+bVY-qq2r zz!^}+SeJ|a$L<_G^YG90A67WBQf=Z?KUVp96nO}ap9}cqIeWbfrLg@G_zxHW7;{P zA!8s0#c?i}kR)O=kV;WgqmdQwx52GkM&tCu#AI-AA{uJMWU%Nwr=HTmnE?$M*Bqr1 zM3u%HfY5aACy^^E8Qj(i`^4&fUR|L=3%)jNciECfv6P$fw6!88hoyJ99>>oeO2u5t zpywI-H!SO>D#X(S#_VEDQ@-kfn&3aF+B(5Mm*9&bmJpTB)I&^e&FCt19exuC9=P*@ ziR-z%0Bd8YMjhRxmC2f#>dR(#H8)Y_Vpfsh_a3=@ctShtrvF3Kya{5l%=t;hCi5p{0(gHf^j*n(|4coQ~iN2gcNc=~!vh z3&HDq@+y;bA(2`9_<;0$^fj5^lE!B259L`JTe~YfHr<-0D|q@jM)GR>l5-gMC%FYI z?FZWb5q#~V48d1{o~x|lS+h9tl!fQGI29GtT*^WT!7I{jkUOCIAG+i)n=Ue~7jp(t z*cYY>G@qf@{Ig{jPhEM@qOr|aQ`&WE;UG7Jp$fr2ejYt`+NPA$EL&?6TPtHL3qywn zX77#e=-_>F z*!L;O`*90_Z63tYP!;G13wR@mA(7{QYlBDu>Lxq_ceC^ z_&+#&#%s@~Yhuahd#Zkt<=G zd>{KdNe8Jc!H1-CCxOe+T#Tln3EJwU=kqF)-VRLnp^0L>hq^@J(v+IZwU_8LJcO$K3)mJ;GCn&fvwovfX2;C@v5Z$JWdI>Br(xyw|l_ zvUjn``Nys&AH7|0=TU60_Rb%VZ_(1*MoHgTRS=nL9u<=k6Q36NBq8PrU6~~&BPZ=4#X#9>{#=D;h*L0c=PtZzS`GHU&d?vC@j10oCjg6(W+8S zgWP?CF`*Q^<@XgvsOxzTbv-TUBsWrKoP>V^#*z&5jN>bQNL#`o2iW z=bV5Q0qp8Uo9e05)d)0QNzS3sPc*W|LZ27O#Ag!nB?hGz4OPB-frJ(ZIMC-GV8Pb` zf{eKs#ls}-CDNk-Z+p_Msh#Up|Gho5Uo+$pyhVp! z!}hc?)GambX7Bm^F&&>OOH}GV_1>W&gmQ+;-kaa6=y~Ee1(NZU0%*w%xE7wIvm2bV_F=w9h zr%z2z@*j$8Y0L>@q9?xQbhSgj+MQrVUS)7&K4=54mpDa_!+%n>Zz3K|DS7?{8)e>gZl}fO7-mXRmTvH!Kwu@7$1cfmI~<@>{pUHE#PD zzC6WRe};Nfoc?I2O#>quS<}c$j+^Is0-arWnS!n+IvN=3V4_QGrb+}~DJbvtQooSR z@|oP4(Y}ZzXsV;yy;%yWLRJNGu7zUo)if7J!Hg}_gsztR5QTXeecuGVn z@0Ip2DW~~*!G8oVAD2S;-~jV`vta~U>iiu_U@XCjTnQsClk9x_KQ0yaeh|Zq4%iy8 z<1RLa=xA_1nx%cwP-oYDCbvc+<0uiAcA7j-WYkWQvT0z1r2%$E*cugOFH0dUkBBt> zxJ!5{y*wDxi~;hVSamf9H)h!-7Wb`zuYW(9&?IGv`c3Va(1HVjRAU%&x&iGV&IsQk(psInqjgMIozz}Cn55y?CM(6a8 zf)oxXu;Ur&LVj#l1MCh+q^!8grkngRwp1PIn~8rH!K;`CpOnp%gX|nf2j`+!1~#go zGl#7qwnhL08gf2_A&qe{D>9}{bx6-cPZNo>C@QH}+B@WBN#N{?C!dnT$)|jMnv@*g zme<{M*#LTPLQjjiUC~fOD&=w*O>7i41}#Ls7{8aav@aEgc%HzGSIP)}xDUgX`u!@a ztQVioPsccTiv=TiUvX(l)nKTv)u&^L0J=%uLl--IOvT6ilaJn!T)7izZJ{3>U$M|e zv538qq0Z^uvzqr>BD>8E{ceIq*Jj4rnreWzJ(m|SbUB*pyxWBe#rTCHa)pQ`n9EC#m;K$H9GKpu z>;Q2jfw2tRPG3(POyKoXIZ&5jmFYuMa`_{LT|(X{JO1AlgD=dY zS5ELRQy8|L2`%`dTP03@AdrC#(bM8!Abq_s)MnRxCNxJN;E#JuY{`pcBGc&RMovDb zo-wkj;h4wqjNE~f87&%MYlxc#t?WzU1#y{7IY?{v|3;Z{Xup)&VjU@Y^`5}nS%J`5^n>?tol{x8X{E}#m*XXn#y4YRv2 zsgeTcVhM*Ik(Ez#J6g5_NY3QgebfbX_r}2-;PMk*C7~u@d`Fe4+7#^pMG`KA5Sm16 zCQswJ8-=<6nbIvH(-2GO>&5QzM5XiPNer~vIvU{f6PydCyBpp%XsBVRO@WvdSDDnB z>E&vrDuqg!?CCl5TuOn6R&F$Pq=_SKJuq;p`L^)_t9Flq6Wfg0ac$SztyC7ZRgPkU zmrA9r`z>9*U{v>xrJ^QvL-VS%q?1ae4}&5vUV9qwB=T-Rcp)qwP04@GN9GPX`Dk|8R_*#JJ-#?iSnwg-q#!9SSO z4>)n3&|fjG3>Pll0WjCO5{J|v0+U&IhnQ@>YhBVsrVz<_{1U*;cz}>JUcUVgaKn~I zT@rjTRac6kYnI>*Jb97M{M!Vj(9e;c_O!FcxT@JmCGK5fq2hYdQV+EaEd+*oUFsRi9xMzVFw2iA`nON2Ok@zP+vpYtL&g-+F6gpN50F zxwZ7RF|KlK6DVCqKYY^K_s4f0)LTw4qt4RqRBS$*CoJeS>KAV>yPp<}D(pd57;)Ho zIB?-QzhxiTkLy`fA|{bCXSv`0n;7cQ(Tnz;nCcT4!S*ZcnL)d9i3)C?;k`q$RNhw5iL}?T$)>Vh#Z|L#KRX%CLl*UyoYL`VBf)Gn^{U5u= z(^+1d<2Rh(|6MWoLMVyECuE_giAeGWZQCo1=%@*>&@UTkcQ)h1WUhx3p9Rp)sp$1Z zeYq;LeCTM<%cJVm^Htu;jB3a5Us!#H{>@5?;%W~wCbaC|+4b=G;3XTbKMGE;wKUkc zuwRGf)u@4e4S_(Akfd6djQWO-w&uw{KmBsaLC^MI4nY!z z+3zo!KfOZ>i*PjoE5GQp5}w`n^MB5b5HfOU;vk>h0c&I8(y%olIF>;_G5;;BjX8Rk zkt;bpPyS@A4Y(Omo8MLi^t7j211?3Ebo(xl@W*pDJf^oj1riK3>w?{DR&gsSk5B!0 zuVJ-9&T>(qlx*RES{0~KgwwB>(wG_L5S~N?%I*hc3H~3^!1Lc|!52dAa}|=r z+!I8m(ZLA~HF|l<3Ad<-I{5kDkUS10P;wD&gs|I>bAhC0<7|nOB@X7e+c2OR&gDwh z%NzHSSU*K)R_+N9OQgSD)V}dB`p@N6%;}P~;IG~c9{&U?7G;@|S&#*wcZQ$-K%w-(=Z-}t` zt%-{5Tniyf^Qs(}DPdy@_j1t^ zpew*jo3SR?YN)hbIGfDUNKOyJrg{kzN_JYALK-b6Xb!S1FH~RQ>(PRLV+_?d10EI} zeUJ6SY3+cw4Kt7METO*V^#2s?JyA5d{2qA)6^{he)dXEzI|RQWGsu#>)JEr->7;Fxlq!Zt{4V7_&VbII@jsfcZp0!3c)eV-9=C& zpAQBF_PS8S#tSSzjc#DS&^q4I<@tfHKq5&8Jo}UovmGw;%lLW zU3+$X;h76R#nRkx<>Il5Mw%Gui9`}TT`gob02=CQ)5bO%GX2nx6DwhDOzlO#W_?jYyS@0GEnsexue8>LirYt-szuV^jZ`4v3jJpX~>C!2$wzBF9jcHkP zTr4HB0B3o*Y?XD_XGn0-DmvBeT;fD{tJX>DY%)R#U28cmAd(QBj>SK)q~bqJKvgI5Pqzh2z8E%UXlp@5GCg%k^Ku~; zOBSyKS^ij{qv{_?5KCLVAF?$C9voqn=bNE zFSbrYN0VEje7>vnN57s_PQLusL^XoMT;g*POEA(Z5>3)lLr()BPfVT|KwBLn%^Hv_ zRUNh3;L22+&~(;DGSC8-+G);9X_~*C%c2Cf+hbFXMk*VL_tEC}6aw=|6rm~Lduuv6 zRd7h2gl#eW9>>m})lE21^t)z4X% zQF&nCgkR5Hc?|UF>b>pP$yOFcYBjRL^@%At6Tdp~C^+f!(biLk*cR&HR1NVd`E5RW z@N!j2_@wy$S#TBu?NVwJ)r`Ss6|gUqEVTRAF4@Kv}PFEd&3kgKueifCs|J8K%qkq}xl9DG- zO~AF63~sFIIctN_Q?l54ne-e02XlNKY3?FN*1NK()Kse+7f}8wd;D2>ik~Kwd>u<8 zeB0Da;oP#L>^KrWZa||WYex8Zlz>l2emc0B|v6O=p1E9QW zseyiJl|!XyUik(2b{~4$d_Anxi`B1;&&Uz)y_m54K*IGu-?1{U?qVR7kW22bI*X%Uwna#5_+VD2^*(9DanA0VA3)x2qi4`C6(e5KFlf&GB$v zW{{MJPz;bFq(=k#IijV;-9+|=FwO(>*HQ4~JPwC(av)BIH4xyJC3qFL2(o^KR3R$@ z*c-yfKFq3iPfpq2NGhev27Veyd!^BV^6S{X8+@~uqo32Hwfyz!@*|O5uZ{m%@NYEw zc+$h2uTJs#3AT@^hY1+zqN_Di(VK1N5^j;KDn7b7cMxcA7dYd1sgJ$e-xoua3! z)vvqHnLVHRHhv?oY-#lD-00EeMSmW=`Rqkpa9I3z%a5*HJa+UDg~E+(eeK%%+TC~< zy=c|xZ?}Yx?O`=*WCKeRRRh;I9%s1O>1e3SNr`UbNGDg;_}73&vZW68`ur5mY$w_p zSEV#aM~$9lT#2bIA^P+@cHHG$Fn1zxGR4P+77bW7fXFn~U8nyRj!mj=uO=0tE})k^ zy-MGz$$1503ZNKL_t*dlW>yPeV{I}K8Rlf8R9Hw zh8g)>jv-YD;A>9v%KPbNA4gM-7L`=T2#ny%-JJajulf)Gs1W}y3;tBEENeY1RLjql zy8+M6$LV{L7FB$BZMf)j^XdIPi$>8?UZa)wOJD;hE=5Imr1bc**m? z$-NFWD0`kpcD;XHegx%bnp)8GB?h1D50W-F9bS^#)3O$bhS@3m)BQHtF<=1NXeRValGGxnb z-fvUE$l55A)78S<5Jg)uD`TvT<(DKCqPsVm8gyGkW*(aA_&Ctqnf}e_)|iUQyDEl~ zTs#%8fQ}Zyu^gRCFQtp@H>>qwTdEnUHb;~Bm)u#O? zqM485gY(~=xDfEy$@@!I92e$`Bob+XNbKrl*{_Gs2je@tIa?Led_x!WpXPRJGv<$( zZ?`H_9F>_XK6g9y!oAe%0rAl(c-hg?g(i-S@2KpCbT;FIHvE2zW##e~Dl7k@CSbe= z<2?w=;E(6@4WOeT11#ubf}slcc49uKliA*~;*pg?XcF)4#m<s^85Okzl}Jg4rEMK0iQpn9GDuw729)@%01uqhaO{Jq3 zyJsl-QoAoC%-bAw|KNL;l}}Gno&&E0!hF$*^8ugD-#esVvjww<6lb2-C2Glnmy67- zypXW?{m1X_I(VaVTaWL*ddt4r}CE&ZVmWRVMXfoVgS?PQ}hNg~-h-SiSkes!iv&ten)hX^~MA7@Royo0E6eH3a(1^b?7h(vv|g z(T)cYNl47b)(|S{p;`1F36uAelEd;rB{pt$K5P8B5f0GEn%P}S8X{MSGK7~eAtIB| zbZ#ebF^Z6M?DT16iJk@#S=>&**^vH@40WNgse&`Aj54dl`s+N3V}pW{Nuh{N>*(gj z5BpeWx*Y0+A+$SI~g3!<#IIsZxvbd)2`rQ%$#QR*@D)KV*L> zA2w!Y6ZAFN`i!7tL{hHDlA6y5R~EHKx2j%AO;=u}a^n@NuHkCNuJJ{bq2zvEdrwRr%=i{x!rD0=IWR6##=5@8z zbhTe+Cb@TN>rQJog-Y**cpSx*r<@I7-X5GS7|@)KUbJwL-#siXo138o$MQ6qJ1!|d5Wao)jpHW-;XW%`c_ zsH?Gg6u;kM;1;^O)4-SlF^2-_;>M?)5ePUROq>`|chK(W12T>4)Y9hvxW11)~k$n(=KL0O?Df?^>ZIU}|F;n^my^ zd@%~bu!FJ980E|0ZEU{96s1nzM-gnf#M!T^_o=mme;2{mEGD*Moj;>?;$+H_zO+;! zhr0TzcADypYR8(hd|#WH{1t8*yz%q4XL@f$V*H+SE|7%>35ukn7d?HDO*^|0%*h9| za>dJ*R<2AR+sxZVU)5?W%XT}CJX*ZLzjI6b8++b%vQvpPYKqzmVW6+Q_={oVhqvu9 z@@IQn(=P35^5lw8XSH+6A(2Q=T@3u|)cvbRzJ#Lv&BJF24PDKFC*e6>c4(@X^18RQ zCn+0a)$&*iks%}{hZ{3E@|bKP0s#jm;`=(B+1-sPZTa*V+wZclPsPojl-sh}>Uf#p zrE+AgIvCuTk$*6#F-^;bW+hVAU1vtex|oKFc$mc4bFA)+mkC*~8*n^Hp{G3p5Q;ew z&gEexwR3L{Of|6A=Xn~7+fWTnCOJ@7H68U)DGXVTx*9`UF{&+%TGmz@btRD7 z%q=UAGXeNNMu9JxMJhEmcC9sJ2x8GOI06T?Gd~xF8U|IG28a~-?;nY@$=}0?zW4+ z7}mRM0QN|yB162Sv;i5cw&eE-d?fgeohqRRN^p>f?uEMNP-2`^tIZrkVo;e;-qe%MQu z1M677Ru;$3KK$s*ol_@v>(Q}clg9SOhDGJZg#`cMf-|~08mqtVB~7^LAC&R!hQN#8 z79Cig=2ay4C-JVE7Qm<>t-B0eW@@ZAadZbohZLi>yU{2@R<>}` ztgRRJ&u!ksvHZJ_LzDi#9uly%MPU)Vx3k{UXfkst+ylsJ7*}fZ+Sr;qpH?(6AtDLd z8cb-xTTNK&Pxs$=^-U!{rM_UGP5*{i8#4P?(JPwjAIIEg z^t9)27;6H_EC3joLqiixwE#^6 z=23KBM_1QUDb+6%XzGM*Md2Pvte+%RwS<&fz#BpE4<0<|)TxuXx%r?$gBmt$Xl7<6 zl}gjn(t?A7_wV1oapT5Imo7DJT3eOJX}JI*30Xq&MC84G_5?au8)BnENt8&!xnQn_ z5uAurTHV%0m4bl|-;H2g2j=hRtGxh*y0mqtjT?hn(3G0V!mAq;(uTmQokSwtc{E5} zO<-zNm55&%d6x31j*0K$Xc>5E(dmni_8+_R?XtfzvT_aebpS0b4ShXr6JtF?eI0#0 zt*mTe(6i|8zZza_>pM0uJGXE4pm)~%{^!*;&0U)}actVyzOkpBy1K%!VI9+aR<`i_ zUr)F=T9#q=;_JEdSkTCB7R9NNCI%XBccRY^?4DU7ldL+mCuOtj61yKTqa!mrk(|w~ z2wtU;lud2{fQ3FTW@P7c>@oME(Nd>COiy=udJvtCsGP!m;fk!JuS9K___CjpTfog% z#AJ||O=>RrBGlE;)g(2Sz}OP02`@{!xbfB>Om0nIFO2JCo)tn{ofQF$_29$C%)iZy zYuFpGs0~hr2*v#VgtmvUHvovrVu&;D#teVL!q)V0sDHnGA+E+&Jf>=}(C7R9%sI}z zStT!uBxotMK4Oyc{e#kkiCxD|m&f|>v=b@a5*Rxi<+l1PcmBqI-NLj(de z)UYz3u@&u{Xl93&I#LKu?WW?#)hyY|I_m#AeSh|XeO=po zE&g(tV*|7Do220IlwR-ey}i!I+N>mnQWER8@dC?^aqeq86#rIby!S#8n{Kk=Dx;b* zp#^LGIU0nCE*+e4GR0EANKGsuiAs?)zAJ>AjPAU%(hPr390Z)=A8;8g7(UUjIn z%m(7CQ|!D?Q(GKOvCzj%7hO$+B639-YU61^^9ESF?qMMmar_Af0=f2*mJOKOjjk2Z zyoy$PmA_F&K8d-w83TwUgk|7iQYsxiHiv{904u$sIQRJ|Rt6A~#!wgLG%I?sUT8ke zj%ioODqwksqMGYoSwzSvDiFFJYQ?PBaO zx_-LJy%7X&Y;3%B>(&t?M#z2F&(Cl0;K8Y>sTH2*%9SgVCr?)NZg_Zj+F}WiDdfWg zJdWq99`y9UT4{-GZUOO`03r!-nFPji^A$nyMFxb6DQz7Y>Vvo9O1Y|0`|}uXhBCZ0 zM%7TL4vb*!SuQ-{mv z4ql5sA8KZzLJK1qRG;h%2|g($>#fP_a&q%mEE-c>BT$~;*X_Rl>}B%m4@-HpB(Z)% z5xthOcof~e6@E}L!G|St{0W-qZgyo~3U&*iMBIYNo|JJ*lQq0kq0ImFn0)W5i0tf!~v-+%wD zh~O_?yy)enlE6sUu3cZec%kTBLqkKz0)i6>PU7yTDv4+5YU2D_$i>})PA*KZID}eV zTzv*o#&=}j4c>lz|45{KwTBiK+ZzjYN z>5a!3lb7$EI;PpIiLEpgd#(SUp`nNEmA}4N@Y4~Wt_#KtZLO=LWn*PD<(;lN+BH#~ ztr}KtJm=|VvuXK6HKnU#$g5OucMA~8zIZN>&;G#Mo)#4)$vlkV%agoJVNfGBjV#-+ zt6tc>#-XT^N(po|8R<($7n-k>6Lk1Tz*dj>t;iGeIHevwJx9#S2)xZI(L_KfA~KD{ zY@*V5o=9Xmx%s5#l9WwiHu>UGgQZf;^;y`5p^c0B!58CMG#(1}bI1IXn>ryckEO2h zMiBhGdGkh%8ujw!%aJ2THfq$!)YMcU5ERDXj~qF2^ytxj`}Wn~$2piFfYG~H+K(o+ z<^!&dPd+Jwx7q+D><%2dMa$RA=+&pRaOMBlyUw_#&OUmQkO5(ju=kcB;6elymAd!d zTD4W%s%@=W>#Wu;t=0}lt$Wrj?kysMpfY3#viF8S$WGo5K}HB62?6PA&j){Ux%at) zd!O_C*ZJF&Jy#M5(Zt_QH6Jjy)ikVt8vQbNG=-oleAZ}{V8|u@4-!}8J4+n?djuS&1 z9`$DTfqR=*jh!*R4}s9(*&G}$|KO?cr&rg?XLkUVOtyiprWC=iJAY$X?a?%@6#q?Eu? z4<>Y2>cQE#zWtA(7L4gIq00!X%Y0GGYj80d5#P!y07Qc9J~3%U2>A}nhhf7+*mZKB zcoYBgcV2JZ6H#2wlKKsaMD%rMcsVmxEwByjVWp|K{&-s`DX+WoAnoeI^vJk;x)z1a z;S&f1XIldYYyJK`tY?k!=m@VsUQrFdh1q3ep-XCuESvJZgzR0N%v_!77n>2$Z{{sO zWNfH2bYSaV?}(pFYqpl6NY|uPR7-b#t>wT;R&c6i$=s@e z81@%@b~bL|3*lpd06UCwhp#$BLZsv-Tic<7uzeJ!`QYPo;0iFeh4_5axuWI6>1K){ z&am4C8-0xGhOY;;k-gQ`kXs8KGPLucU=?x_3!i4dTnn3f!KX=I*K!WF$KuQz*y+Md z6Q)`)GlDJ&00;!QzFh#(NHC%wX~e-Pd~*7 zUs$&ynO$861LXp49fdAI@Bl`R96562$jZvff`Wp=!a@M1rlyvbmWGB(3Y{wk4I&oy z2AhYU9^$}cMUPT@qTJY@VQzpUOQpBhvN5MW09=ShB@4w>$S;SRMI*sC6@p_mv#Ah~ zid84@rU+Z6V$q<+?Hv()Z(7(U!IKwxYrZ@o6pD7P8SK+SxI|Z*+9vrai}c*84Z9!T zkIEj}&wfrYW&biCNw@OSDt>AnJF}2;Dm3cg#rP|KOww1pMO0geO(|Ks^HD-tskT-# zUpkA;A2--#_gaOD-CILIFQ+j>yFZRhl~3?$0fnqlT3%Df<~20El`J?~()_R>hb?=a zOz-2UM{k@oz8r;VyK!n6yxa0d>QM3I(`H+0xrok1SSA*n1y6`o12NNAMVr1UbHBrC z_?}icH50=Rz)}xGTJNDJ6Ms&?uCaJihOKuo`xMU1>X=LH7&z*INIUo7K=((;V+D`N2a6dTP>Ijs1@v==AVe&IcYiXHH))LxO1Un(v2^&KYor{gP@%s}j?2XCYVbF!5E6Tye1gB?V^dUrj)^?J= zlvz(9p_?g=Ohe!wI2er&yKvHs6bQhse)#ASmV03sVASFzD&`?mA1}*rJsSWn4~Lrp z01UInq+5uu0F{XNa$Fh?ceTo!HB9)WEa=mkvAdjCw9VN*>J6T}#-WXUiCVHfEn|A% zs}oo}L=A1Y+lelbMc+ASP_kMQd^oh5YB)OIf}V{P3Rap_*#m-Bir zndVFFEcaq+R>hF{$4;zs3-oH6O<$(fW)*RAOStI;ob-Hlei^Tzj7uaE$QlG~O%jPn z(9t3R;P6Boo~W87kkndg(TKV_I$D|<0H_oV6FSGqQnR<4&fp&U+L|(MldIQr=h2wo zPds10Bw+DWUuEy8Da|LP7W{oO{NnW&bUO9>wG-rYpl^?h9srjoICAF6h3hY#$7PQl z?)&SOX>=_aW{$8dRV>E&JFj;ik14BUuU{N6ePlO@bU{ur_k39CwXm!=Mc6zUvxDSa zfE?C;n2uvFaQiiS+hCR-#(7AmHMNFLw%X;##g9J6{z%+k+|13c;4~t6I4LEVdm1L% zI5`8#DnYzM2S!ve4!_2&oO(SR3F-u>;6k4Q4@3AEBgh;BESlxI*Ya`Z4XSxq>;bJ7 zbf|I)f|M;6SAeA#>U~J6P3b}r!jf?*2H~$!#>Bow7%@!t>?$e@7mG3dHyCMS=NwQp z-eng3drk0FY>fOHy{xf32==Xn0y>o7&pgH2(-`cDjT2$n`~r9ah{T|gn~`)$C7)qX zzdXM4ysEH_YotdW>EC!{Clfr2&EIu2=8uyv=8p4RwV;n`x->0OR#_MQs_1!Q5r->a zvUozFh(^^2?rq!K%ba1P1t6!885vjb_0C6|=a|n7QNHd~88ltWNcgPHo%4!nf@Yui zeO<`N0m}3emQ_tB7Kt9@S2QZ$N2z&5HG>DP+>YUGrP!_ce9e zN5vP+|K|FZWkD0VH##Ckh2cqg7{3E+$6kxc)B?j$9=!eoBCY2(1074Ol9l*)~7^-B0;&({!60rCv%={_&<%!pSSk9m6^_fp4LG;k%^e3gVxIe{vAT)tDWGMT5|ql5d+dFA(9U z2ly)rj>d2{hN}sNy0+Sl=A9FKW(D>|A~GB4<=7B{MJ;-&Dm8&f9?q$k*mxT!XUglW z(-QBT;MI$UM_t3kjz>r-!AN&Z@RD6|AQO?<`0WXza&T)A9E||Ee~ZE@JWRyPEU&%K5Nkuwzs*Sm>iJ|7B z=-e42yL~v(+nkWxG>z-ud1(n;001BWNkll?E9^xltqG*%g|QVj=!FQ zHP;dMxuT&8{QnaCj1!=0V7ME0hhv7XLSiI5AvWB?)nt6pAJcuHNtW^aQ}VItJmRvE zQw9J!ni%Sh9`?}I1ONj%7`pJZhJm9(lW5s=-m-n|elUA;64K023Lk4u)wEeQWuTciH=~PV`nXJ)9B1Pzf zwEjJq!Ps%&3b86t7JYKN*5|0k2FT41V;2TSnxGmJV23td>~!o~njMljKaz9uLn z&?(TSz{a3HeMY{UQ3d*^YT)2vJWj#d)3_avzdlm&MmiJ{njhNFf8Uwd&%V3!=lTzb zL_%&6^J#3sKR1&#X&U=JH6Rj70l5mm00063jutdW3mQ-bRH^FbL(E zzPHjt+8SI2_q5VYk@#}xH4c&2bBZ>X=S*OfY2no{9N8@;8q+o zi1=!Bmouf*i1&-&+kBxZ4p`C`^Liqs1O-fFRv@JW;hCuBfF}ft2PPK<)iBY9sWuF? z>O(=c23Q^hqvmp(Dx3R3Zn(V`!CUa#Eqpdq(W5#U1OkrzIC|2Gi*_M+vzeY0T2lKvhqxqC8`!Y4pS~{b#MMNV3BDy%6S`>=TACCtPtdf-U4wI8 zEXLd~jyy?V&KP2H=Vy0!Mm@WW3d2jPao_zJTfa##sXIe02aC!>w&u; zwPEX**TC7lRd!dwDv)`|yPcHYFM@9qlFvW`@B}=mfH}zhr1ueskXMCL7Aopc#|MBX zS?KjEKJAAkeH)w6wFjCMoLP?1KY>ib;vrqJ<*T?Pk`9FaIjN|u)>!b0M(Glwqmrkj z!WY#EM!%!A{-fv|^^VyQpleat9KKjAZkb4b<8gXQPF>=W9@Mv4(W1ie$oY1I$j$pB^^iea_CT-0-?BVF*Oy?K=Z@h@as72dMr)wY(9Q^ zh(pmB?+F`yl(NwOPt5I!bwi-h*5~-nZFiZEl*Pk|7+idX=v)}nK_OxLsAetLc|x3t z#jQnfXd)rk#|EFs4av7=Tm`sd-9M;dx7y1?Eg+f)63YZ_@7FQ-kKmPt1`&3KjU8wJ zjQ7OSzSwjdJ$B*8kr>@g4QH`6#?Cp|aSe;xrHa?~Tp=2|>{}X6aVQ+}6O89gnNqpdf)z`2;3bXy{ zO$fda%PymagNRRI@iw(%c@RFmh?ysGWST0SZ{8tTJnRm~-lypAfJJ?9Y#MZFxRZ*- z=P}j;le}R}M>Pk>pQEpBGj?we92l6|7sGzQPczU@$#TSh3;tDa!Mi}40@o5a7~$x2 zJkG?t)3OO(Vz?+3n71{->jKpAprvq4NGGGsy6|_7S`N~RfUHIXy_AWfDil?rq86G| z80)}97v}n)Q&C+908}zGDUF9{5aDV8nswLmpmZEwCgiv|)%!-JGUsCwi#E+@EF^vY zy7p)oUVJY@c3a9!SJ`TBio0oWP(Zi3QJqvBMyevNY&r!s+&1=+^Wpy!iM;a0ADzuG zx`*^W6cR4a!alwWmplIMsEQkb%#p=o0a59C5749ZrOpit% za#!=!cV%z|81OA9q-F}|#yT+52SX3$24M4$Rf3pw6jq^@Q*VQEc;N6G_b*{$RvCKjK^+1cnVODe)h3*V2Z z|G!e!k%BuD2$<3rV|(Fl0`e>HrU<>)q4Y0>I*I=)@c(ijod~`Vl&aXF6T&?=ylB&X-LgtRc z&(7{rJr_$?hh}AN_#!^LZ%^ga@svdsv(B&;Z##)d;PM+~GfJ!Yj;-kDDxyWN6bOJ= zjIOEK@x=fH{Dw*1@K&;EKx`KF-NTd3%@Pvl4M6Y~ObdXqPP3gQk5nrcZVX6zD&KsK zkIv!rObk}Cu}zo4gEt6qL2sLm)eMynss={-0>I5UM5q7%usi-E_%_kf4%i(I5&>aL z8ztvf4aAbZ5Q!Bn&{PEJ#kdrWxa`KBG5YrC{b({oTo}j$4*4L}vTPoE$cESg)r!PiK z8&ps5uGU(~`AVNc1+)HH4i=n+hbd+#^9T>e;FmDyQW0PWCnFFEC}W|jN$`bT12!K_ zPP3zOs*qd)7h_EG!IbVWRxAK9x*HaqQ{vhrD64^+EV+SAld$O=eAi&zgk~L|8z7lL zG;?us2L6n|2Y+GvC`@SL=YQv<-ln<^*#UJtthk70IXFAJ)2^!#VlnpJ!>;SlqQb=- z_9n1*a@f(IHmtYd|5I7~e*~`(@|g%t#Gz=ANw~hC)ne0j;`n21IE!@?uyPb!En02Y z@gL-4-(CEA16Nn8q59=|EY7ZgMLQyzVlg6K=H2~!T05^qlSW}TO%3Q6R8+C_bz8Nk zdU={}`HkK1qlcZ=KQ}x2iU8nl8hTk{Ss<8P#1??20aueY0%2S3A~Xp{ra}eX0g)Jw zGjTc=KR?7r{`jJQ8$R1wE~Xq;Zt)?3q+Mi7=xAccY%C7JwB5+Bz@|y9jzA`1c@T!U zVDeE^b1?tk(_uED2=h*(j}0CyR$GsD#Sx!_wWm?b!9OeD{WkVbG;dYh>EDb02)-Gl ztahOY`=jvN6L9z#^YxXCgjZ&|X1QiQV6tBK?6AVXbA@0jOc| z=(I*3w}(AFF1xjTWkBVSd|zAKPQ|iI^*>f|U_!^{58!DAJ(}!i`|D#QuY!q634lZb z1~_1V1M;e|>M929#hji9c7&B)<7*%iql|?*9sqoO0}h7DY2D z&RPuGf<8_d?jvtB4^!M&h~T{lvTx?AZ|Q^V1j}BL+{SVaCY{BWVVKe#=-`f>QphaD zwu`u*h&5v|e*h>}|N1#rKK>(k;O$Gv72riaa;i|sL~a!dnRuKDCu5wQ4G+^+k8SPk zlsTPA?OesesR$f?1QrLY$6{t+z19A&rgm0#IJb$ZsjG!H%j6~NfM@A=Qv@0rwkGhg zmDiB5HKZ0|=I>Y%q8@e!uxA0r{EQ1xm?gKzxl9lk{>d5T-)z0;YNv*}T}v~A)Qn=G zP}EdoPVLxxi$h+s>YYk?!gnK#hV0AGY@PM|7~{aM3DWHG*eig~^2*}VZV894a_ zd;tKkxZnvuBtTCK07yhQnqjyPoLZTO!;%r3g%T!+L@;z=&p=NHm^SI|#OC321oquS zVI>w0LfntgweLKuLsY4BqbYUa{UUfdtIO0<4E+n1dayTyg)S`h;Ae@AA?xrJ8CZTH%G1 zA{}T#vtU7ogD!65V6+{`4v2}tydeOPRtB;$t|VaY2OyJB!^N$1NWJ9}?V9^!d6oJVG0I?XcS=fC8y&Z9A z38V@|4?n`sp%~Kx<^~W5kz0;?uki6-5Q#w`z(5NCs_GEnf*+?N$Q>FTFw?d~7m>|= zzX*QsQ`|@a06GO^5=cY{MfFV!QcJP%1I+8$_8@9;C_PTWygfMeS%)YnHGQ{4Vq}y+ zmj(vZPxehu#OC2<99Esc!H+TGZ9GyS#E2iU?hLlcib3;*NX*5JSe%YPpc~GA(Ku-y zdWgYW@zrQ743_?$Wg@p6Gk?b~b1<=YdvA&_L}VHwQgJ69Rdx7f4u-uoH57kt@#(B} zyIolXf_PnR8mEbGr2Sg-Eopw|mT3#VIGhx=MQTs680&tyvwx+tu2!=y zb29@`ScNIO5VlFROK2~s8u)t(LiQtMKeWimtA?Q#PR~NGj`8|xl4WaAD>x_QlwsO# zXj1Uca`bv@@3!_*oq3A2r*Zakh1^l)b=dI;R~IOB8B%B}@!O2}YvA7<0PFw&6?Jem zK}0qfbT}IW0FeMP2>^7c;5APsh|0m7QwVavx*;g2Mi~petl?k;PqRiDU4amnpW{+A z?k8eccSL^&JuP{1?tCHU{)zc}aQxHyxQtkgt1qzW9PX}@Vcb`-0HCrC0JJDD)$3Hx zXv4Yw)1vP@eBc6C1_0D@ArL_*0*P4POi-I5Z&GMKsSAX7m5azX$gco^Q%`Vs3HrHq z>^t|-U$`6t6CG5rV4{Qm?ikY(1KdGr{?4`M8eZk%at!V!;8iYs?eW(~7}!L}PlJTh z%P?*`daSLV8Fe&4B7!eKB@3A)urWc1C-yCZfAd=2`2*qajBn0h=QY?fTIF~)4-(4D zEywDys5tU2~^pf^863qiwEyD5e@O^hN zZ{WKrAf{>H%6!BY0DvA1ezLOaRQ`V3JW%oIgGh`I_hNi6d^Ni5ovT>*@)&Ndg@|B!V?B^lg?nij?}@@1Bot!27uZcAaZ>IQ zYki!b3(qEHp-rD;B?|{aao|4e8JHb}U%%>OtS7IBhh%~x7lt2Rf)PJp+HSa*gUQCN zIM8W0v%H?&rRFiiCjY*-c)tkV!AJ=mV|Ar|q!nWOHC%rQQ$6@Q!+`++zs+w(gdKsj zLfn6a)Sb}Nf=G;%eB6D7A1`Cp@9?!lpc_W|!q-lT0i~9r(dqc+4D!k`wimvgf}Rf0 zl;z4c)W)r~NGYiQky!_k7#bw#Yr)Y>Uhi1C0V28343taBic> zTpDa1uD-zO2t=epR}s#tpG&L#fA=lKwoBM{2~+&> zafl3CO8%$RemxumO$0kC_razW;b|%oa*$GpjAGCrF{iC8(RaZ76pYod9ewm|G`_T+pNx>+ikp(&E30+d~e&n_XZ03+P-MgMxs8-P%R z^9i_-g2ZB^mw}>zJ~p^Cui3GAO#BoC0M}Dcz=ReBraJI21AwE?f#$WrlxCit`gYqb zA5MG@4nDxSD2xd-J^!7Bx1$nikVNx98gOszrzE%2Od>G+t7^E1 zFDAq$7xM)o0H(%tM{E7*Bis#maqSuTo#Xu?_;-Ty&rrigbg z=w^j(R#-L+Og5t4AS@a4_dqPhg)iZ(umTs8UGKh*NJUmD)=y|m43q;+igGK7rf@b_ z;_?*7;}k612X{-%=!XLz*Xykk&F$1O_?zs?9^K5^pE;jfP_gl+%Xh<)zFRwC)y&ThElOj+|kF`s1>^X+H)#t|FO+!T;xI%cE!B>I$rjlwL4@cA+l-1x(5i}_XaDlHqKIjey z25gM$z0FKEGKvwCfwiZx_b&cg1f%xJ95vuUA{GWK%GMMO!kOimybCWfv1cL7+e&e; z)`w7pD@hpB+-zWS@iHG)dU%|P58oEi-G76%H(;QNxjnIRARG*3#~m8{0Xh_L_;4|9 zjPXmJm9;*ia?r;HX=Ms^(JZRMgdJEo2+zKQRW}vo_l)$&AB{E_6{f3pcuR2kqW#C8 z|9miNSfIlP{p_h!l30wQQr3&);$25$j;^uu@21=KC|wo*5qyWk(;9!=#-T^}a%3|b zxBbp}`O%%240y>hFLX5#;)M_|Y?*>X4>9&<++7!Lrr*Z(T#KyOdJu1l;Af9OSF9d` z02kRNdsjvs53yOe`U3wv#r{Q&DuL<^l+dUeT$u&VtwYLouVU8y^!v?&ryehv7o7BX ztM=P;td0=3k%G0QVO~Ln)W*U7wu?8`r5A7*8 z=qX1sPlT8ZTzrO;5g6M8GXufUg{?`el&Px;A3ONiVg5jDJ`caIF?Rs;wLm3fxKF+N zO$CU>NXo}Yg8_wKHijPVt;0{D2-=97YgEW@Ao| z`T)w!*I02GJI7$Sn~ZUq+T3>4I3Eu^P2^S~$N>P{OmN}_MB@55h>r!HWZ`T)bf~g> z)l1>bQw;aPnz3!~*(TKW!G`BrF4}O@)7kjW-&5V}rMbU~fFhM|EiuXu-EHy7L2SQ@^%H;&pmr7)nI$M?0sv2dQYI4fa5)AmH?=X&{DG)q z!S8EyvxKclxU~^13_#TYlY{CylvJa*8l_BRmV%*+&65%0B_nyboe+yrPzfqobw${O z9NdmaS`qRqAr?bdv;HDADKOQ8CIvMd6jmZG8+qmMutpyzM0^V~w+<^S5Q|kdw%Hv1 z?+5SwviJ6wp*}C}ZnQA1C!$WEb_py@^@#*RT1K(6LnEcos2a=W_zztj8|`rn z?_BRlf1ZIpZwu$>RIs?sGScrPAS@Zt>BuQVQ5BrbFt#VcH_6CWlata#BI4W0m>r0d z5vXLLx(++8!ay5CJTb@vy&Pre$d=b2E*nMFD6T?rHA+u)@j#n0^A=N28BTy!p~nL7**av0jrVa8Wi4z6Gr$;}dIiH0eqbD z4pJXXTsEffM#9gkly{>!qnFoU@OMZnZ2YYz1@?^kx=%V4`gB+uVcq~(DHaqct3hfZ zvPzLxj>0PN1kk2IUkeO9nCihq7gmO9jxTTp2unspDk5IvWflzR^_n3bR&X|hJp*R? z(59iH7DZJku0~l6EDg}z76ZC9>dJ}5xcnSjE`ZC!C_lJa!rBN#0%~dQLXj9i9amJ8 zom$6(4h^Py@bdL_x7E@hb%>)orr7rJi@f-hl9GzLf|A+*U&}u?e4xmI4Ys>jEIxPj z`PbXd_wcg)?&}Fo_RXxtjwAS%k@$^2UoNk#{e9a^$&U@ia>*IxPhR9bd6^#;lS?8J zzFX0Ml5dqFr+D-re9s+(C1cH4d^8vo4HQ-3-YYy!!=-5G&~RyGqvQ+GJaF6b93SJH zq29Rs9FC^&vc|<|1b0JzB{V5;VBm5LhIoTc0f4Y%IGZE*oT0v+t|A4rMj)vxkKNO!Z)@4~8zR4B=?nSVO4t%051w z_3i$bkCGAOhP?}AEQK3vkNuH25`*H}`X=#Nm2hWZkP{q@U}p$xeVDeQZ?7Pl8aXl# zl(U0ajH6-La297jhkxKZllmYq{OdUUokwE+J|7qQ=Ohm~I{tt_DBARU_=UTv&(F=H zRmUhYe$%c;y;@QZuYYEiIqfQloC#i->eDm&lu?GO15 z%ZFo>U%LpN!^fnZ@Ug|#smhMgNjUNd13h5d;;VU(h)XdLiBM6C2TAa>Mt^tsJHg+% z-mojFMp8b~ijY-`l4{g)V5kiu=Ly8?hZz~*A8hj5lQm)rWIoKDWny`R1YZy80-mu zXZYE{%B`0*quI0i=~V8j>Gk(}@ z<&}ZGZ9bmj13+97DSzjt1YgO5+ZQt@*001BWNkltlIMX`aUye!cV2iO|Gh zfetfAdknNMl`$@*&#jazqGVGwm>L$ zx77l0@J7*x!_CBE9Jy6AZbdN zuIu>W3W}?tNr8(QM)$z%p!(!n07PZjy(!3~ciBHTEsuTre(AB>#Z)rUyIZZBz0nU} z4D9D;MN6BrTs<^bZYZ( zHDX!-9;S8X37g^lvfyvbshx5RfextSA)yF^od7_a3VTD?>Nm5Ab*OlekLfUe}Pw)G@)%bH{mhcWpbJT4qsu9h-OU zZu~!&qo2LZoG{XF*dVVD26St!{;hKo>so6((}05Fs$tW2{b9vabVS!BZeDm?Hd6ADQG%jsS%Yo%vZ>Wmx5S~Tk*L63J;RtVuon}iXK?S zLVOMmKSEeC){e)Vpmz{-mkF^L*=0y6KuiY0Q;=5<02M5Z?tv%YO6To&acVEB;KjaS z#i!TC=g}TU=lu3f$b=Ai4BZm)8C?p~m+ZH-GFm!6m|?7&nqEX85L_Hhr9@#{qN8bE zKEk8YzWVm;q|rUC%-irC-HFH=*h?i*ng!{v&xvj4#i$*f@Htp@lRkwupa6P7g}x1#6^47+VBP?1zY4!Kurg|9 z-e}WctOH{m80o-B2c~+kGeHk~8RIK!wMVAm@FQG#4toZMdeJ_I<&GkzHC+#uNi0kvJ=-Y*dK%=%GHop4N8O#&WdkI!>Ne z4nF?s=)LgdEvv^*8{11%-bNttc~a4b-&~K~r@8_&f#JVw+uhtk=JB6K(>2L;9KPSg z!$-d#)!W+~a+8}H2!7V8(0h^D-Q5^35{u@I_xfpNu!1R3?-f`aVP+wRFKC?knRUXl zDt>7-zkeKPZQsidb=_vec-xa0JlBGmjAiv-wpUeoO}ry8H1f*Ob1y5>E*ch z23EQ#sKHEMSm+=k3juZr&xDmqPOa(v@WnAWnW1m<+@j=sY&eVapToFCnFdt@S`_GM zDXMCzAmk{1%UQDUh4s>&+pmI5!pYBIXCl4&ez#`&_CwG1or%??X$1AK8qm|4MkO*dj%JSb3=30zGlm|+SjUW^$1v8_q>($>j_2|OTYd?RPs)4s@LL*H zA>XE-yBU`!eDaFf&r?Nd&l(o*X>9(_D}yE8R4p30M>n&u=edf^$Pzq_D>%Jl%z$1t z$3qhjoQo5SaXZzNL?U!|WtbRhy$@vnywuLrNXv?tBxfHwjpS)BUj*I(!1+gI<9DR^ zJ7a_o`Z&SKOt#2XbscIr;0sY%i|jHa=i}N-RIxCpKW^{r*_t4d%Ba)nv3%Rzs}KJQ z39#?(#_;cMAry+m5Q{`&W-af-@!nppCYn@@>tX5LMjaS6(CPWPx#lL?0G3Yoy&jgH zQ^b`2IthfL87r@(W>s$fEO2;`1GzF9;I(L`^RK~sP4MRvFx3aNx6h!PDNeq``XK;N z!^O?l81ISLLL7eqHwJnt*49Z1<9mUji_eeZ_gfg+9RMm>5D4*4B(~3LY#G_rz!l)o zLtK1@=yVur!^#NbdtvDZjcM>*2S+X?Y*-pFd(6Abt#1cRjC4MkKj@SBg8)?5u+uV% zQ{EJ1W|zKvl~YtwT~bz4R8n11#_Z$g@W=NvT^u{97%aD-V&tq}o$XD}{k>E{b_YNp zV8^OK(>Go{^0jNQZ`;e^;tJlG2c^l`btRSj;woNIIlrPNa?((@=vRejZ>0bT@Ui@O zs?YLmcke#U`eXeE4hs0OHY^F4z2>TonQlo%-SXKz2h2UeXo5n59v!yEaJ9ge$r$J%sb5tyy93yHB$`>vO}@6s zKv&-2X2#mK7P`q9Wig3GbWL)8am}{6f}IX72>Lx5w?3vZHfl8w7>`q{~r%T?)xX!SYPw&kNS=o zF81?6$(Y$_uRUCGxka78i@~IH9KB$=lq_-51z)PAN_q{o7dSA z;m`A?e|2SyzwXLuR&sddeunv+HCM+CcJAR}W@b!h7}3p*=_ZC+6f)_cn^U6UIPZ*QM zdk~d9@9S&7tR6gnf|q=Ue;mcd`q50(RXX?LQm)$NCR~d)pES$jqxw z&#f#ht$mSHeD=mGdvltLwWgc3*5DrczRrqztr{T74P>%W-emeDlc1~FOggu7Jb68r zrX1KZ+}FMB&bVSR&fH8sbRmI6B1un)2i!C(xZ^(Q`rx{PGpULH-KSYw_CCoitQkMV zW!zwA)oRmaLS=$)%7{{fC`gt~RcwRC{y1ZNpQZDI(LP7LA~gT!p$D%sihkWPz3D~; zuNgp94fp52qmEvAMWv7i^s?EyEXYj!s_72VDK!%}rJdeBrk|f|w^;P6!f$qkC8U-% zY#|Z}U(D}UrT zZMbP`q5I7Qb@toHO$<*ffA0xCH#c|h-o2+zoyy9}l3Ws%O0~AOo-}FFM<0D;Z!asM zQ%STW_{<8Njl-&707x%G6-T<20{#uuu0lKQmNz97At?_x<8Uz=x|+DUsxfK5i)X?& zMQR@V(&MtrQJm!Tau+*8Ns=9vLNe0VG&Q1Inrhox=yi8xSeYr|p;dw473V_5Po0rn z>KF2DMapg>kDOa1uGUmNx&{CaPsA2# zW*1Z+`flXVKqWrvwCu|DyTfij$+BQ*n;O$At2xExERjeo7K?T0)Qz9?n=!H*@huG( zl+@1s`dV34T@8yjF~l{nhn0=F?zm4c{Q8OY=z#i;VNH$lvdX%v57Qq;=Y+q=)1+!_ z{xoR(5ElXg&y$MQ?hH$OQ`Wb;g>N@g3Yi3;j?FKrs58`~d6`xB^VBsrdS@LK8*afW z_|L0*Ci%E2)aouOzTm*Q_^S`!^zUgsrYB)kfRV0N*9*M0Kvk{aRFu{)N21q#958RZ zSK9|DiJU^_#^1xE;tL{A&(UGMX#ao`L+HXYe0d!E-g7PbmoHxi1_l}#8I2k>%FWHq z(9lpU7FShOrKYA{zka>4vhu-$2i?1OZ|7NLX3_rgTb*?-}dlp}qkXAZ>yjN4pOu~-UwcN#(G(j+qswMr`L;$N49#pL$yX}xX50DEeR3b&&Oghst1V+&p+7bm2aO61ri z@OCx%Y*r5~8X16bz^_?%muhP%VUbrdIoBVhU%Hp}_<8Q>9b*Ufws|LRiKfe})-IsD zn*YNk{_!h`!vY0B z4b+`WFGcf*PK9sUekJ1CT1&IG6XiPe_S=JXzlKG`<_Gv#YH5-smiO==hi-SaaDBrURwBzybmXM)2JFh{~Z-^ zYIe(|i6WS|{NlL5&a=mOcB!~S15U^2ef9H$sl(mAUgU3V&{0ih_nvtf`ryskUE?IP zfy$4fY4|d=5Fc#Ar7z)Qhj$o*?-E(`FJ8Pjc<^9Lb_bxLp|N!7($S+wchISc1kCX5 zpt047HhKMZDbB{>o58IX*R{5G$t#DeMI*cae^a{z-j4L}-+fm6mhLrb@8|RTjTz*m zU{k54=mc()oI*nL7jL|rII>4apAo?P>4A|iGLD~ny86@MZSE{Te$oC%)GXOhnbFoS z>32Ldv69KDWAp3Sd=5`A{NsPNe>G@`zb!%H$!BuzM`epd;$Kz|Qu*>UsTyC*?d52# zKYHDrWwUxvDH<#`|9N6z#LEI*ZAu?+mV=ePqqRPZ&A%6!z2=ukQ-{0#v@%$dxF-h^ zyOu8y{e3?E(r*)bdC9O@Cx*DjBo(m)cSi&uygqHJnwM_zx_05#wgW=92!u=#*E*vc@li=+CNyk&?N}o z#l_|R{reLqPL%oEd-v|Sy1I7qCH;%=G9PR{bZKC6Ay&R%^F=0{+RjM*e}k?T>ELRY znAbJ?@09#-AkxNMXWlrkg_F7yyJ{Ps$5E*t&1yx0QQcU!aPY{PzedMqjvwJSd34W) zR&xI$P${GZ6Pp=KV+T2J+y8X=wz~~m4E1O`RATqol#=w^N&t@520m_#v4fl)tn~jr zA5S3@HE9~tM|S&T-3O+|(uL*~RqTl?E*-g)Fu$!Ov_L4ja3}TKKc9Fy8~b^*S{vEZ z!>niPzf}Zmj(|cTNvaRJ8klv$S>L_>W%Xbc*j-szFtm^VG&(w=aQ-*fH8hBm{n|BJ zMJ-1EjKQ9mt7>0zHKI$n=+B=&KY8-xVZ(+^nl#DX-QB>zfIuKfV(^zPUAlbv@|iPd zTBCo(A=5?wulC8mDZ}PFc%Baq9~b7r$3osXt=;K}AMyDJgm}Fdw!2ISMdFA&t984> zdV85~|4Maxu7e=4MXY^SMqFEKZDEKGmb;O7?5k_op||5sUWiQ3D&4Yr+@w)G)w}eO zZ(7}cl9^jevo<%Bw6{r0Er@-UD;A4=ylgyNEC7T(O)biL&8+2(4t6q@rB~RY2%dL} zLMD+lh{ffs=zr!aeqiXsHwVteUE0uUzZU|-|H^|m>vxA4>1(cA95ASltvar^Rfxs- zZePTn(=T^@J$RCDRfnESS?st*e3e#uc-u(T4p$*jMl8mn4L7v4C_5L(R{?4j5*PiE zN4WM9|Ey@-{=U2DCr+Fg8XCG|$BqRH7Bt;XAP|CsgF{0@hYxStTc|9$GPSqqkS}B5 zhx@qj3d;iV*JK=y#-9<`KS}8m)vytl4L>`Tu2LOPx&4M3`*x6sgdm&zE1PXYR;RD{ z{@&!Fu6`b79aM*-GW@)4pS{eK5PT=7+UeH{^HD~e*vJ7HSBDR z9c@h*Cc2hp`hx=90((1?WXhYh1vwtn@HDZlyZ3Mx^H(YP0)a?FgZS)a=Dex>0312< z#KXm+yoyy>T{mU=Xt7v)^w6bQV?0_8(xG4&YTb{@CIEf9%Ux5qfTbAf zHcepoM<*1nUVW;D#oPYXpb!=MUMLR&0qYhAj344Ma`9REa@*m3+S_8aVMd)c0G*nC)Z zxYI#Vbd_0b4V`@8(SVRD=8a~dGi%&Lre*~iZzEHX8)w=FX(5mj%g8KIk}b`9cpzV?AxExK8y!US{FgV@y}LsaQv&OStHpqCv5==hg`2Us_7X)+Tzc9xED6Ebp3*xDgjlp6H{#%93o9d78Nys2Rz|Qhft?BH zR0xE~EI~ppe!B@VaAQrq(7jBWZ+bmK5%@w#rNFBz%23M|K2NQEmRu8=$b6B`VCSwrKY1bY!og1(ws(S~ zzA2=LUxL!|npze|@_!yr`177yF|k=sLf5p(@wo*RcOE6BXO*O9mHxJEhDnn(=J&g= z*;*U>dfDE6lsIcr-;A6x3YqBTW(6QKyEHq$JUg#q?v(l&^yrz0Isaqts-vPz`{*4y zrMnvxkdzP*3@{M8JJyc1yL;`{wYw1n6$4SEM37KKy1R3TiSLhLafD%*8HU);y=TuJ znR(*@hW9?dx_8pgr)ha*t=XVmMI}{+x{Ax@44gi}j-QVgJ*nHDSWlX==2=c*RSmJR zpt#1~TxG-n9b;WNS!rQyRY`&F(}FH8s||_HO-wIM%Pub}t<5d0{*hK<(Oc27kD`I5 zw3~xg3$>!w$SJP3SseZO(YzLVJ7fwqJ*T3uq$anhI^tXYhtHX0GWFqBjTT}3w{o2o z``>2fRn8e>GR?h@mTEiJ%*??-ivC4l%8oNZ0oSL}1`avsrN8ePwD~@^jKNH&Uv&Hb zQ?lzKp_?8>@azt}5gRe$3MTf&B0B*1QHV*m;i!eJgV92`g~b%belI);yyVdFg%RN&r<_6_l)mA_OOMw3fEmj!YpBZX-8hEf@x;2uHy`4z-U|wiNEtrJL|;eINMFgr)r>x7-FC=p z&xX+e8X8Fty(0!Y8O0^$4stL85D}9uEh(CsQDknSAtNOU;OUE~F~eJq!H~(6kcgCh zCwzY-j=xx(3y?jUiFlUz3XBl8gO5 zruH{iT|2j5KgGiBf7^T_@ZjnJ zQ%3aW%3hfRg0HJ5{dv&;drGnY)hYaZJZup>?E&Sy8(YR;NGlnh-@OLUMCj(>!-p3y zUgV0<&A%Ekx!CvuI*`3U+2u(YWeI7eGLphoHT883A zR%Y=91^KIM7?|VrG#uPIe#EqsIeBG^W;v^?$|%b9DlMvsOp(ro$Hn3@YJRv!M+BjP|8F9aWZxcpZ0cg%2 z(1Vwk$I(X5@7}7f@!4mtzOxy&S4Bx`(kScMllseXT#n)%`1yE-I%s$ID%yvb2)}E8 zE!X~90IF*nANs{lUh{06L$B#W6cENjRrsz3QSC#8`0*;$rap_fgw zke3m;;q`U#u2)nll|UfK%ZT`2oy?Y5JJ%s3$aj9bo5tXC#bvcL13I=)Pr}zsICEjh zj+^Ka5qy^k-E?CF&w)TqK{ehaA}j+RQo+lE*;ZKL01^dz-{L_uE{umu8}qBIHyovb zCIA2+07*naR2ewz!09;*ET1ch@QFlN5iP-T7p5aiFfrA0;4KTvIJ7xH26U;%8 z*l%j)8>peqSfaIgJ!CQ^EHd@_!(i{1Q7-)rM-1sZYN(ln zI7>zPo|D_}2`H_o+jBlRBq}Gbu&l7GNmfr@Mnpwke2Bf~<^^`_>IG4$D6eYr_2F)j zi!-^&%9;jU*9#f%mI$}9JYWt=UQkFP*4;tyE(Y)Z?kRc+35ly$ueLP^7ZemUa^%Re zva$}|r6UC2ELm=0(?*whm$q{yiY-1CCC(vH*HxwW{4?w zKy1WtBRFWH_diT|ItYFVxH$zfzjoEJ+c{WWhhxui=^euMpmqLozZd+XF{M8o3}DiZ zzarNV7?1s4@Z0qBm1df!8<6&>8|MS+YJJ+>^&QR+stElyP747pnCL$(%=UR^$6YN=RXX`S( z!Y;TS^ILbl;O}+2FLvFDf*r)bi-og{p>p? zm_m>b+5fbjy-C6h3lIoMDFJ}g5&)QDj(QTj<1mqF!GS`><5+}e;`UV7(T&2sO~Uz5 zT$<35-PuAT8Q0$9&@&7&Mkph82SBD^xH%RN;ruQfKt};- zchiQwkM-;}jTvq^(ZkBgR=>rRTBlCXiHZnmYboyCK1)uvsR1e_EiWwm$Cv2j0dDKZ zc-ZgUJY7*iiroctd^gZ8XzP(e*360aGbh@IN2P7p`}pK#{{vgbxjDB#W!FrE+$FrW z__d2wkpC~i!A~zer{dznn8-)7K>5na9VsmXkDh=Y5y5wh&<(Q=bEXd*5(Vj{(EW9j z_c#_J{3s=2fHr8F&<|rF%m)zQss}+nc*kL6?1Sx(da&(?FRF;xHKF}$au*4?*!B=H z85n2`BNdRyD6K|nAwDHzggO42)_&$Avlzn4;3<3TBNi*2K z(La&1^U5B0g+KO<%*-iqw9z*=Q8(08($`kd*HNJ7d#=ztg+jgiFyLdzHvlCiRbIX! zk`iJW@i#<8e@P*fl~?aSeE<6GH_H}!tXVl$Oq7i&HHHM=8GDo#H+uFedh-F#L5@Z( zjB!~+YYJ(1AJBqUsZ?t0_w08;KZ;7KnpQ|AOZE~mGgi0it0^xl&g4>@fiqtJ_r~!o zf~&@=2kmtLjz339HTF(oaLn(Xq6hH&`SYVkj|Kz;(7#9%x>>t+ zEmwqY7%JJZj+7F3$00BkpR=GZhqnuU8HCvU5-S{_AckuZm}U-sUaa=P)CJ+dJ%pS_a)AY$xRFLu*VaxFNjLgCZKCNe;!!n1J3&pal|= z^Zz>g^40q|iC!W@oO-J$HTlHw^6->b)<(u;e2z|2RFD|r)MuiHRX=kr0)fC4mhDL3 z{{Kqz@u?+qHb3X%<(cFtGQn9^L7F|E!yZoXJt9Sqt`)jr3*ni#_z9sIAd@k&Hx}CB z`Xsbg(NJiFOc4m;7;1ob$#64(wlrvR)Z#)QHa3l-(ID{aPhCd_XU5=M2x9Y^2)?(% z&!RiG5S?^|)GsPH>O}OnGJX(=&@N-1=ZUe4m!O+_Z5v^QSop(tXr8 zpiePTA!kR^>$l$o27lYPW0sa?JId!8>hia*tiOF_eQj-heM4hqWi6RZ0Z>(4TT)sT z79Q{9y6%M&dG|Uei&{soUVbr8ukwIr9CAc3kbB1HPCQbCPp1kk^y9A$KR7oV(3kdMb$%wJy z$5T^VKW)h+VqL@9B|`@}8VL$8JB5dbU}mgtW~{z#^~iwWA1k-rJ9YW(oGA{r7TTI> zvOU%k>EDIYin@ubypOIQINp^DJzk0V=-av00i2+xr0BUKbd#H#>+9>=*1IcKtSH)6 z51^tBrL`aclES~l;w82CoYnMSdKvO6VJMF?W6+nWU}9q`0FbHhOhp3)CekpK0e~DS zd`txau+@aF3;;ZjM{NU$Bup@ca4W8z_Xw_fnAB>ny^)Npa_|tq&j*#ZJt5moj3?w` z=s|qg4t3dI64yoLjgNgkef)v2Bna?fh9g!E|0UnR5FNCoZw7Z|gY(KU?;?cw;kml$ zm48=?o*-{ap-^3B-y@SL9s~7k`znix2mp{27bFk}(vm{$%H`6BSsyA=EUK&<7l0zuc@u?H*BA#s?5Qy<4lZHnVef!-}uNU;`;sI$k+@~5dl#Vp}M*T zB}K`P-WytTJe5jK%Pfvh%1cTuNXaPjc@;fukm;#?Q)uFPY=KOs-17?eeH{}Klb&B# zp{guxZKgTV!`jWIPmBAq7{zu?lU)~&1F&_wg5sJ{%bvLQ*V?_@u_Lj2^8~N!euV91 z99R7AHFzdMH!ohiC@U*tQRpTiA>qV{6BG)C;k(zaT}$8CcsvkS!XYUPDo|F7K8mo@ zKm`#AMTpIVl^U#7VXX#TSt#{_&_91WG#2j&_}f#qI30xR5!mepMRCODp_~W+2}STr zfVdzC1P~h_B7o7xSY!vKHsm^(^X1vsIQbGwhQLY(s?zw8i-0)X4aU&E7-S4vJ!r}? zJDppk-WnaG`Qj>sB;r{lUd3RkD>f|X-+98ZT>vT-ehG5#!!sk|^6TnJ0Lm)s$Yd%n zFCpId4_2-~|M-qi%)5F&=>F4BF8vKp?Vl>yi|ql7)_a1A%9`w)V!t;LPoIT+|B*S| z&3fn%tNymV+s)wvpi-&pw_f=inHcc$5P^d~JjzI;1y|Hgy=( zS~qIk2n*Uez5Jp!?0KxOt?q&T@ zg17>R3qn&0j@myNy%`;+c6u7D|`xGG$~MZUrJH1KFi8Qh}8=77T(SYuW71Ab1X_y`F^c+4z=)?>R`!MM5r0 zYtT;z!_6_$5=xRiH)^k~r`!k}6-B(nnX8mzN+WEMOs@PTQK$ z1aq2ES5G>AGvb0DD=zi#)VN%O~XBhnV27 z?|n_Qo;}>j*BqgW{#s?LX_B&_P^kR}ua=SS(PKL^<=x92Wh8~cKFw3|f~Zuu?17E~F3e{(1pm7eytTD;zkdDBo;}O( z-CetOy?psHEUcp~jtmLDGq{`~+9mkbD{1$XOP>&&j_a)kGq^?bJs~Im<|~f+A~q8? zy0FoOqan<-AR^EcS)2(7^0s4^d%E`5T0FU>GYUO2aw|fja(<+hq~}z~NQ!8yO7ipb zRMj*%Sg6{vX+7Qy`iFHz74huVcRsIUl2QvydaG)v$OsDy0FaRqoin+=jwWNx*LKm& z`c>7$d5e!nL?ulgKVae9;q)T1b#)B^fw99}e@+J^rQ`&KeCOliDK4qxEGjQ3EYHj?l#%Y`)Zci>Knth-#;hd&Swv^(>bwj3;rSx6yrQ<2*icwpRaji5 zts!e>tUhmwgPu0G=V98w=jgPtbIu;$GiAJcr+W%B0S7eS@rD4-_7-K8b-T|6-}U`& zYo@$)p?$MEEsIP~i{KR(A?6Sim|EZc?gZa0LN_%0O9?)=61(5PKM8-2hl_5@cmJOV ze$IJl$YIlHv{1SJ*Ae`Z-LI=^8g3qR@8Y^M!>4CSSGoJBC&x$Kvr(q-?u(Y z8r5&>D))A^;#;FdSbzHbv(WJP8B+$))A`F+5gFM9LV^NfqQc|HH~_f&AYkew7XV~3 z<n?;wq|91zH6eI!w=_4<&=~|@T3%C8Sqnf`TAZOs zb4QW~)wPZ5j=Yl;7i#vwV~gOoJ%s-^JX;6Zwrz}lcY;Uv3Egxf!LxYl)+d(M!r?5Y zm}8YA0}puoe-Zq(_t^dji-%z4uwPv1{#^tQpss;3V&k{ohFbeq4d}&!jt$qr{4rWw zTD|Xt?|rZEKNk#HF@LZyD`p9d&~BH0MpogEge#kq*hcCrKQ9G zP(gip=TBX&mZ_!=RtG+O&YZr%cho?=?Th=%%ZRW=@BlX6MMg31t!VSe{|LSboho$G zg5bN1+G*e-!7q3W84(;9-sUMCCwOues_T(bimY-plEKFVYqgfH^PGW$wPh4z*JA|6 zWAhlya%$=;WQ*Wwe~R6{C#WKl7n~}78=9`JBw=PGZ=xqR(nVKSy^Hi7SV@GYq!(^G z=3LfRT~mL?jS>auMSd{s43T&$^u_U^;? z6UI1Ry6$J+bVn2}XDZKBK9xU@z-Q40$L0G~d^X=o@aD#|nyd|Pn!*z)Gx7XV6% z(q^XGeT+1em1NXZ<%SNiY%Q1jI}kjDLcQY|cI4cvw9Fy`fgmR%E+r`{BP9xehle01 zEv~LAvuKvH3X6@koPu3~FDRD#*c)i6%hGZZ zSMLQKIQ=60gwt$Dk>BdI$Fx=UV`TsEeO7_8is!%WfP>@R{Q2yX1^IbUgJV2 zbY!3*1p!{vk?<)KOYE`UnWfWNSqZy{O2_&;=&j1ETa_(z7vGb})VQ>o=#-k+T=7S* zeyp5fwPtp|E=Z}eUg->vN?X6@QDs%#!L8$52mIp2Lab}N^(f@Y^T^N9>E_1jc2+u~ zB7zlF#N@PsFR_`*ijq&REK!han);w8`!g4wEnPU0Kp=bw`YI^MUtV6_+fZFyO&);H zi%({zI$`1Q<3>BswiN#Fqx%?X(0prHL{@fDR7}c`#H{>+vc%+^&yk5?0ms{o>^Y-+ z+V{o5x!m>Op}!i#gR5)mi%Y9Z%c^NHF@-`cDy@qCmU;7G$ikV4dDsavd@F~NS*is9{Q2Cv)wDEeFG(`(Db=n{GzC;0T7 ziq(hS^%4`fzJCM~yiX*KK1cD-VP+^xW1|NK8Z*0c zcaeQgasAB0x#>9-f&xvSc5x8_M=Q0_gY;}nl?AxrPQ`Htleb^=mV=&Z%F+imk2Nz^ z2k<#MZSum47A6|g$J@C&_i3HR-*@8qjfWxkFD$Sy{YBG@Pg1S0sQhg}G!G9!R;Jfr z7xU!Q+%M6|G`si5UO~fMt$kj6nlRRZrg(qzuK&!bKR@3^#T7$GZ*?7HF>$Pud0!n? z7Jum2qc73P4{mO1|Ik+GIJ2^TdPkN)e>Jw2k)2nz^T@MT@4mjc`)3PbpN2-#=cx4P zxXi-hs*THsxA+xPsnmzhBHo82(7vpyCT8Z87ME6!celKDFX*H9M$LcpFWHLV(=v;O zOgfevdVrP1lgX5&o9^TllzZP;{`19-5qwNS;jjgdmQS}_G2K#Bn4dGVnJOZzHsj%+ z4D{@NcP;wk$B!R4aA4)im3DS^!NI}DjvXs1D!O|0D%WrH@1pj$aAYJL&*D=i_;_KZ zie>#-(ztCw?IpE%lL+7Mc%KSeb*M-HKyeLRe@@2{8xWm=r{Soo!_M(ApxcE+r(^Xk@bW^KA5vmiGXl;n zCz-n~hp!?l`1*imR$+bf_O-Hx^fJ6;&45F6x?A#F-dZTWMAmWJ%OdFQB9sx_orj z!P74mZ@3-wY$Jf=w8D>JiSI)a`~tpdsmogS)hsHm8ZqsJ-~Cn1N_p=?5;pFA%*)F& zbAmlDF9CqKn6N}I;X#f@{CvC;;=*%RUGurMf`h_;T^&hCkky_KUS6JcOWa&19ivjI z-0CIF$gS+7E4yxPKR%8mB4`j7#vl{Cis@N`wLKz&H!v_5H*Vbi{rhQO-nnyU`t<4E z-rgP_9^h&OpD~ehH@WUbi#R^J0!hVaB*QxnuM%)-G-D50hN!B?Ha|T13MXw0H-vj{ zNU)ZuODw{fVED$vRvmwhfGX1}US|+I4JB2$6O8a=q!;~sk)Ic)8W>=N(bj1F+-@Wz zE(=s3DIa@1p`(CPv(bjlM-#feU|&rnhsRgF{8Z`{TBWTjd3KvCTSM^Ro*Zd)O?_fY zJ^&eMF@`>Mt&x^l6cC&c7@GL@swV#^zsQ27ZagS zDUSBW&EED5(SknP3clHjw%Y|;oXx=wgF>Nh*!%d-ld!o{9O@fLPhWnaQm9V0`VKaF z!v>isD@X#MQmJF+oVBsg-n3$Pd}7|F{ZGCp=Iz@wX1u#4Ls}(~D5Gbe9x|ZM%0C8! z%?Q4(zER(9^P7ij40Ks*mLyReM;)9#-gfDnf%LC)9LJZI6Q^(R%_*!pvvr80r5Xpi zH?#;LDjjn!KwSo>=Rkwb%j0)X(Tj4#V2o4VZ{{6dJc92a8p)V(76Xj1 zcnGt@x}D&gL6NoDc_t_;zw-M25p129)OT?bjTIJcy%(%Uz*zJa8sD(CEI0w6u3V9pFz0B0{g)6-GqRIP__F1Ir>k?H z_77zZR4VR0|900j8J%3nuR4nCwJd2Y)wF`FR;B6bH zu2?cEIVBf>vXYFF;?I%VL&qM?o8{J;-2u#*?n?W|?fdU&|L7$y`t(_dZ9hX2nZn1% zQ(9L2+W*VMu}(o@ajEHfE>7)#zPamU&tg!{!A?zc%d-v1nUySIgdXdfW{eou^*vL{zsw>bV2!8qU zEnK)TH#fJt7sv_TX3Pzk{)!ovXck#vvE{I>+(I|*?KIa>}qUAJ^7^TQYt6%%@+y+u1qqL-+pxnApI zYKirh=B*?if%t?hBLg)65S5||h)_i&KYWO)A@lI_@E<(oy>W#HfLCuLW=$K+%gZx# zu;sl+@0l;Yhk(Vsk)m9$>!;?;Uwu6_{1DBMo|l)$+1|j(R)5{@M@P=TI<{*PZ7}lX zyRWg|v)Nq+fk2ov%6g)QmFJ5uOE%utP?i33!4NlRV;-J%qIo`Ep3?H#cCUZ+UeNUi z!NES8nny7^j_mxZ^Y^1XTy#6m?#G_vPB2c)!eA4wER7535d;rl>(;I7*RRjc&Q?+R zSq*Y`chAVk2n-BNN=oX+wQ&G46{~`AqCadEkWqz+uTfqPXJzO}fVUGSp4B7~ngPxB zG=Y+eFx#4&_cc*O&{F*Q3_~wtp)K4DAjeXu)}zsLs_(5qtS8mhH3|!I{%70PbC&DG zzx$Za-?u(&Svg|zsCGVc&E&+zIG8{{%-6Kq+WMx3e44LaO<8_^X>v}byLN#ubpt|}-&J6ds3l`&ecDv~N=qp!N)z#ONXar9K4-et! z&WW^t=j4~Cq!;?WiIry}zS?S?^eZ6{2;)XrdbpWA@`>1W9_iY*wMrd;MiTjbaKe4>@W8M{zk92=$nF;(M(;Wsyl9fynmPSCXc}8y zgOe}ezYV%wWIn(WdJ4e<5D*a1*8UkJZrZeI_3G7fa&iL)4jedeAd?e&Ab1I|ltW-1 zhN?qS5cgei@e?jaqksfk1#B>fHHW?)jIn(%<~+cUBCH$0SiF{o+D3@5uRzMYD$mP< zQ={k;HD%ptZi6k|hxK#nZ$fjv zaT(AzF{kRm1Ah?_!9V^O1)!mUL>su`;USQD1tBUWrJw*&Db$ovsZV!)FoY6*c-giiWyM8<)2&mdSLf zO7p=dQl3u8)EUl^}IbyKsvblrk#}qA0HFmEbZ8LnYhN`TE zsfL8Ou%G}Rg-WfcBqpZhfBBkWY^XAJxaD8lCNM1ba8?CKNGsiQJ|y(sbPZ(*0MsfD zuJIGQJu%*qIQ^MCkILK{m%)xox4i2FE|*RwUFVVW$BX zUAX8#n7_vn{JPuFQoxc{UGzPl;0f}!MWwZUMqbW%x1=L+JQH+~;FoT?6A_cHtu8An zDs*JW1Xh}}*aho>erZ|N(`O;C{l9z+`KGKS^XJmh6URCUNXgM3Q&?E`>eVMcKAwt- znn{xeOG$~}yZ3s^6j#)g1q8+z8K~0>>djentiHZ+!WhR9L;DE`bZK}XxA>gO>bizT5)XkO(MwoeRmRprhq>q;X9R!K`&(c{*5y4-{q7x% z;BB_z(gK*OGdSjV@1p;|gsc#9YH%|FGwHS{qWsY5g`~>1Ph$-8i61_I*YUvzfDK5^YjWUS4X(j9qx8K94BrBfom-|TFWJX{!4zBz z6qi(~sYtWS?rcFsSinG6(Lh(xrN7~l4Yy2Ow(nj)dh)1#&7nL$AFs8UmbF<|Oy*?e zSDv^TF>jnHIHmR$kQGO68DoO)M*J7ScOud%G2I_k4Nwq)I6q{BAS;Bo*_ft}CB_io z0DnP%zS1+Hb%Y(2gN0A9#tDKg2CqbK}f`X-uTPt#11B1R@yZ!pZ$FFXKEze%uA}7Z{ zu&KVjkwAce0DoI}>3EiYsp|lRwjVP%@ z5fO$`c$J0J3fy;P>GT$~+7>s{9~PQ{rBAVWAjX?w!DIARz@LsRU4(V8WsX;)gs@B` z79pt^DJ6(6fT&|9Mb#-;kpb^6*zMr};Q@$}lVp)MVrByJ1bQi-8m zr>wmC$jK)@exGAvZnMEFjQD=tmdig9vwa@zWc4Cl1=^2d!u<22hM7+v*M3njC%=5h zVQ=r3QA_8#tX({m-pz#xI3{=+l2QvE`$pdL`edl1^zhOmR_;g-j%V;3r{6iYaiEoa z24|ptCxwb5AK-Kjn+N@@BQ&F3 zzdNq%04~hK=%e_WiOr)S-{rC~97hbqx<-C}URK!suPdMKdPhcGGEBgsjZP%6= zDtgl*qmmd7>~$k(KMF@%z2NXK&fH&Eg zAAmw)7cF41F?RRstcyov=2PQAq?PFQ_@;_U}bXR{4QTVdw6B@%ziTncV>xY0Kmm zv6sQ(mDOi4KQAoAf9uR2-hNU3ALH3uZnwh9O#6G(w{~6UnL|WG@bbAohmYNE?X+UY zzFYSne~9_Y`98Y1r1IJGu!~n-#C%O9b0m1s0%J#5K6@4A^E!sbrtZOJO zuW9QTK1nt1YWs)?3rrbnv-8L^7BkA^;zZhioZYUfrlFkMR2&$O>{8fwzdZCW_#Fuz zzzhR~k4G;7I6Q@`4|as(Qz5>WcG2CHM7TUAM~^iF@F5ijhj8K}Jo@17Gzj&`G)-S+ z_|C;1H|%%?_p3-KYX21OLP`_|rr_gFhzR2R8WR6FHr#R^``7X(w&t38j4UeBZ>!6&*q?vyl2?_h&k+rERN!`D=X!8M22aki> z4ta$|GTVHRNR%VzUYR&=pERl;&2^^BuzmH&n7FL*^Uqh;)OX%p8cCGDA4Z#ux?*Fh z+*_w@FAeq)nTpZYV6Cjtb?CV@c&?+l2ERQVk5aJK46_Z9TZ8LA@TmZ04S3`V<(|~+ zO#`jk-EL}~tq!=3gRL4o^V7)`to4Nu9}ciKcH2os`ouh}xDH|ihM1ziKAenN)()D{ zjlFmTd0Qo?Gv9sZOZ95m1{D#P|HrnM{Y;flZ64h0E>A;VQT5KV!G1xh-e<;{8M3ss zk5;a^hETzwbrw^dcBq{RWeviglA^0dX5s%q*^ z@0-d{a0c8HBVzd5X(W-SEV^jbSCh#Ien*6FUj?PDI})I-)NB8$0jBzL;8OoQ07_oa z>sV~Ki?F?DJ>BwO4ZcgUsxMM1u`2=&N-&UwXDSx;!TjExqA}NT^fV9q4pMt-@baLy z0=^fpdOWR2&vlyDSAy?)_;HHy!*(_;bvd6~E4aRr)=F@#$w^d1=zDx77jE`zZC*%7KwnQKF*%zRg1>$L zo%i$5Pw!7^YqiX;C@aYf8E76I%f=sAo7);b9yjMcZq9vpcz8z5I`iP-!e(#QX3D&H z^Fu{dtx4hOR29Wt`l)}4&HI{I zv}R7f8wW-Rwedp~73TkuTAGztC85_12}F5Wan}KTW-h-R6PIOX%*mKAlY#Gc!ThW( z>nB?}EdTaBeaZyqv7`FSs$awzRkHEhQ;N|881(ftVOKd2Y*}Ba{>*T*e(9HPqbArH_HOqO_Evth5-F zNXGC@jd}v)g=1BZ+ePam@a|L+>5-aIjQm{if|E>gn^PZ5@32ivPLm0auRAwzp>B z{=zysiEQfY8~xry+Njj=-r2y@Q4HpGhIKgy+T3)04NlyvhK9!Pj<1}pWp7RU|MF8&+C}i@8i<5 zOUlY?Dk_PJ3KD_>{Ba+4(;wC~1kZ4_mu?3>@c#Vv(V7;ovzwx?t!q4aEAs5!FK4z6 z8D-M4Fu@||gY}$JIPHRxBt}_*zU9BS3WEVT8vaYscPDNP!uD|7OTw#>5MnIj_#Zk1 z=GzW=F;J+SuzRP1LWOS>PR)iZ-Ct$TQNrQp;~A)(H&B}oC~m7&mKLKBTf0UzTIzBu<_}&ndtg;f9e^*f8H+aDl9J%Qt}w^YQkUga_NEDB3iYPf zw>=kv9V}FXZco!xk)RfGNbvN?D29?Gf_AaIj4V*Na9a-XAHl;^242Hp@&Ls|sEW0J z{C{8tZIOD56av3C2I}IEN1#x9P@S7f#UFozpBIk*42^ehV;$>>F z@AjDlvG&CV+5uf*e!-k!lV%-QFlU&kD6@P!A0O}dF^-QsKQ@2q;?(!p>8Bf3Pw41k zenoj@?LE&=ht9mLB{l$1SCw(H(Thvy9%F8X+mWi8Iw=Xxd!B!!l}ughBP%8R@c3v; zxpW|&TG+v50zgt8Hr~Y~`}U7)SI?ts@E^f9!AJ_h`Iyw9B;tSI1g1)m6~#V(Y#ZF& zO93isL8anBC{haWawCNQFHG(e(n`0U4E&l@v~yWkZ&L*L`QnpuNhAu5xv5lYWNe1- zo0!MGkyTZ7HWu3b`{{~`2$YuBZaw%kEwjj>pPs$7uKN&EJ?-wXJpsRO4PG|y=UZa>c%6mQU*W@^L1K>slVo_8 zRo_{R-RY4jf#H{tuz|xna-|agB@LVJBPtzyypR#YgOxC%bLi;yd%7h=~XSXlNwY)Yb!#=p}5`SCfNf&YX3^b=z*=e^6`Sjh> zJ2)sbE-pSpRz_m!f{`Vql>`FB#Y7g)8!ju;A^Y>z-|vkF!F~bX?p;{e{7Tf<%#kxs z#Rlw>mJ~&I^wy!(I+N21N6tJI|8Z}N!`iLE7ZlgnOul(~xrV!4hjTChB`+u;7ef!? z^lX@GLWPA(wus%6iji9{p}y$98hp26fHD?+KuH~BdV~)aH__7u?OLOb1c_h0Fj{bS zTlp@oP-@BdKX<)1AmmqIjLu@>8G4$NMFEd9O$9m0eJvZMq z5a8$Yyt*_rA|)rk9KfCpqxEx&fzl$<=e-{jH#cCR0G_^jW~!`?N-1_1ngytEPd zq|^d)6ZQR@#xl7GL$K(z+MM<`HP$jU)*9?$Za;AKoQV#?vj3zLI-q$cA|m+y> zC%W)-pnTPObCZ=@*5U`aZug^o8^_StogwP$8|N)KPNib+_L*9mT$W2>_}hv4mdRO) ze&64r)7<;G+i@-V_BjR4MsT;_7(DA`M7-=?vx zU$3igJa;W%z?i?B?G5&B9HXPzX?lTM5?-3kxh;=&@{} z2a(v2l9rp7Un(snuA{9iNylWi{R}_8Ig*)GNFq_vGYhuty8hb#%gsw`JNnJgK}1;K z%h!yw%pw3edF7#zDXAGnQ^(nYQS4q;UVZ!iyGz$z8tSW=^wI2VyX5o7QwDl$%wn*P z^2*w<$kedNl<=suFR>ZkHd~U5uUl~W9gG2@&`}wcu@ffU!4kXSx zirNd%sIsedwLNnabNMlUebk=^!}hziT(e%H(Q7g8Zu&xh|UJeCFyq$5Drl?3_4t zj1B9zZWpcTZPl_dE7qM?ke76JY?WVSQT(p8KaHrAuqcdW6&Tp^{BxMPnmhn)Eyb(n zSC5&zyY+$Wf<8)~H_g#|X0+Sn69D98#Z7ywKDn|)SXQ(3S?ji3zI@$pxLdzt2Nw)- zHmj(tJ$BktLyZgjs@75ahP{t3-wCud)wH+PSvGf&t)+I0i~@@TawIY(J*NU(>ZamR zaZx*#kJ)r*j=`#p|UNb??J7sbJ7I(@3IRc^q3>LAvx{Y1h{?c~2RPsj3oRHbLrN5)f|zWN9x@wT-#|Wl@5{04pZl382{Tfx z408yZLg0$u&AK6BCM=z#?^cF)c!e*ZCcWX$l#P&KSE123T|Z_xrK(%AY58CB5eG+*Ymz8GtQ)lQvt zea_HV1HS8#QH?LX4Buc(ON=KW9RufE>5kD82>sJOVWyo|W0h+t+;X;w}NiA(_?E-Iv? zC~0k`Io{n$ScsW|O?Kww5w&&R$b`$7# z0Qp6g-{P~&D~T1AwS~o1wZsNhB`FOx8Gb%q097@0xq0O;{9_A>t9);*P>^G3>Wty2 z7==Q;ap%qEo!575nXzE`RJIq*unC`@=G*Af&o3zRefg=Rv*06YoaB=Q|cT|2HQ0A6P>NyX7U?E1y*-VmJ>jbXd}=tp)-D0XFLR zl8s@8txxK4FjT?gRp`3`k!i4GTQHPuG#3k7$kI)=Li!9V>q$4(&9zxL(M*892eb)v zH|QVwigNmja_xlFOXj%jKl$9!b@%$ELl@0*Zef_#8VsX(9v;G+8LsxWy(iB)@a{wO z#nUS!l-Ox^U{btiI)JCBAT@vX(4T7~k*Cf%v~ADLqX+(AOEj}h1U8<vMQk2(VB1>YDEkUK?TnM&zt4~#rBlw1fhRVuHUS3`)Dek8t zAEh8P9{~EvW1?<5nG-7TFDhoTlF7GM#FkHt8nk{zNh2s+O6xGBc~Jp0aHyKv4M@mE zB@y~u9{p_xt=ob&{b4(LklyCwAI{&8+O^DKysKd+Cum!O$*^3vgB8yk0Gn5i7&FXb z%uw?yX^Jtfir@ zATKAu-`;+R160@4=jNAPycPI8G4JxR*$j{2`1AHHsrbq3AD5rRzPU09NaA>rIi*mP z1P6a>*%i3`1ym}A=pnFsB!GdQL-1KySr;x`xOeYfdU`soY9J^msHUbie*E|a3l?Z; zaVL7x5=Siw6e?~d;#?edT4SI}n+NCDcJ9Df*F!}VJOt#|f?;``)`$?Chk21W)G8mv z85rgpqH?g?jgzZ&@rXQtxNM9*iogGWgmyQN$x#c#48`#D^w_|NtWC#0oVp$P^wbzx zsh-gR*ptwL5?b)Rk-n1mjpY$B>5qIOW-Py)Ur=Fdsr}dX3BC1|!3b?t<%NUj zeGo|q%EQ$kh$zH)C%Ck|?`aq977+@op(e@s^}7uD<(PIFho-{Avb&c;SDtsWQVYC2 z&0zT7CFONpN$@>0cIOOMeKoE6Y987;zPPk{{_5+WB2(KUc;;{)W^?5n@6l799U^#o zu$&1nGEh^HmpXdNbL4OvZB0dvBkYC-QfPSml-Y-F{Jq9)Fyjw8nN0cqBlG>oSoiTe z_U)K8Zx(yo^VZ4vBj;b)SZIHFvz@awx5kqmPO$J%Zp@uUT08^6`R1?jCigq&y_%qp$*HHBGOS*Min&T17-^Axf(O zpso?cRj96G++5SW2>6t_`NRh;6-gcSf5R?`5s3Aqd(XcIMr7p`)l}8g1K{Q1(NUK) zH&U44VJt1tb*j3u(qck_{9ULKP^nkIcTWo3F@zV62^!PBF# zxN6h>C!rB3uOF=D_#!PprJ|;`!Ol#DeteW#*dc;1tiYPvc)j@-Lki|7C*oKj-YtSw zr|V0xfgVBdU%q^~di82+b_c-6$G2q3l93}vcE)}AcreEh6LoOqBw;Fy1xeyB@u+IjM+*lO}pa*9ie?oj9k|5Hx*^#6? zY=4A^RG4W(K>||$bfZg(H097#q%qtav<_<_e#nY9{k!LA*nLYX-g5Foaz@#n6;5LY z>vwPJuOo>3mcMN8nus9bB95Y9DkVet+BEzK?eS$jdLie*2B9$Cj5*_gI*@A;0wg~@xS)&I-sfb zjRW|1V|0#2Iu!{i5d*ux!cOeI>hE6l+TGoG?YwrkVuFH5Sg4c&(%p=W?f1uYAdE3! zgSq>D{?c>Kw&QU-&w1;4vKZLk9z9J&`4NKoe+7#T#ae#v>N)y;`URF;z+c`tHVpz6 zLUUs|Zv;-F{Bt3E&B2!oCVE`j(Z9|UgC#^eSEFgeocEp$ZR2d@X0P9?y`_=9YF2JZ zT4s@kYJ=7T$jT{<{+dRwYceA>HKl~_=~>zNTJ({TJKYw1_=b)#A?QOB#4H^<$aYQ5>wQ#j35(~j(LqP`m4b@ALU5q2I zvHvB`j%c{%dr~%b-^b-3JY0;X&O)`tC8x>G^F5uha$ku5=~3oJHMce2MW!#>{w%MM z@%-e-1~|96+46Vik-hE0Kc~J7OI)=tKv_{%NkMkqpB;L4Y|si2tGC@8*xS{(xT>}^c9K8x;OU#p|7-jFG5s~SGI?9ZVMc z^v#d5vZ8$Cr5d!;qcT1v21lj9TIl676bcwj5uSx;NJM}iIB?+2n>V*^-8x~ygo@iK z6iTN~oo?Q|>E+cx>1HG_x>tH06jg)XumLlsd`Q94`v^{eS2OrcfiN{t>OW!r$ww@? zfcOjyYK4G(?s}TP>x4;)uE)J+Z+m)L)EM2rr{u5P7x3Wa*LmYxE#CROu$ZZ=C@67T zBcf2?(p=A_x!(8zj;u0vOni=&DP0^%b_Hj|i%-lN=Hp)HH>Xf28&{8CzV>vxu51o}N{-=}1s|R?*z?t?aF}xf@e5 z3cF7{Z(^W!d;egFBIi7hv7Y??31A7anwK|=zNAFVXsD?vNi!BCfP{Q+gm?EdW?aRxZa6yvg2RmnSHay3!K@S5 zHy+&`AwvcAw~g)qIB9{pw9K^3V!nG5Q}ef-2u?{aWR4_=P4bhNtOEB{)BGPbjINF*u+~>ZJ$BbjRJ{L|6_@QEDXRaKZkX&ga zhl8~TU+()iY{Edt0o`o?>{!^vKWou5gX=Q6- zq*L?jf10!K5Tlg&IrLB+%EtwVe_gZv=8GE(&5ZdiK^EFIzolWm<1U%gFQ|5pP&!m`S6;yD~m5S>iggeqYd@=gsAg(KQ%S0*S%G+(1_HRVTnQSk}`A3yB1uU>&+SGPFHKVb#ArA zW^+zodUf#Bvxvx~cJ9`beQT(=z&9g(RkE_Q<%>p69`Dtz+nhl@?P{FLE^fZVJ3oE# z?%1gZCdN7&wq8(IQ@(g=ajTYsrYdJ-=7qm2Zv@}DANX?q?Tc=xM0RxR(v&=y-Myhfo%m&+?)lrUHd z71jbJr4?A4(yK=I?-?C_!QtTO z<#%&7JwCd|TO6M&B*8uNHy^xRx9iT{^&{K0vX&R30Bd!b?D#U!*KFR*G%+djM}QZ1 zM}75GYT9&}y?O1#K3=WNnvc13dP)DjHRo!XGILk#w`6UtAM-qPbu^yc-=wZq^HiOx zL+`~UOurYOPVSz-_jn-%e@GrS_r{Uc-tLYD6$jV38J`UGRHqGduC!5vWAONOP0f`c zba#YjGaP@0-Yyu_s`9}V!@QClCc0yyJ4#rHNJUHrWE!tSM-;NY#f2R;c#AnKfN%md-+ngq-^+oK=?O2iGYqO&ixN= zzy4b!a7uigRT>0UkeB%sn|bSL3~%OnZUJM<(bq>VzneU`#rCtls>-6Dd2sMT_~xTQ z%cr*;+1svaM|4(h@r}pPBL7ekqS2@d^0IDDX2L}G+PeGTP58SQ1%VZ5#f2B_3$v3` zve<0S)Cs+)REm{F6Dv!hlJqf3nQNAf>D99qQx2=E9}^f7V`-+tcf!0dvT{o{9C~&3 z_NT+EdseOH&W+;L)m;>mG7dU62Y@l{aXAP>h0ATHK!b}RTnzCnQLJYth(rYV#!7TU zh*mKZUWegri{;g?l@)#_-K^ty8iAFA;o}Ah1>GGny*rj)#KHM!X$b%cnTSb6R|mM5 zW3LBViy%q1g!-P&psOj!|C;=-wUgnYl|2{jc((CypoxJRfES?&-t8?zE{)-h#ETGz zgNye+ui6*z?BocmpLsYdHLc3n90^aq$vW zLr1Uwo|v(B+aKLJyNK*`>ty-bQyo1Wzs04p%F0+}WhEt*2Y1Bkb=cP#i_R{eQ+~%5 zvU8rvVh6oVy8bxo-#ecMcC!h)JXS~Z$6`NmG|+2QF&{=52l*vXRluEawEB6U`Ie5i zarp2Z<2s;;q)r%~fK0o1Vf*Lr`?DmEahho&m=SNqDUF zadsx&#UnZe0Cd#gVO{M2ztptdDY_mHU%YGY#wWCNZ)@JAwb|pqxV%CJfMwI$ieoxD z*V=Hnc;SR^Up<9F*}iJnwR>TQPCcKw@QjV6 zzOA)>TX*ZeJ)E?w8~zc(hOHM2n`qs=x|&9-@O5mYW%0A7^;@|7c(=X_DWLfDZsXj- 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
ks;{)ze_eL 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 KONE$G(Ek7%HPKc8 literal 35313 zcmeFY)l*zg^zJNE^6D+v91$PNfa2?!ba0tPJL+~NEySqbhcN^SwaDDmyPMxav z;`{;U;#^GaUHf8p*PiaRp8l+7g{vq@qaqO^0RRA0Ss4jc008zc000B|1pEHv=1j)) z{etKyqvHYqp!NRugBf%vG6Mj}0kRUJ>Y$91cJEmIIp6&!p?FD4iNhc8$P`uP2MF3< zNlc_VoaNOcAXbcVDBb9)*z})9qWQ5=rU`!g0u$xVqKH@6EvQzgFx_$b+RbQwZ%Y$T z6}+e@PEF5oxo;JH8#uDB`W+h>;4~CA0ONEgFH|L-IGU%nFBDvmyUjWP6T z!+m1f>!iCC0CcsvETq}a|EO7hVA{(Pf;=w=WO$v09Tnf!A}HQoEGrN8l8mDif>Am~ z&Dsp;0v_3o4t=K_H;Hh*kwClJQE0lyjAD?wPe!#O&d3dVN ziY7XmKTKZ7+_eM%kjFQ0yeFU&q!`JBJL2_!%D4@?C)JX1wu0}5x22B!=Iz5<)R=j6 z$s7eQXRR*tsuh@d&o`Qg&QLp_d9Eg`MH*I;2eOQRKC#?|C59U^CtG{IRT5Lb{Uq67 zY@lU@;2vCHLkzwcNOI*zGJY z9PVC+t*#voxm`cF6Ww;_-J4$5M!XIlR9+Zyu0Amo#wDblq?%bBRni~}c3Jvhgke@X zEktT|WIJRfJsej5j0(qI5k*t$lGs-6ypBF(%e9o$Mh5%ngczD=$BgT=ik~r&&)&)n zpBc}QSmzrD8|F&&jVgA3KW9AJftW5HtNt5O(Af(|-wikx? zb-pMi>fY7u5U=yYwalpQ^b+r`18=Jkf$;8hTRII7i$e}@!2ruLp>Q!rd<#)X5r;8b zqGuAp%;52s*4I8g#WlZAwt}yhTIGgdnr4LxrC5{Z1aAf0(t;!V{t=O;a-g;jXUgBY zg=la8-MYsk{;}P0S9B`)^HI-8$IVC({pzKA{Nk0%^UGeEBj-va|$EV0U|RsNz|{>Z^52Szcz|0$w zeh=SysBgBhSD+t9 zIw&>BnU&N3CMQTRf_ifVqIU4*YOFsbP_j|1r=leFSR`9F5=bvxC0*taF}_^$i{afL zW$PG)l!!y}*7!6!V5XIfo*pdC){m%c$k#6ALM)%JoW3zZzlY;Y?>!ENH#EKOszSft zlqBZscc%IW5jtgKl$3SW?eSeM`hI%b4^QoU>s9sHLGcS}3FDW?M{Ls_Xr&x2njH>5=t^4Q_bqkX^m!eBEIuK27!9;n?Wy z=D?_qlhMheyhspOxOU(p7w$L=ysdDf9WMyv?G_u3og3th}Crtej<)t1Mn zPOAYu^58yI4TTH4d6YCg!44$bf4S{T-2Z*wV-1=RD6R#rw@os~sdrd!5@T`BtB7Si z%S2N7HubehX7b@p-QhdtLeRZejxYO6Ai)9B>Zr1x1gCDZNw7~}e4kx%Da$o&EC>5u z$9mMPW*`}->{C4X3%w1sH-WVaz8yxA|0*BdV$N}zAIdy3`at$3QopI@X@R5s|KeBN% zh;fc)Sh=lB>`@m$XlYZZ@bAYs6JZZ`bH?_)`bSC7QgM41n&{?^%{WOzWPx5$(9(%*A&0x&4W!?T12`u3|Nw zI^DYtd#O(JdgaUwepJxuJza(X8DLx#c~nujWc$acW$9$KVe-8^rP`?~#(hU=CDC$C zzQ5Twi@ccV_Z7-oXR17edEeR*z|u*=gKA=p5_C5vc%LLhaJI@Qm7Q4fIwrkV9JP{? z(?lN2Dp${rUf#N{xYs}6o;IEt92qd3@ofH>gJ^$SeNB#D@8oMEwU))_c7)b;w*K&q zXk^c$?KYKr98)knn;4SD*ftzmqvZ$q_)qn8-IWmR^Re`Jb%OaLzL2qNUcG_IUGPYy zTJwPp;zkDvPi9at+X-*wN$7KS~$TZTOvbtJ&4<8FF=+61hY+sNk1N!RYARvXyLdkq!Ej91;Z4 zwgq@7Z;yqTHyVtL@e(4P5%zKPFA5Yyg4GnOq+HPIELf{od z0>mf=NFaFmqY|8gjK58^0VTbyFr2ttd*p?Vz$Fgpj{734U;|dR9}C}qnyt&yjrLO# zF=pMEjQKl~ELZA0Ztt&4X6oArkR_7h;U2-j&G$2og!}G_UMnn2ibgU7wq0E|qBm2pR zFUlS#_;3clQrq?NZT$nFbo{Z)7x=ti-E9C!d42v<_~>zcf%nfCSo3o0I}xvrlm<7Cbs* zY?Gam*bP9?svRPh-nNcDPv0$Ialn220lP2kyoWn@Yb{~!Nrp#Lk=mdr@yVK@scBOP z4d!NX-W|n?g)ze=_JQE&tl+pNNzL3T6bH_4>jI{1wIuPpBQS~A5d<5iPPec^vB_DU zvo9`SQ39!4u5tH@v`3##El(Z!a@Y$qd#)(PZV*y@lZp@&qv&kefrB6_W~<8dA5 z8@m~6t)Pm@A;B8@<`O0SDlI6F3|l{spUb?@SVH8{gdL!32VG2q1WPyQv)yX1G{zsq zIO9MFa?Ei+u8t~LaCB($UtVk9MR03!HGIo;u*7+Ik~nq>>Uqc`4WDMop()%THpiKG zDyW|;E3HlCM`7XBQERy%v64)ifp>_zpm%l)R~03)$=Fq6M;`eF9e2wV1aBxBHO}3? zH1VW+_2utGYK&sN;+3h9&7f|!>=<_KL9sf~I%j)C;&Ut#SoS+8NEy0ujz%(~)+KlM_tFLz1J&{xLBqpzFuTHS1? zD*G==zh`CyT#{?BMw;xVsrq%!X=Kq*TmXixTtB2PWd0~E8%@R&^|(F74_OSCuo`Yr zI{O?NI+|-kxFKcdl<;XhXS@Pkjz&hw52Gx;r%a;#Du$-N5S{!P@2k0zIL*TCl==OT z)A606S%fJ+EE#+;egHYHQbq9U`%&!s599QsC=`LpRM7U#!#W)>C?U^lU#5+;6r~ks zeER2-K;(L&A$co|6APcqH+-8!LQa}$SuX}XVbZ(T^a2QGPlNTQFrCfKfaBCL$BHlP zDgA!uY4|jczPqkTyiK~^ZJNw;dh(dwN|CMvd8Wbj6w%uAm7#Etkg9A>Yqr`Nf^{oC zeS!s!!Ndhwfqtzt{2PWy#pKe)nDVz!2 zg(2?wx_xnLuTOHv7I75h>F6AdgjIgS6IlOsg#;JVm(H^@1(`EjC+L08?y2Xu2G_fs zEfk)6d*PRChIyU6mN(4 zVqnuJ^2z*wS557LN)1VUnp7+~UZo1E?gaAvhPvZE)=1%hjC<2Eq7Vif*IqXshU+NW zBm*s2&RkN|#}jZZkd@)o3VyHu@M;UIoBMA4v#-B5^Kl1W;|S7sSqH~Co+(gowVRs` zAK$l%^=p=89KGvzIe0V4yA=uM+1Yh4U>5$zoyc^ZIz#WmQxA2hFfsp21Rs+>v}v-J zIcsVd9SK%BD5CXuMCfWh$Tx%$Dn)w;*@^!uIDv*I7>I4FSuV*GsxZDJT4%p>-{-T? zdSG?2UXqd$m2T~vw6=9N*K&YpAMMpUK}5B9?qfehX3uf9s&@@{iA2|Y5Y#npA~khY zH==*7!QDc!?kv7Wo&Jsv8Zyt0mPm1x0*!kMN@huKcx2bwb|soge#|*Lp!NqWixInK zicNrz+W6!J{+q)rs?F~E48|orO8$8M#q==VE%ub<3v0K<{w#bfi*&fON{9Qj6Y48K zpLM7pKvjygJj$kHBm5p&b#l|+@rh0`x6{MGzd}=7Nj2m_AzZ4QG719;L2CnF6qJ15 z4ijTa-)5+wPIUt~x5}K=Wyt3v$PCNe25!I;jwEwn2YTWW23u(Co)X_>A`B(>?^bBeV;6Eeyupu z8kze9JHq>7D3rO2btv*ARRz0$vAvY+_=O}(5oyr9GtTv*s~KYLlKU^m0VPN0FhO8I z46C23`Bw<44XP;=ZOL8F$UslIC}hM*+*t!&NT^XGY2c<Xk6-?+N$2Iu!$!3(mX6 z&3WPpS9eFWnV@h?k~`wc{RacIFq&5JN}4uva!Cul~q6{{HnVJZ_TwA+NBhtGkdB7+(deDBkK5WZ7@F*o21-_#7aEM;5zNfcxTJtlS&Du#)$qzrs2_UZT?}^NXV~6 zL-$Egw(2P}PSgMR6+_5Mp8~vCCAYMzE>MtY=7_qn1y$7kQ;vLYYq9Wr~5PYPAI z7slnD`-ek^v46UPINO`O_S0Tp=U>FdHOLf_#dV=#Q&p8x*p?-zczNO%)4V(;M8>N5 zR?l#WNJIPFit*SWBc+{207I$ppWg-gofebCD`zxeHO}>p^g#y8Q-4m?$;9^*e{9H% zd9~ASY*I6pj0)@n+R!z7`BuNWqSa>F5Yb4^EuS^e&T#mvD1fuX8yrzg<|CJAlazH? zDK`1dkohJ_VcaJ(>a@q@bR_Y8H!TSJgfP?$j&eLm?`V+(@xy5k?{=0=dFJ6x zG(JDkz*fe)#~bXc;A?4rDs&hmkyt?G8kOku6&y;lxJil$EMAo~ltC<%Ng6vNhd!nv zhqRLc7|G6$`0rIOQ&H2L#BB{qMai64${okC3B&QJGm;*p;7|DOyocz%Q>P!kS_R~= z9r?86A3(N3epgyL)>`=8TkWg$s5G+($ddlZ#u8rzF;b(Nx z+1>_NreWjRt5~dY9FJTg=^j`b`Nk6xNoF92=D@5|ca6ny4371=p7lsUlq%^Dm+5Jz zE{dnAI-T!AD9YySKYece_nNHQj4p!gBQ;d!$1v3g;VZ&)z=dtBSwKxV9f~V*KGc=h z6ri1U5zc;RoLW=iR|lNe`2)UI$AFbRSL&2Qw1%3bkA~5(-}M(V4CYdIP-e(!SMBs{ zw@2_bG+U9}O`)Fh)Uh9hO@I00wI}5Y(_egB9_rdue%7zMqvO3pn?YisNKUf+W{{!=IO;#@3dX*E9-_VeY5(x|up zkKokOu^bOIk6R7fTJpqtl=v2&vJ+5sP?UvH4Di_SY=<|)g??Jo-RGxka#yX#gibY? zmR*3(L)PPPc9Op*EMVS{z1^G*wO%R882jSX7(md9uyFPv;B>`lhVNtO_sx=@oT)sE zla`~u`RwsreCJxu!i@WSEKOo{*7QOWQ&?{%gFo{4MjfeG?VCXJ`S!=w8VGsdlS)JR z8`bR`!l1H_v7WuCoJ&80W1$d7(dpw1ADt3NON6VfhnNSVU}On*xbN*dVBf~j6y}C* zRC|-QABy_eV*ngK1>G6n+;I3CdZUEi{=LJ%^Mg5Gj#wWjaX#1ZoOy~TnoTrqm1lt1 z{OWwD_{_Hr$pR+)8j*15ek!9diJ?dT`10FJMDQlFilvNlTsT1NAM9n3G>Kp<4M*J} zc6bMNixwo`F?a+}03MK{f7XIfeZK=b?utMr%NMV&N4ZNkq748+i}#-ujFli7bm|(I z)>0XK)Do>ref(spw5JDaa+{_3JyyhbR%vBz6o%Jq@!=T1T{Ul`?#Wep^w>hnjDUj;omXb(Kw+enh$b3Tu{g_ zt8+jYlnWA~D~yeyCzi~GR2OS6`VXI{iXvil;jSLZxB;&QIeq-ZD;m-0v)=QwFtb2`*-xb$Y+FA>K+JpA{i@e!TRW@(2u6hu;RY!@+9pKA$eN%% zw5pX%H{w>u@2zH95Gq^jt*_#iFX?7XvceBaBn2qxt&J!+O*pE9>@axz_>m)-u|QkX z84fE)t{9=VHX2#A5;iz9R#Ch%u zsPlVi9xy~Nbj{U%8~FnvO|($yN!5x=9Pn7HN?nwx7c?+Sw&5OhH>SjOvJYtu&yWx2 zsa6bHfqZ6zk5TQp*z2`WSFXm9+8Wcp-s|PiUev4?g7T@^va=ce~)m`5JIlmAX8$B!=)QQ>gHeu+&-_d)U44C&}oKCY>SP zzHP3;wd`D`g)##&kIFti!?dMre5&42_KN32+QEG)!vrWU-A$VAMqh&al$o;N4~lrB zZZWkXSeC*0V&-UMWXbHhQi=8*XI{K^KZJ>Do)fW&Y-{b2Oh+%dX6TUp9{DY`wB1k6 z@`N4>C!(G?Pp!pBCd~1Z>*Ul0#@UJspfOU5U#$ktT%YmFYZ|%S*7zY(2ykhIjDnKIRm+Dqr)2u{$ABa z?c+CR4KLb1PeOf@{2IR_QrA({*i6e&?}mBr?!fZ>7yjA}Ii*h81dK@l;}2eYi~RdK zWfrU7t?I9)>SU$}9O<|%q@UZih(jvsDj`g&IOqS{ z3m_sCE)4)QwjrMDVpuk^IoW)fwR4T@qAl9poBh6=kI_!cK0((q9AB}Tfd0V^KiS-C zC6mbZfQ*QqF;u>gTT5cL1R{?hM}^Fy?jn@+Ej;4QlQ_%Q^H!vA+rJHS#bWnanYnj> z^d!9xLcQ2ZkTTGkRTA1oNpuYVJ_-;^nto^R)umC-D-n#*#l&g&bl6lYI)TZe0j6~K z%Is9AIqzYz`4jU2(MJ5Y+v3xoO%{&ky*EfZzUW z;ql_nCla)t_*b(`4uoOSE%Nw}9e!1^2B$#uTND8)Pss#zHGVSg+L-!nd2vGomQ!zW z%kSSj~K;K3l-J1Oa8;|I|7%q}a?t* zgY875kt80*JY_8B93$jQQ@7V6bMuBL8V@=wJ6|URMNst31y&j05ZC@4Nj_(o?d_*3 z0ZaPF4$?3R1G4WF-ZL_-uctEDdiEa>hLne+c|2yZZNSi630_r1v-qE!b7y_revFLL z4@@IfSLO# zRUffSscU%@@1wpS@NeUA;YJ3J1mUi5e$Ma8kqM!1kVj~8y}shP_mGg7s^sNF)XCHM zxVu383zYC*+=1?kN{p|z744Z9VUh>;R(NHHm~{Ja*{rP;nG*)OxFQpUDg^#Br{CVU zP&z|`4s#K=?DWS$765ScnJEt1-}La1dh*MAwiM25TF{14T=7n}T(jzGBU1(oR=LjC za!|tCpX_b*K&Et#aG9;zzxG0XAf{?df_g*eP?C6h14ZpL&%JGK1y{4nJ7)@%L}HkR zIUxy@)TW;N7ht(MIH}J~&1wK2@CFVa?JdwK$Hl)HeWgx-GCVq}`$q2mQ9*}se4Hh; zYJ4}h{OkJlPT!o*Ul0~@2jaA@$wSLC5rOiuG&;VV- zNweoLh|@r3yE`fQk+s8jbj&Q5@Rb{kC@pu?l zyQOIncJh$|B9g-mXCuo&@JZH!S`AC1!f=)XC5c$>Pny+!B0h0}O&q_@U}I3%^=%(r zyUUJ2f%srM7CG`!qnx{soQQkQcSTo9x@)VOpiK7=5V;^NHsA#$H>Bj%*T^Q(hdE z8!kfzo56I;HeB#-o2u?n_L7Lt*?4f}F1Je3$V$O){nsX+X3DX>(uEzK(n+b!P^2U# zLl8kVS4Z@;l8hJx=D#D^N-MqBIlotS{*QG!C|(a^X6^n7`rmPDwoN7CCT8mTWj@#F zDEur9CY?oe-DPzh&FvtZ)2955bU0}~X`64nQ07GVloM&L({g5~t&G3SCKYG0xFh+L z7gNQ0{dTp_oDKCIGCvYMg{IpNrH|9ZBliy5h>Oh)5i`us`RtXDR^G-b)X!Jj{#dus z^e^0!;uJSFKrhs+Tf!L-`9X?$->Nv4Y`-s^oq&PSW9D}pytC~0*tt+a#GK?E-OTFjO_1I zNTZZ=Kb{07Za(~0ZKKaDEuPD`%7oNWH z6QeI(EKf)@b>V4W!$N2QZb4*B?(NEpdKgzs*!C{(QGnb%sEDrIy;c8)?f3t$SlQ{> zyn&`r9g!KypJ~yZPJ=wr{rCJc={vQvir2Rl0M|p7ngY^4p6iI>mt>LXepP~qD48Ww$QEZ&2LGaPY&P^>6Hpg79`v$Dk4rbX9JIbdtBKayZfBh48viys zOGL5Y+#?N6;0!xz_iME4BWB-;)yBUVNSMsl(|&x>12?p$Z&n~R${$`4_{ij)+9Sd^ zRF+s4$!!i#q}1A(4H#@aZdtKfchk39`!&-DC}ZFMMSJccZ?}8M*z5v@Hg4mQm8}!q zo<|1uHu0e~MCqp`>`qU(y5!C?X>MV%X8pYc@{$Ci&m2hAsvspvl2s!9771Rq?ST>j z=L@G@ZBW&>k%jO=_9v_O6jF=b9Z??=Ca~thcn+h}HWvFcO|$GNPp6sNmyaF` zDfc-UE+6htHiBCvP8~AeFmiGOt|(W8?K) zn{#csvpU9!pLsfsjZ67F`eUFPII=vRW{R+rqL5hVZ!?W%SrnGBiM;}=$D}EmF+8%v z{>6(DoUUrPx40_fnAJnuuWH`0@O>ozJz*WbdoPCYp;U<(wT)I|bDvimS@bEAxbHJ0 zPa@PF0Q~l!46;YDk!CLc@p%-bQW*-h3)(_CnvhP0<@eGeG&XP>*w-=MK!Ph{9rURS zF=uWCZ11T^6f)K5>F*6a2&?O}dsjuRBpPdq7NxYoF)}l3n_NBall0WV6t&$kqHfJ4 z@I$`{S$iX*TuftsQ(UUH=9fPq$3-8{p(8~|bZPWoIUOeu=P48`sLIqZAo|AZQ&D)Z zP9l3xe8y`!J_WgJebMajO7H>k$eR;o(Pt|JQ z*PLxzR8P@-lDANL&F&T=ulD!NjX;cYi$hG9MEg4r-A=9&GF!62oQe#R(;|6vw`fLh z8sb+zqjLo+s6Kz2bX`yRmsQv2m?VxaCL(epv_RT2hFQKn4cOvOf-8F=Hg+7%E{bn| zl3uq>j5h+u@frhK%7_0revU)migg*ZV4@;elYuEY?yEN|*L}qG$$}RwH+?tkAdEsowbU*g;TvcLKEZpf1-VR5e}h`V zIm)#_4s>3D|C|+pP7Pn;GU0V;_C6cf8jv0pU#kkaXr@hnB`%^QyfhYx=EVvj4yol+ zGTimKLS9gwR#iny@@Aw&AJwbV~dnmFY8xz|92I z6=Z{u4*oNmWHlVweBCg1R8DTflH}>+L~cJoLPQI#3u-5bDU7MY-Z^OO)z8qgFxQUB znd8ib-`P#d-QANC6rk%$C8q{{ky!4vu$l}5U|Ehz`>D~5_#nZuaJL-3YcnC%=_A9S z@RxK30p^e6)8jg$mo-^P=)J}on0em%R*t0S@#%BA-xsl@Me;)iBsfcpaE@rgG{2`h z1Plt(p-j-aiB)OV*D6?NK-uy#SDIIhXVj=FcrzFNs_!wpC56B5s4FR+cNIoPV09CN zqEJ?J)YT^AQX-wEm5rpi{_K0BzLziuIt;}9(~s{ZH(eY>wP#T~=$#lNJ}Ml4D!+hA z^VG;xUAx>&>Q%7_z}AUAFgJh-M5Ij~DPWm9A91!!#mzsq!mOk^t8$tLpmbUw zl&&pFvb6K(7c{%XlZgJ{l{UFZ!>soD_X~u^FjwgJRPF@7t+_97e(Igrb+5+Ts@Y1d!i$6 zCRMUgHmV!muD-5byO%e4;iIm$URc|H)b&GN^TYPL4~q-ivZ*4H_>kZdZr*f4SnR-} z+QZ#p5q|pxH+iBNua|Gc#>WS`Y6dHfGkK(UC6{7l0etvP7Gf9@RJf+Ij0|PZ zz~0UuJR#G>$L+6@Wn$Q;aq-rOZLE!dXdzc@Qp;Rlf-X7HpsF1+jKarz$+co=*cmHk z9|J5$%3HH#Msy_yq^DNAfu9{Bw|2Mo0vnOucxAlX9@q$1^k@AJ2Q=AP z3YO%j5{Eoh7b%t1gr&D|N@kc9n{wG5yf-#0#Czq}j8kY*oLlXWBehtpcrM!`-jNl8ntQnvC_EK}nQi4?BKdM23mb7lGyL)$3B zUZ&}BF(hp*2FZd;i^kk=gFR2cNTy+XOvKeRpq4k**U>j3T6a3eO=$Dd5ELHMGn9)h zIjf)+b>pFmgRcwY+bhIsk%wUGXn4Ap(3KV9S97g$={ReAf9STX*+3O~2)6gPS|Oe{ zb(sEuP+K6l@*y;TXRn?yM9AGX*qU#9wYa$Fd&#NVad?3z6VIj;%RcTcLf%wPn%_s_ zcdS(HJ<^v>ZOau!qpp@lK4T&`(AHW$i#l$+7(P#LWVm>%l;~NZ0{$oXkdo2*bMEP| zy1uSqa`Lm{G0^WT)t`NT+2|OP46vgFPo0_At zmQ@4^!!6Ot#!IEXc!@?tLAjG_(ul<+moIu1f28&lu^{rgWU)&%dNj?X4ZZqXRU??( z&}jX!48KE?9jeKTwz^!qp{i5CF{g&CK76@;)!8R9vO$N~^j=ls)87B_bOQ9;DLUH9 zOoKLB;j*+(Kp>hn5S;YF)+h|6ny|sVnBd~soiO;JiblBcA_wT^IYp9Rh1Ma~A_Fls zYm@GmSf+G~#SLl-{!sy*UAXM2@)BV<3NRWeVI9qB?3r|5;H=i$F%&l{(1k(EU5Eam$dc83)Kb-L9W~5HZh3ruUVd z*ibOuOEWVm*zO=UhA^ejP;PK{>Oqpg+I@Fg=^t#?S2{BR1g9gU8Pg9Z30T(PGQTZ( zRmbg}{FN&938~$ooG88T)hw*Ve+t!v`@)a0X)i8BGu$vc8VP`>{dW}uU3~XzYk(?i zE@l9jH+vNq*TMx`@5sBc9)hiP$1lb~jEpTh-5h^o7P!yGxWW{ORGVq~4VVKU-(3d( z%EX(XDSd))P^=@p@Ol=RgSnTlGk)fWYZu?9UI{tPS^JoN1U#=H->>=+cK{{~Q33w- z`2KFf6($WC&z^(G&3-EleW^O8Pd)hN>qp<$j`*V6z==nBS}CjNDY^0G^(tG%?O*1=;RKno``*&a&{6;M)i8m2qJzt+ zE3wXxL^zW?C?LP>-yw67dpcXYGqP@(YOdD9rIVp5*oal`m0bcV;dPPs_v(_$9qP;2 z8Qx!maham%CVtd;*?`sLibW>~C#jWljd?H_4i2W|#IIC~$bws`P%4>QJ{MlQ$%>XB zm-LY*(0e9~spgK7y6Z)ob+K{KS^D5NANXH7`Q##jVbh?7bc4HUQldT{y=<4Up2}wGbUNt5>%M`6Ae>bsJUGPu5>N?HZa&nI;3>* zBxhog!X2Sh;siCQhJLZl3#2t!J+p%$bI2#jQmD87IaCZVJRb$t5kdriL(z#&VP7G#s3(*;yCR zn=adJ{b&6w{>e+jo>`Zsos-l~7T5w-+6$WALx#KF(#aHj;obWNCTB&XoAlGk@tfAU z5yARBStQ+}0p4E$;ohr{L6Lopf66Q-zBwLfO_UQfohP)qflw>=xP*X$osV+2&2<@B|UKn2YU?A`r0KC&4+GO|VyDVv{fybQ*)@S%# zG|ADI3mCOz|{hOuMnw;>eIJ8yCX`9qnB_y61m&q zZIGWSeK38hj10oSV9M(m-RUE96f1a1zj+iGm~3=*eCE5Yr~Q)fbU_Ju;ekN4V7qSL z@HYfeKkOU5n$)fHLVYI$NM1Ta9xMd#S)OJ_5X!oZpq+Od+S*i8m0yK_?-pUxZ_8^~NYAz5gBpyaFq4{rSdob{R z+5j|D+E#Cg2O?#lY`U`*d?aQC07Sg7vj!gBD zez^n2Tdprhk7WhEBsE<$HF2!6b4vQu&TY?bJIAk@^iBby7{j@vVd0nG* z1B-v@ji$1q*Q+m9>dwvmQo>3QCPEyyMsXI)*_;0y?T&iiBbHM@GONBer4eP{WN@vj zr4Y-)9->=tr5%kk5hlO@_|61kOJ0{gSuy~n3AQ?mT{ZL`OB4#lc{&{sTT!5VAj*89 z*YJ1A@NzzD)O`4chNm=Zs(Ufr8oQ4e{{5cRTD#RkWL)W$13|2$by#vjHfXNgVKZcy zaP2)YA)2oZM0e!TJun6Xzojv;$o*7*Dt=C}9Tk(?5l0k!UrXd2JNUN^3BuzAOOfo# z#>%{WLnlZ9FY^kFAWaCO?2wNY9R9tG;&BEP#4Jo{~ z-92`mZA6Bg;erx2&-9>C*A7zj53~QQvv0LpRVHJi3X}9pP_-tUkeJze9%?`g2?8_1w~jnDomscF7Z z*1rz+3j>kZ=2g-E<@x@T=kO}e`{O&(FgX4!-nSu@&8nR=o?ch#BDGNs4%_2wex-mXtkK(y-$L@ck)GvO?UUY&FhNkar#&}gH7{uhD0C!6qT z%$(CB+$*wHN64WYT3-qk16Gxbow@>Ad*nel2Lb?Z7PemmZS!yF(#MoCP|oZ3Q$Nv3rS&HY*)RW10L`au>l&5;2M|tp-^sPUm zSk6;_DO>+_WJH-0cguO|CcYS?NrIC0T9adNuTkQsh&H!rd;eK!UT{ggO{$PJ zg{)iE&om%!)P$~tMP@l}@{iQK>${yN9jG4?F+9kekRVlTC0F}zNND?eXfVcmBMnYN z0e-o=`1ggpZlY;`6~6JzhyKB-!*=}01740bZfCO&6XsDSt@<<`1(KMwy8MTLtwH6g zee}jhxyu1skI19UIYb@p6ZU_42NEDX4qJ3y5Oe!^QnAWJ%XP_2N}ifS!HTbarrsy8;2a)EwO~V`}qW z)8@TtlHp(-ZDk1)JIDwsVDs15T#>OGRh(TbB;(_H`cs2madj?TS>$SWp?~XqEqhUEgPL_&s;T4BsJfSal>%?DSmfP z-lCMPV};rP(I_HZFLo^DoFY=ze3}JaZR=!>SGUc!U6!?`b1X6NY#{C|{=@opvl+_I zt!Awz`@g*ax0=e#^1bOkUpg3~87~a9n~#g}Efa9#H+_$g)~gf^eo-DNbl zgeJL1l#f5Cj1%w!n+ODfk*ykO2mTV8PYR0c8nH1Mvr{x*Hf4>SPxCWmvOccETJ4c| zf7GUHuN_T@jd8`0pUp0P^q{z;ZSY`(Ce|0J$)#`G|4gqGCYjmr`PKGdEp_6H(_3gh z9sGr^`qxZm_vfs$1~|>N{QP}Jb4@Des&Z$UskQ&SLUxe3@M}$$b_bT#SXbJjcmE9o zPug{1&S9YV*K+J=-t{2z@oUD<`!<;~ZeprO6~o*M;A+#};Lsb{0gKf|ez|4mwwSV`R4szBR`?&UB3ZfQsH?tcz-FITp59%IY){LETyF7O`-{6F;rvN`F}XgSYdKJ`|uKgped z5Q?l0_@GfX4fI=Nc^(|Q#vFX4xJ#GQ=#t9CuD=<9ecDTBImT3q^&F!`z_r<}bDsDQ zhHkkSitf;4EnJ(w2KG}pdpmlz*1E<9zI;s@(pvUj`6@I#{{hgK1v=_Bh?S||II^Qh?yjmx6D#cxd+@J0Z*GDKcue(3Dvd~@_FUB;qJu|S zQk@zM0V;S&wTUH17Idr9*yv4;b0+K)KcMl>kiF~o^8ahDsiG1~;n~ig3dF7iTPkZ` zH<#4azReHX%^GwYz8@HzAQx~(UoOi3)GTJUD)MenmeIR1$fod|>!lM~wd}4LnaAUL zTgiWBs0CxFoG79N_;7{jA85#YRL&AHyqDp}A!SOB)o!xBoJePYslZzET#uop`RqR4 zjJ!HM)^O)u{|*OV7(yK1;$+Lzv@fJdyC>aVES{zr6M2!>Klkb?@Yg$*pxxr;$Q3iZ z$qb89-@-8q8afZR1LHeAqg2YDMBpWUco^;WDkng;_fRf}vUo1HOPGKBe{{WNSX5u& zwo9W@0s_*464KqF(v5T@E!_+ak|F}q4bnYy4nv1@H#2lI49(DIe((Q1ah-FWZ~N2U zd)Dk)Puwf{c3dF1JnIcc2mJ6TqRHWami#;1fJsbPWV&;wYcf{6NOm3X1#nH%;%z$t ziVLPHbny(qxW3Yh!sSH(gkYnrG;bBV|GLrd04gOLN|*1%)IzRY@Llq6w9Ln(?(sk0 z^`N!(;9}v=#VC7>r2aj*yCs~<=t14%V2o~UBWp@!3LD-kNDX7&YpkDlQ24*K|5>m^ zgGD|BA9&)_3wa+n7Rlx9ziT4wMc^b6Hi0)T5lE|JDtU3!IOy^nne8*%AUg$C?a!Sg zfNy1Afh)G#CrRV-b}|HapiYM!&w)cFxoE*R9eX=fWGI~ePZ6CRu-7QxP6cVfH;&-0 z(3O*xT_u!p(ALrOnH0lQyQBSK4}JD4T8x5A3||Z#9CmnnFG!s9D+50 z)0|Xzw$JwXSu-TO);{)Ow?NX{5ROL5(}wM5aSoH=w9;|m1x5T zNA3z3)_Uy5MT=?@@ueEr+Foc|bt>663;h&|x5yN^d%zB!;e7N%@rL`EnBaUv>?~1V z8oSUeSzl>a_@Y+Ap1UF$8Pglz%z4f+HI99Fx64D8*343R(f0rrieXA6rT)Z5IzoPz zf3(;w8)_!5-J5kSUBj>7WeyY-JmZXLs5rSbGG#o_4FB#_rGv9picDLHsvGPV{eKdb z^L(9dQ&y%%e6EP1C!f7*6wZh5o3}sQ@B27pc0B5c#s53;%u>-{WCf#Sa6SR|G)gY_ z&b~dT-R_Wet=$&BzNb6pbaT4R5SPRM2q#b#zl&BHfBt%}-;iQ-Ip5uy9ehUo^LBf? z;WbIvj)7d#Ee|hz@x~X)eV9g*^r8{-3CsHRzqHj%1vdK0`wYaz6tg~3Af zBZt&Ud>am{#;{8oA}Av%h+)ll?|&{ z%dL}WTl4Gk`JpDF_-PrmYJCDyVCt6VV$K2oJvoYA3jvCbX`C|wS_28SwaUGAfGI?> z!wup3ZK?!*Fk`cr9GX|gQl5RuuxVWx7-=ATnG-Z%3J==2s31j86ScTViZ}z`Itt^}f5bq$7^E)7}6H@F}ci zZR|wS4EPPp@L6Hgx4)CUKllCdw-CAgen`}xCr3_OnZh5gZ+q3ayVNI@Xy`%B`__C? z2F=v_b7F<5$VvX|GkObMlqPdED~U71!Zb~!g&Sv*^2IWTu^4j}F+DI=JMQy!dB~Pb zb3f*qs#L6!)Ny4jo^kGozk@6KpP7dW!}nN~IqOfp(btz{E$JAW6)c?}J>$E`=%MdO zjlTQl^)cJ0vp2{)9kPlp&jq0B4!hi&Y0}~ui!u#cT9LQn$;C9meq?y_)N^IUewJ`r!9Zxs*{690(mYn7m@iKV z)7NKdjaJf2Ct!f(bOt07PKc*DWQ5RVrE7iXCjtIYR`t7!)u65G!hUb(_bWZ26{wZ* zR?kY<N9gPii7OLqX22Hb|~&d(5A53 zljRRUpB+oPr2aBQJw5H1U!x{CR87xHF2PKe(5;YLba3 ze*^7TVAM*IV-41H^}I%&IdBh+7x!d~0_3+}uB`RX)+etS?>UBYI}46G z8D(hmd6J0u)0IPBK3$B*EK>X___cA%mX0U7;+~U#oCSFIx9uLz^b^M6J8nVtZ^{#E ztZ8d`M&$R5%e?2}NPX#1lR<*@1S>GNGwn{ZHQ!xO&DN7B@7xx`mP~dx@D3?LGrH%S z_d>akIA9D+Sfo0Ra~bc@Er&9?YRnw<#J0|yc;2Zj^DxDCq=d^~zzYHOi_6Z*EAnd2 z3_CL0s{$Ic`gL9CG@j`?s`A9WkJ~xEN4}*z9$%`|WMI=r^n@Sg#=TCJUpop^N1LsU z`;@)}FCTFBtjhJ=9r6R}Jq$3lTD(~_m)#38&ufg0H44ehHzpRZ0W=RGtW^nyL4@~4 zoA}junJw#*vrBn|0mt%USFq?}v7--MWuctdwvWxb`X8OF^BXjj8q;qLUC5Gm_sA_O zTcmmoa_gkd8q3d|GH9JQ$eBlf!~sf@HCh{pk;V(o$JTSa#%%7&!NOyv*^0jGFffTP z2N^|*FlTIBG@T^lPky#t$XBtoaoURL;fG5`J=AK0w+fQ+Pl<3jkLmdKP2BKxp>PE#4~A4POmK(n=^v*z zYD!hNK1wf^vunqgfubpoTr~l9CKLR*!XYv@<6?*>${Kg1djjy4yfu56qTGga!$#yY~hS5e5~w=oR%^(2p>!%ZebOl1)uX^kDA0 ze}wH9+z(Tet4d=F+Q;eJIum!MDa5;S4BZg3tXZlsujfP!EDg)x%k7NOA8`wRisWX4|!9(0^+2L(s`Xm8QfAj zd!Ffyd2~4bN-VQidclXDgPLelz3gEVG_5?f+*j%st~Jxr^dDIs>s(J zDd}E~BVk<${KTW6MT$u2?8*XK-1!Fo0X>kCJZrnbkNaiaY)z zf6gQ4AQLAx3aSS>26Wp*iI}94P?wn#?a%7|6qFptSOt;{l zK1iIU1A+kW-YRaA(K;vV%hFe!dyHdm%!e{I6EySiPKYDgvkz7HUwus@9i;elri`7T zHz@JF<?G;!S`x6Ago9Xl$r@TWP0)|CsDQV~w zA?K8ZxD>Z9aeeruwh`TIF@qz1FOc5&Epc%6L}^K6gXwYHUqs3w8Or{uJhliA? z4SA0%I_a8FmLG;M5bk+;`Qpl+5ZLlBT04MtMH0%3i$aTdaMb{^@*(JEslJIVEm)e^r%Uyh($MCG3S?y!PZZ0)4teJTz1JuTDKh*$3E9d{ykl#@P!HVZ+X zm(|N(B&sKvtorpbfYp(p1(^h|#6yy=<71$C7ZTUT4!1Ugby4N(pne%L^sZgMAC$qU zs~vB0#d$3Hh*!U;o69N)ORzrY&wU~AFTB(}*viP&7hCZCWUK3X*!q5T>X(iLiNW5V z_Bfamersfgo)}N2A5}JB1KGu*gyhYk22aFpH~+YE+vJd})4#*POqMya2yoN(VNBZP z`PlwJT3Ar`2AO-w>)08loJTs@?u_@^&VA6q({XH%?KJb&6MKd-#&z1OJZ z;3HT_RD#fUp<1^v`G~=&`k1}()J9f7o>y<=u3;(sOI~%R|Lfi_K2m*C@c7pZ`d18g z9sEs=FCcjv4Bf?-N&w(;riaymBpsK)v4+A!`?PwJW2^4$_2;HEPJ~d58th3OA3_;Q zdr!g0IYA0IV@z1tw!lE16GqVc^qZQ^ zJ5jH(*AP2h+=AnDGok0uy-Z~Ja8CZt?bqD(v?ta|qFli$WBH#D>IsIwdY;BI6tvy1 zY*S=i{Lkg}^bEgmM68yR{=ZRa)v3HoYd=?X&EW2z{^luo7S3O6{+p=df)^K0&bu+J zKg%Ba{|qrf%dn~H(0ASHxh~DH#NWdL?|ieGr5}p>_QgTYxNt@Trrh%ZBj@`)lB{z5 zB=OYxUo4Wp!NUC6dgCM0cS3)7zxSnT`+e_QEEl}%lP~ZWH6+m}NTJN4tCxxP<#SEj ztQVOlm_rBjbNA+8y*e?YDqo*=*e(vw=8h~j-K_Q(Pfb|c`<0W(i^*~h+%llMbNNXC z--W!GyVcEFZQZj>G0pwV$q+IeNT%Kex(;(ODC<`ux;o)0W*U?1Q-_e90Z03yHsnD1Ur&*fMSI`;LyG!XID>zZT*fnky8XfmoI-6Y^ zFS|_FTS)~Aqwu(wkl&%V-wvd?Y9aj8ceoeNNA@i%JmO9B<%1>i4n7vCgti*q4o@Zj zmK=kL+$&r9!#uQpXrE^CI~J(2R;T(Ke7&XM!}OG+KwIlHe{n;b-Y3!;qDJF`A+>Nd z=mWo0@d`p#{~+&SNysZ*0_LR1Xre80)XX&B9!2OJVvYH?^Fq;7zJtw8D?-qzV*Z7M z%UnSD`zaijy*dHm^`vS&+Ak!WX`HVQkSK*&3~>d^sl>PKVwq0=6DH^O=7^S98dB2v zrCPEpH2Q<_PqH-w8l2bf{qZV33i31YC6wcUT2X8Dt%|cAAmHWu!+t-Y*7DN(T1Oxm zI_+TaK<)&rGpi!LL-)_ycC9q(>*HK5coy?kq72e3G~Y@Dj_1Sw&zeudWdijw_morQ zP&N9W8ep%&av8AV;o_@gwH_&4onykWa^cuJ95MS>O>tMrYqtKY4@+rzOhE?XjgwWc zFIgd{nlSID!Y{T=ECP&VcgfF6xZ3Yi@fBW(p?re?z5I0Nu)pF6*;bR4 zhfTlP)Gkjtc=KXM0N`ypr|A@MrSk2D?L@uuE!%AaMmr19OQLX3b@$w!!j#XeLfN@F z>`~HdFOiA+k&PlhoQN^45XYa{^|SmOzKKo(lTX`PyLDQH+6xUEY4X5;>hFVO%O~9V zxYN?@JkH`7fnH~K(@GBRqHYaQ{benbV>1$PaQ1T= zD4a&LycL;kSx~b5ww;8fmUGs-eDEtf{2e@DdGoJ7F3fo)L11jL>m8zR-I13_D-WR9 zJh(pM;Gy~QGtUOz90U&>;IQeDUr=mo5h)+Y!u^AxN$U4~V}+CZDhi2qcI`?`B?}oC zi~G?e4tfS$uHR+nQ_9i}dipR%$4qBf(=Bh+QWM$vvN5OLgbaC4oKrxAG*zoI-W-PQ z(QMC(%kpGPp)@HwEXJ&Iaiy4sxt(X8<48sX{j8!UWS(tl~DYPu2 zx#@w!!#U`+bsb%>E!|3fSvyk3I!f&E-QsU)JK%s%SJj~hrks%pPbP?F{eby{vwA9q zo#aqtcE}^o0T2^-pSF$)vrQaVzl?W_IL#>Fxh#syY+<%_OIOS{kBdni_PX!?+Ka8- zm*XlojwNo3j}?HMzOZl4Q1MDiLy1B?-hvfb3hWq`6?_`SO&%OI@;T{T6@Yicb>^MQMAQfvCaAucnS0Gtv7sLR^4Ty$>r88nKZNR)m~SDuVK&O_IE{cYL)KhiJ^q ztaI%M8Z$Er;KyGVpJWu7MNRltiwsl+kmxWsbG-5)5tjs?u{ZQFFuje-4Qc#$R#dMr z@iHd>ehJ3uF;2`*3de8q8#UuL5}M5qQ34-LUCl8xu|=Mg(tL5fw?@~L|2`)}Ao)A}jKgLS*q#^o=%D6MT-&{6kitjNw08j)s#*fiw2K;LT?IoOd8M zX#l=y8*Y$0Cyj9&v2*`_Q^)vpRDski@p{)a4P~C{WSs_GRc6mieQX5PC)g|m&uxOC z0u^YK^UzIEJbtdgyIW~#^2_9&wfc@VafmbUyejBU2xa}en)dz?fE=-x{0oCVOB-T3 ze=)>T-=TsK4Duq#9OT{aCQZrS@;Su7D-;BxbNxtDuaTla>Fm|1!g_b^MjUjq_Hld0 zHEtetYGgY!&os;-#cgH1oC|lry+-h)hqS)wbqwIT%l*ELMN5tB_4HZG3+gyBlK6NR zl+>Wd#lfFI=ZDRD_}x1i#GOxe9GjV`p?4U`^3q59PP&*RuP;bs7kDa$PNVsjHBPCy zA2T|b*!|hKlPc2Y+3#>|^2WXW+`au)`+ui_(42fiEhV4y6pD*Ie-B^Bd{uufwL64e zrnH|O3jMx%7dUx;@KBFk*tU~W{nWP58CA|>A1*52SS9(Fs*>soi07MIM1(I^xBd|H zA?_ONPV#iFk0SXX(JD15CxT(p_8kXA&rS7U0ZJq~_0f!M5(x81NV!D*U8s~0`7Hzn z{hY=lY3NaLR@~ZBbUi*=*M9?dn`Zee3K|1-M#&JMblp4Gwa$&^wSF6^kF+hGJvY(lsYwA zuo+@8p}eWP=1VR@tN#%SZ)qM6N0A82K1wWZdyn^n0NK|`tVBe|HA@G9I!=|XTIwG* z<`7a>K`(<&;b+)gAvm7*!nG@V!>ar z=ZCX)a+4M{{k7`dWg54u zQjHPw01nh(*1$( za!U+9NLc-^bFnJOeCu`+e96TpBkNoFe`Wzj(8{LYduV}{Wdkv^-9EwckIQS?5Z{>h z@>r~vZAR_Q#@YlDPY~m44_zs6G`*Xy=;lgIp$FmVH-Y$}FPnacJtN4Cf<}VU7u(kT z*X!0EHx^P*_V3pRpGM>aYvY7yLs#hmX)l`iB}8j-pOJ6{5~D6|uU+^KhFa!=hG*sL;CPyzhU)5cOCNsKrAeMc74Ut> zIRFcpYF+^7s6aiB9^tn~*MOA&HZwruD?#_>Cx3xeLzgql$r zli*v6uK*@sjS+7;!tIQlH@;Ny#b_>Hq5Xq2vJt-|L6WR@kw2~3qu3$UuBoZdB$5A- z;7Gom_Fm&zvZLT}Nt<`&abL;)>1oW*gbIc(>)h%I-|DO+|qDuYGM=eTS`9mfG(L4S|ic}@%Q@%OF#k7Q;m`)6ZE!O4454w-q;A{aSM zU7_i=K)4_6YudPg*Q?MBf0at*Uu$(=U4!=UHF+y}KfZWSF34QsyZyf^T4D0p)smLR zJu;j9CxXZC8Gm?TyJt0RmaWD{j%q9j4K9}O9R&}M`J%DjBFj9iYGd_adnIa=>L>pL zTN z3}(W7u}LEoD)diUVntlfwrS;+RMK?<^*w4?4S}Sfy=ZqB=naO6gU8H&6~k|ZbDdbk z_ky}!Mjz>teL~7HbFg$E`h&7&QZ&m;%?2@%a+RzqY8k(f1}d>y=K?M>F>W_Qvp?)a zA7XNwI+)^rouPu$A<657Ssirm8Ru`kw^bpqRk1=tzI36#BYK#9sx_-(bQ!)fYc-Hv z|2}V$+2*-ojf8*mp#Qa+N2n<7_s{J%)km{@NM>NFV4Hq(#bcLzMUdq;a~W;yd1bzH zhec;5Ld_1pzW`d+bQ|YtGuAkLvFp)8ag)c}vdj)K`^_NOaPz~%kgiqr#+wD+Xqq1h z=RH7l+_~jj6=BYBp(C1i{wK-W~T!D^&LPVnOEjVFj^an@js z07*d;s=*=}MyL)Z!HE`M@(meWKt1FG>F$;;7(-x^q9tA~ZsW!JE<*r(#yT5OODXf? z&N9sn&DY+Sj!?-T{ErEy|} z9m-1EGgZJbjKxy&qf1Uhur*=s`#Ovq2IFryHxraEuc!W&-5o1}w3Ekc>rh7@`q_30 z-5pNk@(H5^)LV{qd*5MYh!aWZ|ELz9a6aZ*jRW?lqjy!VLFIO}!`*jVFS!lS)HP|Y z`TfYH%$eq}<8P&j{(di_a*id|?D!Wu*n=cb#CPc#mid>9(Po`yf;2Y!$MKF1Dp-2$ z^;WYPkX}aC&?;BdDX9BZJ@W;HD6}b7)nBtW{@QY5lNTsa@BI}(U+rajC*Cp2{H}bKv?pKOnK$rs~e?ch5Kb(=BB|N?7 zFtb5%yZzMlis~kvVJd$x0+3C?&&k3<7ZF{JZiR0u@Wd!?p&>H6GJg2w+yjcs~cD%YC5eSYyhG*{hgu@8hFe*pg=1uw&x`6Z_htfz#DdyfU{9}9FZ&neGm z0Nb&Oo>_Nk0nGOuJqKz#tD35vm-xUPb_Y^yHb#!SgvQTOd5?!V4HH&dC3ug)I!`V@ zHs~q4SbQwQCy0RM@`tJ z{^Wt%IcBeXJ63ApW7x+B7K^awDpLBK^ozV#YcnNEm^2{`_t+x^=1xAk99h14>1ufq zCJYx8M5d^vqaN-T5aDR(QtZOok_BG~UM!F88j>~x`s2gd0+%U|Jx&E`0Gc)T#1eIX z1@&enF^OW7_+jRB4f|&Z3C(RCSef}|qwBCH$hUguk1i0ZykD7CCXIYq&;6SE%GG_` z27ELA)n~4*%dYh=p=vVRcvi`&mSn5FtcRJwav}1L?o9@2)MN}A=iOc=MI3=Vu5F1B zZeR5004tNVf)4-0@JuUuiP9yLK4CkjJEGoU?~lh7MxmD(b0|j-H*%L?cPNF9DeK4H z=<>7A6ypmr%P%3!r}|Tx?=d|~{TQ3JE3bVe*Z1c*_ia~S4r^3DxeGLDZ zR738SZkQTB^FKt2q`nD>N%|lcw6zalP6s*7KvHoTPX`Gk9#iI`ynO!L;m(X@tzfAL(7{fypV+vY^nr zcg1?`!6KAGHgAicaL)GF-$Pz-1`ToW6JHa=^k) zNDyS?Y7^-ljEaXzyXk^SUe|<3hFxd=+t@qlHq|;Ep_{)?g#U~#&CY6%TlwxW_nh5M zw?TM+HNn3e1}1)ySeax<*|ek+JF%kQl@;ac1~nb6?Bsmm@K&?65x>~|d?Q_$Jqbpe z=*A1O$0fmnj1ht_E3NGVxy*{PAMuDi)%w_-{c_KLcVJ7;@q{O)lo~7HEuhY_eqvqj z9%|3EJ{lZ#=SBoOy6ZJstA%fbH52_b1Kmrn$`I+Fh$8WciDg!{Ms!gh77d3YN-rh+ zE`ALAf9ezgdHj)(d7($fBs1%VJP23cJBCIM&$*Nrp4nY9dZMl)#Bz_(^HJ$T@quEQ zRC)Vf*8@=)loPk)gM5Hdef0z45Vpz&V%_#M@Nuqx$>$=$D35kdS;tGV;X>wXvt(^e zd!XAmv1gnsmxfs9j#C=Fg*@P8JM`s5(X#dlaDm_#d*La=bbHTYZpNc}INq_M`*?+X zr>J{RUJQA8XSyc- z+`m9gq;aJEQ~&Z{dlhpcp&(a@B8|DkoU3f!^P7ip`DM}4S@<+Cj#E|xz?yyi#*?-B z(_&L`#x$tr(LCA8Tf<$F;gBd|&|xcb@d%Psgyctbs%%Hbu7Yp77j7;en|Kv&=i^CVewXq~+2F#C%2 z8aIxK8Aj3ry)=F5cHAu0e3m`R|IGO@H?(MaMS89ErYK3kTjKaBbfG8x6Cae0W~wMJQkD%>?3aq+iux+C=YldvBc(?~?naEhSyjnJzhsQ2RxlDJ z1VvByCY6b`c$WNb>}9#XS5~9^=&N#Jw8tkEUJ zh$l6+OYOvHrgJA4fhfja27TFSc2PJVOZ2f>-1jRT4Xv3r2@DW3+rX+8*82PxP&$lU z#O77M3GTFgpGmF{_F*j`N3CEA?lyDPPXXYr=K8xG&5jeWZItXUg4C~dApO@38gS}X zYK8Y_m0%N}y08C#+^!^S>8|Oayo%Qxwc{6Ae4{4StHNsQbw|{)y|;E6D5ug++6;Z-$ZAQAn2>l|*o|Ve&cTe^a`;F=>8(oOq0}q(YdeoLqWys8Feg3Vx>flc>F6Rs zjf`b6{Xde*iL8k2csVW)}Re21=hV@9_FxB_Lg*TJ7?(Im7aWFJ)dPV^`U6z{Qw?Uhv;(x*f%e0Wx!ec_gMoK zzLT-UOE;&{dPaTyeW$7)L4W_bP^u)hgmG%j07ArY%8V~_>k$^Sh z3n3dPpM97AP#V+oAXRW1yU^D6-O|ezlenHG-|6RBoc;0Lu)C|m{X)X1QY^4aPR0Yh zYnMYLG(s}%j%kcQ&b#pcMU$nTP^{Qk$~4)LSn$B;_$@0)PSVXOO`Plh8_HjX7Zs)0 zNW=jK>vR+%jhcQARu;Y(Cm{sXi(&EXkWu)!yKg+5lj`II9ri(O>=KywT9gLxB0 zJr6JqNH#iLTc6_ssrpp}6$OfKYBklyAtyxSY3X5IscZX;Qc<-7Y<#O#g%I`nqRgUn zZnDfp1+R?961c!m-7*sI@=B8InZr_n%=<;^yZM77$fH_a!xY=CGx@?|Z{os9?*MC! z3%Uy?J{XTRMZY}*eDCSQdG}wp&HOc&TF#t9%qSpv4pLOU%icf+Lcws`&;|3;XBe$b}8f<}ELjt^vazel;%0Yp_b}8xwT?)iD*X$6qx)(T+&=iYrG4*yiM##}mJawm0=h8MhHmR+jb+Xuw6YWSWWL z0=aX{7^f_LiE7+S^%y{~XJ-Z5)t8xeuO`vjseV8G5LM>`yi^(+c7r4NjlK>#m==E< zG(BGK<1FG!FQl8&lnlA{i;CeHkQ+CUEV2o$p2TCNdaws?_*L65QmH^qTHTkGl;g07 z)fzAIYTx}uR==&~4lNzxc;#bUn5}v8_EvhQA-HG*eL~Qj{dhQXS_2Mdz9?pJ*TD96 zsD}<80ik+DXLkld=X06( z^7D(g9(&5yiOAs$jaMaCu zl+*RKm}&&UK0_Q$53={LKX8bzq(p>9TQe2I7pt~E39&!`I7h|Ks~!=j+^a7iPA1O4 zF)izF$9-Su8pq(ozKnZuZ@CBjlGc|YG!99yupEgVvx*|j6*^X7aZvq}`8G8r)e?B3 zksJeIg-S1fEv_}O4fUnTW5vG_v+r;p_laZ%+07EKWU03OU=e3PB?VvUV((?+P)P>% z+vKctJW4yyVHeV4{wHD=L!2sd?v}838=j+x7eDRX(u)O2xS&<+&r}a$b`dkx9HJSa ztou8>?R~S0kyGwHJRlOys376hY?)|DoSb66dj8?9X%yxJG)^zI-knh-#AWu&f*%r1nb$MbOvEf zg_gBNzC}RA0|q807brO76lr#?F)L2Gt%tl1JxbffN_x3I{&~-&V&oika&77083UtJHX0vN z&JGNeIEm1UQHPh~N~U>Hrcn({8dOA-svpJWnlYQVWI`4%%`^{3nL02&cuxilbc!GS zpryWjbFyj~&-+H$&SbQwA7vR9S~YLCLXW69q!HjUH4E;nY4l1*zP+sk+fYwaXdYk} zh(2=^?@bIHHZ;|5B>GPrJ-?P5JDxuTw&Obcpay|nydMy?kr97v5M?DIk56LElCL;E ze>F26phILvkV&#!*SoQ?j@=j&Xop<o$L=wq>Km9&lX>e`|;YQg(*@=f%K{Ls(JR2E-?}1P4&pk#Jr^wzVIKizwdC zhH^3Difm%r3y;>)?C%P1a|};O2O7*p_w<9lnek;md`)}gP;_7(Nuw%(>Jhvpbcx_C zXdS3!bI^F44S0S`P?N+&fd@>C7;++St|n37Em82r3F0p3VKVcbM32m?kW6^Co45a7 z?i145maM-WS1HUL+-E;B0O{g_A5VY4fs3yDyqTO0qn@1NoN<}#N}FVN@va+jpRWyx zgWhe%eQhbfHH^GuA{DTaX{XL!<&9Oel6d(8TivaI66HC_?}n0IE@0600rZ55KFty# z##P(Y3J(3C8z1(@os70Hd=bQ)6N8sTgy}v;rvMI>W~qAfk<=lvC)U3zs*<|rO{K2QcC}u(O;PG&#wb^tP?C7;elkVej0xEd|*V%jRHkm%y zug@hL*WZ!yL&v--FSsw7YXNE_0q7Q+eYZueiC0F|CrfAB8=SJ8;15t#!>JvK@BM~* zlK=d6l1Rn>*m44H40lDX0{U#-XCZDUi9uV%vvuQu{+HgF!bn*3n@v1bHh7V$ROU19 z=b53sF|QW;<%klf`Sd8A1(#FxSY=GYS-RpXn8V)UpK^5w0DdDFHroB8NV8w}y+052MyQp_Qi4RvQP%N^h@rKW&6k;uFM3 z0Gw?R>k+-tfJbEk?G!Dhz-jU8yq`Z;nJ1ftnE;JPFxc5ro)kSjff)EOd$41*<7t+4 zv%}~eJ^cdXAT;Q@;pe{;)9P#^h>No0&tLbjQwdT(L0`b>Bjk8n6Z*5L3)M7xA5L?` zFEJMLRdwpwtJ5!|Z7L(`V%2COe-&=11pg(3!4NPyc$ky;Zr1|htE}>n@XanmFMrQh z-LZX`a$s(_HQ@a8N=+bI-g8Y!t#bw>Wht{jPe`cW;6JzEY_Rx#IK`^s(jtSiPSD$V zAz&~9D8c)VUWx3c!_Q%X7hUtbV!0#wvH7{~=IUU|KIk~8s@mQQgi;&Rk-LjWdY{5SI3W_j;4(KdaWjKWjMdpGxJlZ=r^mrLfb0Xqotzx$$eo{(}pwp zUs-*s6@)&1#0E;XC*|Gz^B+54HPL>pHr+x~ZD>C6eR6Mwj1H|Z-D59yiQto_z{&T) zU5RD}Xj##Xs#*m;o$&qbEqf?BuO^5#ImWc3NmV+~VD0E3ojCa};gC$i(6#yk!+nsa zOiN}pIPNM2XN`BKi`4!N-8%L)&9Vr;P|<|v3_cQ;k#fX-EWFm>CNXB`EIeu5{*q-3 zbkCPPB7nN55Y&CA-MxFSG<3N^^r z$Nlec!Cm}+#Q|6JemjySezf=;9nA*v0AIna#-lzkuzZiRqt3or`Q$;v+R1NoxJ);D z`Zjrp3IE^rc%=VR;{*%sh?L+{>aR)kSss}e-X)=sN%=BRgXDQugUrtS0GU^CR<}7o zmgEZfS9`a;o7M!J8*G5~y*fV_zQ6tOjL|y=Jrc+jzE7CJ>f8+{d#+WL7U(>ipSMza zVyU|X)Mt*+*NxXRs3}Fp8d1BM;*IV-o}UrNjhxDfUq!-i@Sn`S?e9dGvM(bVn91Sy z(L2uUP@dZYaeEodtCOLf1VPam<|Ags%L!3&X(?d$2|UI_e0~~xjnnKDGl@+{5FmT*GOT0BdKOi z-mA%bAuMLo?sTV|bSE@+emUL~+Ag@V>Lh3}N`iv&(p^FNvlh#7<~)>A!Pl{^0`n+< zacH;`1Fo{v(){nz^O&xFrf-g;-(xKuk`RDkR)I^Xq4?nCvnF3ME&oxYpUQ2S{?z!%tNuwr9m4OA2 zvY&Mnc{So7pHCz1i7kVEqT_UH1}aK0J5mu)V@v`!pSYyJ()5INRe}{e6s2d=-u~BMj z)cSjd88`S~&DPFM)!*-lgal(*RccMxkxOa_SF?NXJWMV>T@cDRAB=XoiWmN*t-Z`e z2!9d}bRr-&;P4flCo!;43*3r(M>o;fI5L=R#ti`wuVQvvoYQ?zFj^UKl$t#^_u{X)0~hvK;cO z#Qpi(lDm6RnAe|2`e#`QOtA)=H~B5I*D#K;AzHyCR!9~gpRB!!881b#5ISEv*I*&{ zIQ|N;-+dsO>2PNr@Q3;RR`mP!e>5_EiuV}Yxz^^Q&PthHn%@$?rI8bW04inSxoK5W(P%&wT`m{6?f2*u(Fml>mm64rGFgh*^B<|>_4hmdr`P{2n(xr zcp;9;ec~NQ$@bjxT;8vOP&6oLQ>pHEYGL+z!`G|HQiWV^ zz7jGk4?o2Y04xcoH`A`4K=+{(7)?A{G>zWjYUs>UozD4NcGUaET;9vE6i3Xrvq|4S zHQFoaXDM>;c|b%0n^X3h;yjUBTge;O0}7iV@*%fhnf{i97g3nWBbnp!v^+to9_$CN zQ?E2-qz6Qo<}yb+TN2#W#NoHIz?l85FOYoyJ_^M6tSc(qji~K_s$T5$J*%(VwZ2|5_j+$pZ97)mFr%UA{1)1!v|AA2gaW$W=t zn@%b$*|;D!i@S;K?oYFm=4*jwTs*FIP(Q-{cG=c~Wo{QN?OUF#`<^#D&7$ra<9ydg zX0Zmk+{?ly2S-2Jykchlf+ICwSYI@~dd0n|CufRQmFa`6&+Nk{XRB^cjm=IvZ*^C= z*nZ*cM~bWOZ1cX9y~XaErN)UVpMGYq|5Wna;D)B{=Kz1-=#YIG*HdQSld)RC60c<% z$uGyi@HlGfW?7LBZx@9;vOmgmZi(X@pJ0p0Y=uUL?_PPu&%nTNMj3eXzy<+Eeujot zjtU0gHHE;#6cQAffO@$FKQJ&vbTqIt9B?`#!~j&FaS)pv3vj=Ym=aOOu+-dJ=I*uh zU+1cQCl~IW_(gYisQNGOr3?1YG0v1xU(Ts_!lz)q$>KH}*;`slm(1fbZxlV=`m6ZS z_M9-u_p|M5&vDBpK#2Cn-A zMf_v=RXGoQq>i7=Y~wZ(zN6l|u*=T=YNz<}U&oGbUp4#Qo%)cf>QnF9-aV}~DlM@3 z7+t2_FSqjQH$DyNsw!8%bD@@#B_BL7Im$Yd@!e!L!4H)y{cJ4N9@k5~y?Fmc^gY}E zi|$;W{cA0sQEh?Ov;BwWcs{nU{8-?)>}c&J4JJEzbG_R|kDr}-x!BHn{+!inwW}BV z^z-<6-v6+L;mTjn$+`Q7Pq{zWdZmo!&FF6z&OP~a?BL3MAG?;X zI5N|uZ}Mds@g;(H)QvB`%KIa`ywF7Lu>GULHmTo#*Mfa@w$L%H<@XXnVB~#yDK_JP z;x1tDo|u0Mq*b_&+sGIgxC#$GKihlem2g65#rpjz`8U0OP7duo|8tJ#Vhc;f9SWNd z*Iw!fS{wFxw;LmagY@FbvcxAD5>nU5RQgxm_o$ZDr9bPh1M@S3r>mdKI;Vst08-~z AbN~PV From 939ed669fdd913e55197497c973d449355a5db04 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 06:20:11 +0000 Subject: [PATCH 079/102] general extent, see #196 --- NEWS.md | 4 ++++ R/raster-info.R | 12 +++++++++--- man/vapour_raster_info.Rd | 2 ++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index fa44354d..bbfda101 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,9 @@ # vapour 0.94 +* The extent reported by 'vapour_raster_info()' is now correct for the general case including non-zero skew geotransforms. + +* 'vapour_raster_info()' gains a 'corners' element. + * All functions that read or query data source/s now check for tilde "~" at the beginning of the string/s, and normalize the path as needed. Reported by @Sibada in #193. * vapour now imports nanoarrow and includes internal experimental support for GDAL (>= 3.6) stream reading (RFC 86). Nothing is diff --git a/R/raster-info.R b/R/raster-info.R index 622225ff..ee4e9691 100644 --- a/R/raster-info.R +++ b/R/raster-info.R @@ -52,6 +52,8 @@ sds_boilerplate_checks <- function(x, sds = NULL) { #' \item{overviews}{the number and size of any available overviews} #' \item{filelist}{the list of files involved (may be none, and so will be a single NA character value)} #' \item{datatype}{the band type name, in GDAL form 'Byte', 'Int16', 'Float32', etc.} +#' \item{subdatasets}{any subdataset DSNs is present, otherwise `NULL` } +#' \item{corners}{corner coordinates of the data, for non-zero skew geotransforms a 2-column matrix with rows upperLeft, lowerLeft, lowerRight, upperRight, and center} #' } #' #' Note that the geotransform is a kind of obscure combination of the extent and dimension, I don't find it @@ -147,14 +149,17 @@ vapour_raster_info <- function(x, ..., sds = NULL, min_max = FALSE) { if (!is.null(json$metadata$SUBDATASETS)) { sds <- unlist(json$metadata$SUBDATASETS[grep("NAME$", names(json$metadata$SUBDATASETS))], use.names = FALSE) } - extent <- c(json$cornerCoordinates$upperLeft, json$cornerCoordinates$lowerRight)[c(1, 3, 4, 2)] + + + corners <- do.call(rbind, json$cornerCoordinates) + extent <- c(range(corners[,1]), range(corners[,2])) if (is.null(json$geoTransform)) { geoTransform <- c(extent[1], diff(extent[c(1,2)])/json$size[1], 0, extent[4], 0, diff(extent[c(4:3)])/json$size[2]) } else { geoTransform <- json$geoTransform } - #browser() + list(geotransform = geoTransform, dimension = json$size, ## or/and dimXY dimXY = json$size, @@ -169,7 +174,8 @@ vapour_raster_info <- function(x, ..., sds = NULL, min_max = FALSE) { filelist = json$files, datatype = json$bands$type[1L], extent = extent, - subdatasets = sds) + subdatasets = sds, + corners = corners) } diff --git a/man/vapour_raster_info.Rd b/man/vapour_raster_info.Rd index ff062a29..09903819 100644 --- a/man/vapour_raster_info.Rd +++ b/man/vapour_raster_info.Rd @@ -40,6 +40,8 @@ The structural metadata are \item{overviews}{the number and size of any available overviews} \item{filelist}{the list of files involved (may be none, and so will be a single NA character value)} \item{datatype}{the band type name, in GDAL form 'Byte', 'Int16', 'Float32', etc.} +\item{subdatasets}{any subdataset DSNs is present, otherwise \code{NULL} } +\item{corners}{corner coordinates of the data, for non-zero skew geotransforms a 2-column matrix with rows upperLeft, lowerLeft, lowerRight, upperRight, and center} } Note that the geotransform is a kind of obscure combination of the extent and dimension, I don't find it From 1b3185f91589b27f38aeb68c028f2dfa618867ee Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 30 Mar 2023 06:51:59 +0000 Subject: [PATCH 080/102] readme --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 120d839d..67d891c9 100644 --- a/README.md +++ b/README.md @@ -161,8 +161,6 @@ dm <- c(256, 256) vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -#> scale: 1.000000 -#> offset: 0.000000 ## now we can use this in a matrix image(m <- matrix(vals[[1]], nrow = dm[2], ncol = dm[1])[,dm[2]:1 ]) ``` @@ -188,8 +186,6 @@ If we want more detail, go ahead: ``` r dm <- c(512, 512) vals <- vapour::vapour_warp_raster(elevation.tiles.prod, extent = ex, dimension = dm, projection = crs) -#> scale: 1.000000 -#> offset: 0.000000 (r <- rast(ext(ex), nrows = dm[2], ncols = dm[1], crs = crs, vals = vals[[1]])) #> class : SpatRaster #> dimensions : 512, 512, 1 (nrow, ncol, nlyr) From 934803ce71ebb53ccc429f2c45b272f8ca0fd1ee Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 3 Apr 2023 04:30:00 +0000 Subject: [PATCH 081/102] allow the 0 value for warper dim --- DESCRIPTION | 2 +- R/00_warpgeneral.R | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index b36f0e4d..c8457c8c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.4 +Version: 0.9.5 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 283736d5..b8ab9757 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -54,7 +54,8 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_e if (length(target_dim) > 0 ) target_dim <- as.integer(rep(target_dim, length.out = 2L)) if (anyNA(target_dim)) stop("NA values in 'target_dim'") - if (any(target_dim <= 0)) stop("all 'target_dim' values must be > 0") + if (any(target_dim < 0)) stop("all 'target_dim' values must be >= 0") + if (all(target_dim < 1)) stop("one 'target_dim' value must be > 0") } if (is.null(target_res)) { @@ -97,9 +98,9 @@ gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ex target_dim <- integer() #info$dimension } else { if (length(target_dim) > 0 ) target_dim <- as.integer(rep(target_dim, length.out = 2L)) - if (anyNA(target_dim)) stop("NA values in 'target_dim'") - if (any(target_dim <= 0)) stop("all 'target_dim' values must be > 0") + if (any(target_dim < 0)) stop("all 'target_dim' values must be >= 0") + if (all(target_dim < 1)) stop("one 'target_dim' value must be > 0") } if (is.null(target_res)) { @@ -109,7 +110,7 @@ gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ex if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) if (anyNA(target_res)) stop("NA values in 'target_res'") - if (any(target_res <= 0)) stop("all 'target_res' values must be > 0") + if (any(target_res <= 0)) stop("all 'target_res' values must be >= 0") } if (is.null(band_output_type)) band_output_type <- "Float64" #if (grepl("tif$", out_dsn)) { From e457ba0fc26daacb202634dc6b4ef3ca3cb6fcca Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 4 Apr 2023 17:16:32 +1000 Subject: [PATCH 082/102] warp docs --- R/00_warpgeneral.R | 22 +- R/RcppExports.R | 422 ++++++------ src/RcppExports.cpp | 1606 +++++++++++++++++++++---------------------- 3 files changed, 1025 insertions(+), 1025 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 283736d5..e5fbf8bf 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -1,21 +1,21 @@ -#' General warper functions +#' General raster read and convert #' -#' The warper is used to convert source/s to an output file or data in memory. +#' The warper is used to convert source/s to an output file or to data in memory. #' #' Two functions 'gdal_raster_data' and 'gdal_raster_dsn' act like the gdalwarp command line -#' tool. -#' @param dsn -#' @param target_crs -#' @param target_dim -#' @param target_ext -#' @param target_res -#' @param resample -#' @param bands +#' tool, a convenience third function 'gdal_raster_image()' works especially for image data. +#' +#' @param dsn data sources, files, urls, db strings, vrt, etc +#' @param target_crs projection of the target grid +#' @param target_dim dimension of the target grid +#' @param target_ext extent of the target grid +#' @param target_res resolution of the target grid +#' @param resample resampling algorith used +#' @param bands band or bands to include, default is first band only (use NULL or a value less that one to obtain all bands) #' #' @return -#' @noRd #' #' @examples #' dsn <- "inst/extdata/sst.tif" diff --git a/R/RcppExports.R b/R/RcppExports.R index 7d832e27..67e1201d 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,211 +1,211 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { - .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) -} - -warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { - .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) -} - -warp_suggest_cpp <- function(dsn, target_crs) { - .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) -} - -set_gdal_config_cpp <- function(option, value) { - .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) -} - -get_gdal_config_cpp <- function(option) { - .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) -} - -cleanup_gdal_cpp <- function() { - .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') -} - -driver_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -driver_id_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -layer_names_gdal_cpp <- function(dsn) { - .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -drivers_list_gdal_cpp <- function() { - .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') -} - -proj_to_wkt_gdal_cpp <- function(proj4string) { - .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) -} - -crs_is_lonlat_cpp <- function(input_string) { - .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) -} - -register_gdal_cpp <- function() { - .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') -} - -version_gdal_cpp <- function() { - .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') -} - -vsi_list_gdal_cpp <- function(dsn) { - .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { - .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -projection_info_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -report_fields_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { - .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) -} - -gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { - .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) -} - -gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { - .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) -} - -gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { - .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) -} - -gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { - .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) -} - -gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { - .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) -} - -gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { - .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) -} - -gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { - .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) -} - -gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { - .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { - .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) -} - -gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { - .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) -} - -read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { - .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) -} - -read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { - .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) -} - -read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { - .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) -} - -raster_gcp_gdal_cpp <- function(dsn) { - .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -raster_has_geolocation_gdal_cpp <- function(dsn, sds) { - .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) -} - -raster_info_gdal_cpp <- function(dsn, min_max) { - .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) -} - -raster_extent_cpp <- function(dsn) { - .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) -} - -raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { - .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) -} - -sds_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -sds_list_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) -} - -vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { - .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) -} - -vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { - .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) -} - -vapour_create_copy_cpp <- function(dsource, dtarget, driver) { - .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) -} - -vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { - .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) -} - -vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { - .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) -} - -blocks_cpp1 <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) -} - -blocks_cpp <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) -} - -raster_gdalinfo_app_cpp <- function(dsn, options) { - .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) -} - -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) -} - -raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { - .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) -} - +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { + .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) +} + +warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { + .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) +} + +warp_suggest_cpp <- function(dsn, target_crs) { + .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) +} + +set_gdal_config_cpp <- function(option, value) { + .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) +} + +get_gdal_config_cpp <- function(option) { + .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) +} + +cleanup_gdal_cpp <- function() { + .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') +} + +driver_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +driver_id_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +layer_names_gdal_cpp <- function(dsn) { + .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +drivers_list_gdal_cpp <- function() { + .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') +} + +proj_to_wkt_gdal_cpp <- function(proj4string) { + .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) +} + +crs_is_lonlat_cpp <- function(input_string) { + .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) +} + +register_gdal_cpp <- function() { + .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') +} + +version_gdal_cpp <- function() { + .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') +} + +vsi_list_gdal_cpp <- function(dsn) { + .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { + .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +projection_info_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +report_fields_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { + .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) +} + +gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { + .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) +} + +gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { + .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) +} + +gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { + .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) +} + +gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { + .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) +} + +gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { + .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) +} + +gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { + .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) +} + +gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { + .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) +} + +gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { + .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { + .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) +} + +gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { + .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) +} + +read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { + .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) +} + +read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { + .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) +} + +read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { + .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) +} + +raster_gcp_gdal_cpp <- function(dsn) { + .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +raster_has_geolocation_gdal_cpp <- function(dsn, sds) { + .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) +} + +raster_info_gdal_cpp <- function(dsn, min_max) { + .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) +} + +raster_extent_cpp <- function(dsn) { + .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) +} + +raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { + .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) +} + +sds_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +sds_list_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) +} + +vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { + .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) +} + +vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { + .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) +} + +vapour_create_copy_cpp <- function(dsource, dtarget, driver) { + .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) +} + +vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { + .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) +} + +vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { + .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) +} + +blocks_cpp1 <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) +} + +blocks_cpp <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) +} + +raster_gdalinfo_app_cpp <- function(dsn, options) { + .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) +} + +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) +} + +raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { + .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) +} + diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index d289e648..28b39a94 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -1,803 +1,803 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -#ifdef RCPP_USE_GLOBAL_ROSTREAM -Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); -Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); -#endif - -// gdal_dsn_read_vector_stream -List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); -RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); - 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 dsn_exists(dsn_existsSEXP); - Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< int >::type width(widthSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); - return rcpp_result_gen; -END_RCPP -} -// warp_general_cpp -List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); -RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); - rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); - return rcpp_result_gen; -END_RCPP -} -// warp_suggest_cpp -List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); -RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); - return rcpp_result_gen; -END_RCPP -} -// set_gdal_config_cpp -IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); -RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); - rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); - return rcpp_result_gen; -END_RCPP -} -// get_gdal_config_cpp -CharacterVector get_gdal_config_cpp(CharacterVector option); -RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); - return rcpp_result_gen; -END_RCPP -} -// cleanup_gdal_cpp -LogicalVector cleanup_gdal_cpp(); -RcppExport SEXP _vapour_cleanup_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// driver_gdal_cpp -CharacterVector driver_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// driver_id_gdal_cpp -CharacterVector driver_id_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// layer_names_gdal_cpp -CharacterVector layer_names_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// drivers_list_gdal_cpp -List drivers_list_gdal_cpp(); -RcppExport SEXP _vapour_drivers_list_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// proj_to_wkt_gdal_cpp -CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); -RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); - rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); - return rcpp_result_gen; -END_RCPP -} -// crs_is_lonlat_cpp -LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); -RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); - rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); - return rcpp_result_gen; -END_RCPP -} -// register_gdal_cpp -LogicalVector register_gdal_cpp(); -RcppExport SEXP _vapour_register_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// version_gdal_cpp -CharacterVector version_gdal_cpp(); -RcppExport SEXP _vapour_version_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// vsi_list_gdal_cpp -CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// feature_count_gdal_cpp -NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// projection_info_gdal_cpp -List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// report_fields_gdal_cpp -CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// vapour_geom_name_cpp -Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// vapour_layer_extent_cpp -Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_all -List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); -RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ij -List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ia -List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_fa -List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_all -List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ij -List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ia -List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_fa -List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_all -NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ij -NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ia -NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); - return rcpp_result_gen; -END_RCPP -} -// read_fields_gdal_cpp -List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// read_geometry_gdal_cpp -List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// read_fids_gdal_cpp -NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// raster_gcp_gdal_cpp -List raster_gcp_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_has_geolocation_gdal_cpp -LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); -RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); - return rcpp_result_gen; -END_RCPP -} -// raster_info_gdal_cpp -List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); -RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); - rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); - return rcpp_result_gen; -END_RCPP -} -// raster_extent_cpp -NumericVector raster_extent_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_io_gdal_cpp -List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_gdal_cpp -CharacterVector sds_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_list_gdal_cpp -List sds_list_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_block_cpp -Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// vapour_write_raster_block_cpp -Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); -RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_copy_cpp -Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); -RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_cpp -Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); -RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_value_cpp -Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); -RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp1 -Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp -Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// raster_gdalinfo_app_cpp -CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); -RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); - return rcpp_result_gen; -END_RCPP -} -// raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); - return rcpp_result_gen; -END_RCPP -} -// raster_warp_file_cpp -List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); -RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, - {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, - {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, - {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, - {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, - {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, - {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, - {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, - {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, - {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, - {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, - {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, - {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, - {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, - {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, - {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, - {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, - {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, - {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, - {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, - {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, - {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, - {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, - {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, - {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, - {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, - {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, - {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, - {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, - {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, - {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, - {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, - {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, - {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, - {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, - {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, - {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, - {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, - {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, - {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, - {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, - {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, - {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, - {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, - {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, - {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, - {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, - {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, - {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, - {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_vapour(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} +// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +#ifdef RCPP_USE_GLOBAL_ROSTREAM +Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); +Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); +#endif + +// gdal_dsn_read_vector_stream +List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); +RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); + 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 dsn_exists(dsn_existsSEXP); + Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< int >::type width(widthSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); + return rcpp_result_gen; +END_RCPP +} +// warp_general_cpp +List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); +RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); + rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); + return rcpp_result_gen; +END_RCPP +} +// warp_suggest_cpp +List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); +RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); + return rcpp_result_gen; +END_RCPP +} +// set_gdal_config_cpp +IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); +RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); + rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); + return rcpp_result_gen; +END_RCPP +} +// get_gdal_config_cpp +CharacterVector get_gdal_config_cpp(CharacterVector option); +RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); + return rcpp_result_gen; +END_RCPP +} +// cleanup_gdal_cpp +LogicalVector cleanup_gdal_cpp(); +RcppExport SEXP _vapour_cleanup_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// driver_gdal_cpp +CharacterVector driver_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// driver_id_gdal_cpp +CharacterVector driver_id_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// layer_names_gdal_cpp +CharacterVector layer_names_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// drivers_list_gdal_cpp +List drivers_list_gdal_cpp(); +RcppExport SEXP _vapour_drivers_list_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// proj_to_wkt_gdal_cpp +CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); +RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); + rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); + return rcpp_result_gen; +END_RCPP +} +// crs_is_lonlat_cpp +LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); +RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); + rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); + return rcpp_result_gen; +END_RCPP +} +// register_gdal_cpp +LogicalVector register_gdal_cpp(); +RcppExport SEXP _vapour_register_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// version_gdal_cpp +CharacterVector version_gdal_cpp(); +RcppExport SEXP _vapour_version_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// vsi_list_gdal_cpp +CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// feature_count_gdal_cpp +NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// projection_info_gdal_cpp +List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// report_fields_gdal_cpp +CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// vapour_geom_name_cpp +Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// vapour_layer_extent_cpp +Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_all +List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); +RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ij +List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ia +List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_fa +List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_all +List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ij +List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ia +List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_fa +List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_all +NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ij +NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ia +NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); + return rcpp_result_gen; +END_RCPP +} +// read_fields_gdal_cpp +List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// read_geometry_gdal_cpp +List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// read_fids_gdal_cpp +NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// raster_gcp_gdal_cpp +List raster_gcp_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_has_geolocation_gdal_cpp +LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); +RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); + return rcpp_result_gen; +END_RCPP +} +// raster_info_gdal_cpp +List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); +RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); + rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); + return rcpp_result_gen; +END_RCPP +} +// raster_extent_cpp +NumericVector raster_extent_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_io_gdal_cpp +List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_gdal_cpp +CharacterVector sds_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_list_gdal_cpp +List sds_list_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// warp_in_memory_gdal_cpp +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_block_cpp +Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// vapour_write_raster_block_cpp +Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); +RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_copy_cpp +Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); +RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_cpp +Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); +RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_value_cpp +Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); +RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp1 +Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp +Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// raster_gdalinfo_app_cpp +CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); +RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); + return rcpp_result_gen; +END_RCPP +} +// raster_vrt_cpp +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); + return rcpp_result_gen; +END_RCPP +} +// raster_warp_file_cpp +List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); +RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); + return rcpp_result_gen; +END_RCPP +} + +static const R_CallMethodDef CallEntries[] = { + {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, + {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, + {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, + {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, + {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, + {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, + {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, + {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, + {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, + {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, + {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, + {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, + {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, + {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, + {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, + {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, + {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, + {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, + {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, + {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, + {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, + {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, + {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, + {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, + {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, + {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, + {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, + {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, + {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, + {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, + {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, + {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, + {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, + {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, + {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, + {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, + {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, + {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, + {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, + {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, + {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, + {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, + {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, + {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, + {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, + {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, + {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, + {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, + {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_vapour(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} From 62bae79111acde5bdcb831d10bc414c009362b9a Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 4 Apr 2023 10:13:34 +0000 Subject: [PATCH 083/102] stray --- R/00_warpgeneral.R | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index b8ab9757..903488ef 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -14,7 +14,7 @@ #' @param resample #' @param bands #' -#' @return +#' @return pixel values in a list vector per band, or a list of file paths #' @noRd #' #' @examples diff --git a/README.md b/README.md index 67d891c9..62d9953c 100644 --- a/README.md +++ b/README.md @@ -174,7 +174,7 @@ image(x) ## or as a spatial object library(terra) -#> terra 1.7.18 +#> terra 1.7.21 r <- rast(ext(ex), nrows = dm[2], ncols = dm[1], crs = crs, vals = vals[[1]]) contour(r, add = TRUE) ``` From f2220dd82815216b05ab68c3df5d2dd1c0c21ecb Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 4 Apr 2023 11:09:01 +0000 Subject: [PATCH 084/102] remove mustWork = TRUE --- R/vapour-gdal-library.R | 2 +- R/vapour_vrt.R | 2 +- R/vapour_vsi_list.R | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/R/vapour-gdal-library.R b/R/vapour-gdal-library.R index 4a42f38b..7abaf9aa 100644 --- a/R/vapour-gdal-library.R +++ b/R/vapour-gdal-library.R @@ -173,7 +173,7 @@ vapour_geom_summary <- function(dsource, layer = 0L, sql = "", limit_n = NULL, s #' #' drv <- vapour_all_drivers() #' -#' f <- system.file("extdata/sst_c.gpkg", package = "vapour", mustWork = TRUE) +#' f <- system.file("extdata/sst_c.gpkg", package = "vapour") #' vapour_driver(f) #' #' as.data.frame(drv)[match(vapour_driver(f), drv$driver), ] diff --git a/R/vapour_vrt.R b/R/vapour_vrt.R index 61a75593..b5c418dd 100644 --- a/R/vapour_vrt.R +++ b/R/vapour_vrt.R @@ -61,7 +61,7 @@ #' @export #' #' @examples -#' tif <- system.file("extdata", "sst.tif", package = "vapour", mustWork = TRUE) +#' tif <- system.file("extdata", "sst.tif", package = "vapour") #' vapour_vrt(tif) #' #' vapour_vrt(tif, bands = c(1, 1)) diff --git a/R/vapour_vsi_list.R b/R/vapour_vsi_list.R index 74d795d5..dc7a5cc2 100644 --- a/R/vapour_vsi_list.R +++ b/R/vapour_vsi_list.R @@ -15,7 +15,7 @@ #' @return character vector listing of items #' #' @examples -#' pointzipfile <- system.file("extdata/vsi/point_shp.zip", package = "vapour", mustWork = TRUE) +#' pointzipfile <- system.file("extdata/vsi/point_shp.zip", package = "vapour") #' vapour_vsi_list(sprintf("/vsizip/%s", pointzipfile)) #' \donttest{ #' \dontrun{ From 80b883eecb9c94bd7542380cb3e0050764f4dff3 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 4 Apr 2023 11:14:42 +0000 Subject: [PATCH 085/102] update Rd --- man/GDAL-library.Rd | 2 +- man/vapour_vrt.Rd | 2 +- man/vapour_vsi_list.Rd | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/man/GDAL-library.Rd b/man/GDAL-library.Rd index 5dd60312..2ffc69b6 100644 --- a/man/GDAL-library.Rd +++ b/man/GDAL-library.Rd @@ -44,7 +44,7 @@ vapour_gdal_version() drv <- vapour_all_drivers() -f <- system.file("extdata/sst_c.gpkg", package = "vapour", mustWork = TRUE) +f <- system.file("extdata/sst_c.gpkg", package = "vapour") vapour_driver(f) as.data.frame(drv)[match(vapour_driver(f), drv$driver), ] diff --git a/man/vapour_vrt.Rd b/man/vapour_vrt.Rd index aaa17d29..09bacc76 100644 --- a/man/vapour_vrt.Rd +++ b/man/vapour_vrt.Rd @@ -96,7 +96,7 @@ See the following links to GDAL and PROJ documentation: } \examples{ -tif <- system.file("extdata", "sst.tif", package = "vapour", mustWork = TRUE) +tif <- system.file("extdata", "sst.tif", package = "vapour") vapour_vrt(tif) vapour_vrt(tif, bands = c(1, 1)) diff --git a/man/vapour_vsi_list.Rd b/man/vapour_vsi_list.Rd index 2fa2c296..8b22cbac 100644 --- a/man/vapour_vsi_list.Rd +++ b/man/vapour_vsi_list.Rd @@ -26,7 +26,7 @@ use this function interactively to determine a useable \verb{/vsiPREFIX/dsource source string. } \examples{ -pointzipfile <- system.file("extdata/vsi/point_shp.zip", package = "vapour", mustWork = TRUE) +pointzipfile <- system.file("extdata/vsi/point_shp.zip", package = "vapour") vapour_vsi_list(sprintf("/vsizip/\%s", pointzipfile)) \donttest{ \dontrun{ From 1b9d756861d556acbfd8d5a50f85f1e1cc9d8de2 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 5 Apr 2023 11:47:05 +1000 Subject: [PATCH 086/102] fix ignore doh --- .Rbuildignore | 2 +- man/gdal_raster_data.Rd | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.Rbuildignore b/.Rbuildignore index 538eafd1..b3369c07 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -31,4 +31,4 @@ ^CRAN-SUBMISSION$ ^Dockerfile$ ^inst/ci$ -^.*gpkg$ + diff --git a/man/gdal_raster_data.Rd b/man/gdal_raster_data.Rd index 4b05d82c..56f9298d 100644 --- a/man/gdal_raster_data.Rd +++ b/man/gdal_raster_data.Rd @@ -31,6 +31,9 @@ gdal_raster_data( \item{bands}{band or bands to include, default is first band only (use NULL or a value less that one to obtain all bands)} } +\value{ +pixel values in a list vector per band, or a list of file paths +} \description{ The warper is used to convert source/s to an output file or to data in memory. } From 90259a573082fb9be58b6b98d7ab918a83d5032a Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 5 Apr 2023 11:55:52 +1000 Subject: [PATCH 087/102] typo --- R/00_warpgeneral.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index a51391e8..df197b40 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -12,7 +12,7 @@ #' @param target_dim dimension of the target grid #' @param target_ext extent of the target grid #' @param target_res resolution of the target grid -#' @param resample resampling algorith used +#' @param resample resampling algorithm used #' @param bands band or bands to include, default is first band only (use NULL or a value less that one to obtain all bands) #' #' @returns pixel values in a list vector per band, or a list of file paths From 311828800d4927a944593bfeb0ab82a731949db2 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 5 Apr 2023 03:00:37 +0000 Subject: [PATCH 088/102] export general warper --- NAMESPACE | 3 + R/00_warpgeneral.R | 44 +- R/RcppExports.R | 422 +++++----- man/gdal_raster_data.Rd | 54 +- src/RcppExports.cpp | 1606 +++++++++++++++++++-------------------- vapour.Rproj | 44 +- 6 files changed, 1118 insertions(+), 1055 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 85dfa5ff..22c294c6 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,5 +1,8 @@ # Generated by roxygen2: do not edit by hand +export(gdal_raster_data) +export(gdal_raster_dsn) +export(gdal_raster_image) export(vapour_all_drivers) export(vapour_create) export(vapour_crs_is_lonlat) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index df197b40..e6c58306 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -14,26 +14,34 @@ #' @param target_res resolution of the target grid #' @param resample resampling algorithm used #' @param bands band or bands to include, default is first band only (use NULL or a value less that one to obtain all bands) -#' +#' @param band_output_type specify the band type, see [vapour_read_raster] +#' @param options general options passed to gdal warper +#' @param out_dsn use with [gdal_raster_dsn] optionally set the output file name (or one will be generated) +#' @export #' @returns pixel values in a list vector per band, or a list of file paths #' #' @examples -#' dsn <- "inst/extdata/sst.tif" +#' dsn <- system.file("extdata/sst.tif", package = "vapour") #' par(mfrow = c(2, 2)) #' ## do nothing, get native #' X <- gdal_raster_data(dsn) -#' imfun(X) #' -#' ## set resolution (or dimension, extent, crs, or combination thereof - GDAL will report/resolve incompatible opts) +#' ## set resolution (or dimension, extent, crs, or combination thereof - GDAL +#' ## will report/resolve incompatible opts) #' X1 <- gdal_raster_data(dsn, target_res = 1) -#' imfun(X1) +#' +#' ## add a cutline, and cut to it using gdal warp args +#' cutline <- system.file("extdata/cutline_sst.gpkg", package = "vapour") +#' X1c <- gdal_raster_data(dsn, target_res = .1, options = c("-cutline",cutline, "-crop_to_cutline" )) +#' #' ## warp whole grid to give res #' X2 <- gdal_raster_data(dsn, target_res = 25000, target_crs = "EPSG:32755") -#' imfun(X2) #' #' ## specify exactly (as per vapour originally) -#' X3 <- gdal_raster_data(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") -#' imfun(X3) +#' X3 <- gdal_raster_data(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, +#' target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") +#' +#' X4 <- gdal_raster_dsn(dsn, out_dsn = tempfile(fileext = ".tif")) gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, resample = "near", bands = 1L, band_output_type = NULL, options = character()) { @@ -80,8 +88,10 @@ gdal_raster_data <- function(dsn, target_crs = NULL, target_dim = NULL, target_e dsn_outname = "") } +#' @name gdal_raster_data +#' @export gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, - resample = "near", bands = 1L, band_output_type = NULL, options = character(), out_dsn = tempfile(fileext = ".tif")) { + resample = "near", bands = NULL, band_output_type = NULL, options = character(), out_dsn = tempfile(fileext = ".tif")) { if (is.null(target_crs)) target_crs <- "" if (is.null(target_ext)) { @@ -118,7 +128,12 @@ gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ex ## currently always COG options <- c(options, "-of", "COG") - #} + if (!is.null(bands) || (is.integer(bands) && !length(bands) == 1 && bands[1] > 0)) { + stop("bands cannot be set for gdal_raster_dsn, please use an upfront call to 'vapour_vrt(dsn, bands = )' to create the dsn") + } else { + bands <- -1 + } + warp_general_cpp(dsn, target_crs, target_ext, target_dim, @@ -129,8 +144,11 @@ gdal_raster_dsn <- function(dsn, target_crs = NULL, target_dim = NULL, target_ex options = options, dsn_outname = out_dsn[1L]) } + +#' @name gdal_raster_data +#' @export gdal_raster_image <- function(dsn, target_crs = NULL, target_dim = NULL, target_ext = NULL, target_res = NULL, - resample = "near", bands = 1:3, band_output_type = NULL, options = character()) { + resample = "near", bands = NULL, band_output_type = NULL, options = character()) { if (length(target_res) > 0 ) target_res <- as.numeric(rep(target_res, length.out = 2L)) if (is.null(target_crs)) target_crs <- "" @@ -138,6 +156,10 @@ gdal_raster_image <- function(dsn, target_crs = NULL, target_dim = NULL, target_ if (is.null(target_dim)) target_dim <- integer() #info$dimension if (is.null(target_res)) target_res <- numeric() ## TODO if (is.null(band_output_type)) band_output_type <- "UInt8" + if (is.null(bands)) { + nbands <- vapour_raster_info(dsn[1])$bands + bands <- seq(min(c(nbands, 4L))) + } bytes <- warp_general_cpp(dsn, target_crs, target_ext, target_dim, diff --git a/R/RcppExports.R b/R/RcppExports.R index 67e1201d..7d832e27 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -1,211 +1,211 @@ -# Generated by using Rcpp::compileAttributes() -> do not edit by hand -# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { - .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) -} - -warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { - .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) -} - -warp_suggest_cpp <- function(dsn, target_crs) { - .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) -} - -set_gdal_config_cpp <- function(option, value) { - .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) -} - -get_gdal_config_cpp <- function(option) { - .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) -} - -cleanup_gdal_cpp <- function() { - .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') -} - -driver_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -driver_id_gdal_cpp <- function(dsn) { - .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -layer_names_gdal_cpp <- function(dsn) { - .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -drivers_list_gdal_cpp <- function() { - .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') -} - -proj_to_wkt_gdal_cpp <- function(proj4string) { - .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) -} - -crs_is_lonlat_cpp <- function(input_string) { - .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) -} - -register_gdal_cpp <- function() { - .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') -} - -version_gdal_cpp <- function() { - .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') -} - -vsi_list_gdal_cpp <- function(dsn) { - .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { - .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -projection_info_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -report_fields_gdal_cpp <- function(dsn, layer, sql) { - .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) -} - -vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { - .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) -} - -gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { - .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) -} - -gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { - .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) -} - -gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { - .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) -} - -gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { - .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) -} - -gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { - .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) -} - -gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { - .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) -} - -gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { - .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) -} - -gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { - .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) -} - -gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { - .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) -} - -gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { - .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) -} - -gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { - .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) -} - -read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { - .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) -} - -read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { - .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) -} - -read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { - .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) -} - -raster_gcp_gdal_cpp <- function(dsn) { - .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -raster_has_geolocation_gdal_cpp <- function(dsn, sds) { - .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) -} - -raster_info_gdal_cpp <- function(dsn, min_max) { - .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) -} - -raster_extent_cpp <- function(dsn) { - .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) -} - -raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { - .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) -} - -sds_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -sds_list_list_gdal_cpp <- function(dsn) { - .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) -} - -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) -} - -vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { - .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) -} - -vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { - .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) -} - -vapour_create_copy_cpp <- function(dsource, dtarget, driver) { - .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) -} - -vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { - .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) -} - -vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { - .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) -} - -blocks_cpp1 <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) -} - -blocks_cpp <- function(dsource, iblock, read) { - .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) -} - -raster_gdalinfo_app_cpp <- function(dsn, options) { - .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) -} - -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) -} - -raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { - .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) -} - +# Generated by using Rcpp::compileAttributes() -> do not edit by hand +# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +gdal_dsn_read_vector_stream <- function(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) { + .Call('_vapour_gdal_dsn_read_vector_stream', PACKAGE = 'vapour', stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width) +} + +warp_general_cpp <- function(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) { + .Call('_vapour_warp_general_cpp', PACKAGE = 'vapour', dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname) +} + +warp_suggest_cpp <- function(dsn, target_crs) { + .Call('_vapour_warp_suggest_cpp', PACKAGE = 'vapour', dsn, target_crs) +} + +set_gdal_config_cpp <- function(option, value) { + .Call('_vapour_set_gdal_config_cpp', PACKAGE = 'vapour', option, value) +} + +get_gdal_config_cpp <- function(option) { + .Call('_vapour_get_gdal_config_cpp', PACKAGE = 'vapour', option) +} + +cleanup_gdal_cpp <- function() { + .Call('_vapour_cleanup_gdal_cpp', PACKAGE = 'vapour') +} + +driver_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +driver_id_gdal_cpp <- function(dsn) { + .Call('_vapour_driver_id_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +layer_names_gdal_cpp <- function(dsn) { + .Call('_vapour_layer_names_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +drivers_list_gdal_cpp <- function() { + .Call('_vapour_drivers_list_gdal_cpp', PACKAGE = 'vapour') +} + +proj_to_wkt_gdal_cpp <- function(proj4string) { + .Call('_vapour_proj_to_wkt_gdal_cpp', PACKAGE = 'vapour', proj4string) +} + +crs_is_lonlat_cpp <- function(input_string) { + .Call('_vapour_crs_is_lonlat_cpp', PACKAGE = 'vapour', input_string) +} + +register_gdal_cpp <- function() { + .Call('_vapour_register_gdal_cpp', PACKAGE = 'vapour') +} + +version_gdal_cpp <- function() { + .Call('_vapour_version_gdal_cpp', PACKAGE = 'vapour') +} + +vsi_list_gdal_cpp <- function(dsn) { + .Call('_vapour_vsi_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +feature_count_gdal_cpp <- function(dsn, layer, sql, ex) { + .Call('_vapour_feature_count_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +projection_info_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_projection_info_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +report_fields_gdal_cpp <- function(dsn, layer, sql) { + .Call('_vapour_report_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql) +} + +vapour_geom_name_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_geom_name_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +vapour_layer_extent_cpp <- function(dsource, layer, sql, ex) { + .Call('_vapour_vapour_layer_extent_cpp', PACKAGE = 'vapour', dsource, layer, sql, ex) +} + +gdal_dsn_read_geom_all <- function(dsn, layer, sql, ex, format) { + .Call('_vapour_gdal_dsn_read_geom_all', PACKAGE = 'vapour', dsn, layer, sql, ex, format) +} + +gdal_dsn_read_geom_ij <- function(dsn, layer, sql, ex, format, ij) { + .Call('_vapour_gdal_dsn_read_geom_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ij) +} + +gdal_dsn_read_geom_ia <- function(dsn, layer, sql, ex, format, ia) { + .Call('_vapour_gdal_dsn_read_geom_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, format, ia) +} + +gdal_dsn_read_geom_fa <- function(dsn, layer, sql, ex, format, fa) { + .Call('_vapour_gdal_dsn_read_geom_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, format, fa) +} + +gdal_dsn_read_fields_all <- function(dsn, layer, sql, ex, fid_column_name) { + .Call('_vapour_gdal_dsn_read_fields_all', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name) +} + +gdal_dsn_read_fields_ij <- function(dsn, layer, sql, ex, fid_column_name, ij) { + .Call('_vapour_gdal_dsn_read_fields_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ij) +} + +gdal_dsn_read_fields_ia <- function(dsn, layer, sql, ex, fid_column_name, ia) { + .Call('_vapour_gdal_dsn_read_fields_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, ia) +} + +gdal_dsn_read_fields_fa <- function(dsn, layer, sql, ex, fid_column_name, fa) { + .Call('_vapour_gdal_dsn_read_fields_fa', PACKAGE = 'vapour', dsn, layer, sql, ex, fid_column_name, fa) +} + +gdal_dsn_read_fids_all <- function(dsn, layer, sql, ex) { + .Call('_vapour_gdal_dsn_read_fids_all', PACKAGE = 'vapour', dsn, layer, sql, ex) +} + +gdal_dsn_read_fids_ij <- function(dsn, layer, sql, ex, ij) { + .Call('_vapour_gdal_dsn_read_fids_ij', PACKAGE = 'vapour', dsn, layer, sql, ex, ij) +} + +gdal_dsn_read_fids_ia <- function(dsn, layer, sql, ex, ia) { + .Call('_vapour_gdal_dsn_read_fids_ia', PACKAGE = 'vapour', dsn, layer, sql, ex, ia) +} + +read_fields_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) { + .Call('_vapour_read_fields_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex, fid_column_name) +} + +read_geometry_gdal_cpp <- function(dsn, layer, sql, what, textformat, limit_n, skip_n, ex) { + .Call('_vapour_read_geometry_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, what, textformat, limit_n, skip_n, ex) +} + +read_fids_gdal_cpp <- function(dsn, layer, sql, limit_n, skip_n, ex) { + .Call('_vapour_read_fids_gdal_cpp', PACKAGE = 'vapour', dsn, layer, sql, limit_n, skip_n, ex) +} + +raster_gcp_gdal_cpp <- function(dsn) { + .Call('_vapour_raster_gcp_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +raster_has_geolocation_gdal_cpp <- function(dsn, sds) { + .Call('_vapour_raster_has_geolocation_gdal_cpp', PACKAGE = 'vapour', dsn, sds) +} + +raster_info_gdal_cpp <- function(dsn, min_max) { + .Call('_vapour_raster_info_gdal_cpp', PACKAGE = 'vapour', dsn, min_max) +} + +raster_extent_cpp <- function(dsn) { + .Call('_vapour_raster_extent_cpp', PACKAGE = 'vapour', dsn) +} + +raster_io_gdal_cpp <- function(dsn, window, band, resample, band_output_type, unscale) { + .Call('_vapour_raster_io_gdal_cpp', PACKAGE = 'vapour', dsn, window, band, resample, band_output_type, unscale) +} + +sds_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +sds_list_list_gdal_cpp <- function(dsn) { + .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) +} + +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) +} + +vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { + .Call('_vapour_vapour_read_raster_block_cpp', PACKAGE = 'vapour', dsource, offset, dimension, band, band_output_type, unscale) +} + +vapour_write_raster_block_cpp <- function(dsource, data, offset, dimension, band) { + .Call('_vapour_vapour_write_raster_block_cpp', PACKAGE = 'vapour', dsource, data, offset, dimension, band) +} + +vapour_create_copy_cpp <- function(dsource, dtarget, driver) { + .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) +} + +vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { + .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) +} + +vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { + .Call('_vapour_vapour_read_raster_value_cpp', PACKAGE = 'vapour', dsource, col, row, band, band_output_type) +} + +blocks_cpp1 <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp1', PACKAGE = 'vapour', dsource, iblock, read) +} + +blocks_cpp <- function(dsource, iblock, read) { + .Call('_vapour_blocks_cpp', PACKAGE = 'vapour', dsource, iblock, read) +} + +raster_gdalinfo_app_cpp <- function(dsn, options) { + .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) +} + +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) +} + +raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { + .Call('_vapour_raster_warp_file_cpp', PACKAGE = 'vapour', source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) +} + diff --git a/man/gdal_raster_data.Rd b/man/gdal_raster_data.Rd index 56f9298d..971738d4 100644 --- a/man/gdal_raster_data.Rd +++ b/man/gdal_raster_data.Rd @@ -2,6 +2,8 @@ % Please edit documentation in R/00_warpgeneral.R \name{gdal_raster_data} \alias{gdal_raster_data} +\alias{gdal_raster_dsn} +\alias{gdal_raster_image} \title{General raster read and convert} \usage{ gdal_raster_data( @@ -15,6 +17,31 @@ gdal_raster_data( band_output_type = NULL, options = character() ) + +gdal_raster_dsn( + dsn, + target_crs = NULL, + target_dim = NULL, + target_ext = NULL, + target_res = NULL, + resample = "near", + bands = NULL, + band_output_type = NULL, + options = character(), + out_dsn = tempfile(fileext = ".tif") +) + +gdal_raster_image( + dsn, + target_crs = NULL, + target_dim = NULL, + target_ext = NULL, + target_res = NULL, + resample = "near", + bands = NULL, + band_output_type = NULL, + options = character() +) } \arguments{ \item{dsn}{data sources, files, urls, db strings, vrt, etc} @@ -27,9 +54,15 @@ gdal_raster_data( \item{target_res}{resolution of the target grid} -\item{resample}{resampling algorith used} +\item{resample}{resampling algorithm used} \item{bands}{band or bands to include, default is first band only (use NULL or a value less that one to obtain all bands)} + +\item{band_output_type}{specify the band type, see \link{vapour_read_raster}} + +\item{options}{general options passed to gdal warper} + +\item{out_dsn}{use with \link{gdal_raster_dsn} optionally set the output file name (or one will be generated)} } \value{ pixel values in a list vector per band, or a list of file paths @@ -42,20 +75,25 @@ Two functions 'gdal_raster_data' and 'gdal_raster_dsn' act like the gdalwarp com tool, a convenience third function 'gdal_raster_image()' works especially for image data. } \examples{ -dsn <- "inst/extdata/sst.tif" +dsn <- system.file("extdata/sst.tif", package = "vapour") par(mfrow = c(2, 2)) ## do nothing, get native X <- gdal_raster_data(dsn) -imfun(X) -## set resolution (or dimension, extent, crs, or combination thereof - GDAL will report/resolve incompatible opts) +## set resolution (or dimension, extent, crs, or combination thereof - GDAL +## will report/resolve incompatible opts) X1 <- gdal_raster_data(dsn, target_res = 1) -imfun(X1) + +## add a cutline, and cut to it using gdal warp args +cutline <- system.file("extdata/cutline_sst.gpkg", package = "vapour") +X1c <- gdal_raster_data(dsn, target_res = .1, options = c("-cutline",cutline, "-crop_to_cutline" )) + ## warp whole grid to give res X2 <- gdal_raster_data(dsn, target_res = 25000, target_crs = "EPSG:32755") -imfun(X2) ## specify exactly (as per vapour originally) -X3 <- gdal_raster_data(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") -imfun(X3) +X3 <- gdal_raster_data(dsn, target_ext = c(-1, 1, -1, 1) * 8e6, + target_dim = c(512, 678), target_crs = "+proj=stere +lon_0=147 +lat_0=-90") + +X4 <- gdal_raster_dsn(dsn, out_dsn = tempfile(fileext = ".tif")) } diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index 28b39a94..d289e648 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -1,803 +1,803 @@ -// Generated by using Rcpp::compileAttributes() -> do not edit by hand -// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 - -#include - -using namespace Rcpp; - -#ifdef RCPP_USE_GLOBAL_ROSTREAM -Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); -Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); -#endif - -// gdal_dsn_read_vector_stream -List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); -RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); - 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 dsn_exists(dsn_existsSEXP); - Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< int >::type width(widthSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); - return rcpp_result_gen; -END_RCPP -} -// warp_general_cpp -List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); -RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); - rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); - return rcpp_result_gen; -END_RCPP -} -// warp_suggest_cpp -List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); -RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); - return rcpp_result_gen; -END_RCPP -} -// set_gdal_config_cpp -IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); -RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); - rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); - return rcpp_result_gen; -END_RCPP -} -// get_gdal_config_cpp -CharacterVector get_gdal_config_cpp(CharacterVector option); -RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); - rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); - return rcpp_result_gen; -END_RCPP -} -// cleanup_gdal_cpp -LogicalVector cleanup_gdal_cpp(); -RcppExport SEXP _vapour_cleanup_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// driver_gdal_cpp -CharacterVector driver_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// driver_id_gdal_cpp -CharacterVector driver_id_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// layer_names_gdal_cpp -CharacterVector layer_names_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// drivers_list_gdal_cpp -List drivers_list_gdal_cpp(); -RcppExport SEXP _vapour_drivers_list_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// proj_to_wkt_gdal_cpp -CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); -RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); - rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); - return rcpp_result_gen; -END_RCPP -} -// crs_is_lonlat_cpp -LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); -RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); - rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); - return rcpp_result_gen; -END_RCPP -} -// register_gdal_cpp -LogicalVector register_gdal_cpp(); -RcppExport SEXP _vapour_register_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// version_gdal_cpp -CharacterVector version_gdal_cpp(); -RcppExport SEXP _vapour_version_gdal_cpp() { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); - return rcpp_result_gen; -END_RCPP -} -// vsi_list_gdal_cpp -CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// feature_count_gdal_cpp -NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// projection_info_gdal_cpp -List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// report_fields_gdal_cpp -CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); -RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); - return rcpp_result_gen; -END_RCPP -} -// vapour_geom_name_cpp -Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// vapour_layer_extent_cpp -Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_all -List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); -RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ij -List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_ia -List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_geom_fa -List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_all -List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ij -List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_ia -List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fields_fa -List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); -RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_all -NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); -RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ij -NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); - return rcpp_result_gen; -END_RCPP -} -// gdal_dsn_read_fids_ia -NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); -RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); - rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); - return rcpp_result_gen; -END_RCPP -} -// read_fields_gdal_cpp -List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); -RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); - rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); - return rcpp_result_gen; -END_RCPP -} -// read_geometry_gdal_cpp -List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// read_fids_gdal_cpp -NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); -RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); - Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); - rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); - return rcpp_result_gen; -END_RCPP -} -// raster_gcp_gdal_cpp -List raster_gcp_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_has_geolocation_gdal_cpp -LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); -RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); - return rcpp_result_gen; -END_RCPP -} -// raster_info_gdal_cpp -List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); -RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); - rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); - return rcpp_result_gen; -END_RCPP -} -// raster_extent_cpp -NumericVector raster_extent_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// raster_io_gdal_cpp -List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_gdal_cpp -CharacterVector sds_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// sds_list_list_gdal_cpp -List sds_list_list_gdal_cpp(CharacterVector dsn); -RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); - return rcpp_result_gen; -END_RCPP -} -// warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_block_cpp -Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); -RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); - return rcpp_result_gen; -END_RCPP -} -// vapour_write_raster_block_cpp -Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); -RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_copy_cpp -Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); -RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); - return rcpp_result_gen; -END_RCPP -} -// vapour_create_cpp -Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); -RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); - return rcpp_result_gen; -END_RCPP -} -// vapour_read_raster_value_cpp -Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); -RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp1 -Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// blocks_cpp -Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); -RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); - rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); - return rcpp_result_gen; -END_RCPP -} -// raster_gdalinfo_app_cpp -CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); -RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); - return rcpp_result_gen; -END_RCPP -} -// raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); - Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); - return rcpp_result_gen; -END_RCPP -} -// raster_warp_file_cpp -List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); -RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { -BEGIN_RCPP - Rcpp::RObject rcpp_result_gen; - Rcpp::RNGScope rcpp_rngScope_gen; - Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); - Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); - Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); - Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); - Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); - rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); - return rcpp_result_gen; -END_RCPP -} - -static const R_CallMethodDef CallEntries[] = { - {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, - {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, - {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, - {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, - {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, - {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, - {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, - {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, - {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, - {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, - {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, - {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, - {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, - {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, - {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, - {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, - {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, - {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, - {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, - {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, - {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, - {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, - {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, - {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, - {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, - {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, - {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, - {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, - {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, - {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, - {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, - {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, - {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, - {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, - {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, - {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, - {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, - {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, - {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, - {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, - {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, - {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, - {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, - {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, - {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, - {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, - {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, - {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, - {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, - {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, - {NULL, NULL, 0} -}; - -RcppExport void R_init_vapour(DllInfo *dll) { - R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); - R_useDynamicSymbols(dll, FALSE); -} +// Generated by using Rcpp::compileAttributes() -> do not edit by hand +// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393 + +#include + +using namespace Rcpp; + +#ifdef RCPP_USE_GLOBAL_ROSTREAM +Rcpp::Rostream& Rcpp::Rcout = Rcpp::Rcpp_cout_get(); +Rcpp::Rostream& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get(); +#endif + +// gdal_dsn_read_vector_stream +List gdal_dsn_read_vector_stream(RObject stream_xptr, CharacterVector dsn, CharacterVector layer, CharacterVector sql, Rcpp::CharacterVector options, bool quiet, Rcpp::CharacterVector drivers, Rcpp::CharacterVector wkt_filter, bool dsn_exists, bool dsn_isdb, Rcpp::CharacterVector fid_column_name, int width); +RcppExport SEXP _vapour_gdal_dsn_read_vector_stream(SEXP stream_xptrSEXP, SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP optionsSEXP, SEXP quietSEXP, SEXP driversSEXP, SEXP wkt_filterSEXP, SEXP dsn_existsSEXP, SEXP dsn_isdbSEXP, SEXP fid_column_nameSEXP, SEXP widthSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< RObject >::type stream_xptr(stream_xptrSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< bool >::type quiet(quietSEXP); + 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 dsn_exists(dsn_existsSEXP); + Rcpp::traits::input_parameter< bool >::type dsn_isdb(dsn_isdbSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< int >::type width(widthSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_vector_stream(stream_xptr, dsn, layer, sql, options, quiet, drivers, wkt_filter, dsn_exists, dsn_isdb, fid_column_name, width)); + return rcpp_result_gen; +END_RCPP +} +// warp_general_cpp +List warp_general_cpp(CharacterVector dsn, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, NumericVector target_res, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, CharacterVector dsn_outname); +RcppExport SEXP _vapour_warp_general_cpp(SEXP dsnSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_resSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP dsn_outnameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_res(target_resSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dsn_outname(dsn_outnameSEXP); + rcpp_result_gen = Rcpp::wrap(warp_general_cpp(dsn, target_crs, target_extent, target_dim, target_res, bands, resample, silent, band_output_type, options, dsn_outname)); + return rcpp_result_gen; +END_RCPP +} +// warp_suggest_cpp +List warp_suggest_cpp(CharacterVector dsn, CharacterVector target_crs); +RcppExport SEXP _vapour_warp_suggest_cpp(SEXP dsnSEXP, SEXP target_crsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + rcpp_result_gen = Rcpp::wrap(warp_suggest_cpp(dsn, target_crs)); + return rcpp_result_gen; +END_RCPP +} +// set_gdal_config_cpp +IntegerVector set_gdal_config_cpp(CharacterVector option, CharacterVector value); +RcppExport SEXP _vapour_set_gdal_config_cpp(SEXP optionSEXP, SEXP valueSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type value(valueSEXP); + rcpp_result_gen = Rcpp::wrap(set_gdal_config_cpp(option, value)); + return rcpp_result_gen; +END_RCPP +} +// get_gdal_config_cpp +CharacterVector get_gdal_config_cpp(CharacterVector option); +RcppExport SEXP _vapour_get_gdal_config_cpp(SEXP optionSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type option(optionSEXP); + rcpp_result_gen = Rcpp::wrap(get_gdal_config_cpp(option)); + return rcpp_result_gen; +END_RCPP +} +// cleanup_gdal_cpp +LogicalVector cleanup_gdal_cpp(); +RcppExport SEXP _vapour_cleanup_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(cleanup_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// driver_gdal_cpp +CharacterVector driver_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// driver_id_gdal_cpp +CharacterVector driver_id_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_driver_id_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(driver_id_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// layer_names_gdal_cpp +CharacterVector layer_names_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_layer_names_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(layer_names_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// drivers_list_gdal_cpp +List drivers_list_gdal_cpp(); +RcppExport SEXP _vapour_drivers_list_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(drivers_list_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// proj_to_wkt_gdal_cpp +CharacterVector proj_to_wkt_gdal_cpp(CharacterVector proj4string); +RcppExport SEXP _vapour_proj_to_wkt_gdal_cpp(SEXP proj4stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type proj4string(proj4stringSEXP); + rcpp_result_gen = Rcpp::wrap(proj_to_wkt_gdal_cpp(proj4string)); + return rcpp_result_gen; +END_RCPP +} +// crs_is_lonlat_cpp +LogicalVector crs_is_lonlat_cpp(CharacterVector input_string); +RcppExport SEXP _vapour_crs_is_lonlat_cpp(SEXP input_stringSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type input_string(input_stringSEXP); + rcpp_result_gen = Rcpp::wrap(crs_is_lonlat_cpp(input_string)); + return rcpp_result_gen; +END_RCPP +} +// register_gdal_cpp +LogicalVector register_gdal_cpp(); +RcppExport SEXP _vapour_register_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(register_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// version_gdal_cpp +CharacterVector version_gdal_cpp(); +RcppExport SEXP _vapour_version_gdal_cpp() { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + rcpp_result_gen = Rcpp::wrap(version_gdal_cpp()); + return rcpp_result_gen; +END_RCPP +} +// vsi_list_gdal_cpp +CharacterVector vsi_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_vsi_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(vsi_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// feature_count_gdal_cpp +NumericVector feature_count_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_feature_count_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(feature_count_gdal_cpp(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// projection_info_gdal_cpp +List projection_info_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_projection_info_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(projection_info_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// report_fields_gdal_cpp +CharacterVector report_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql); +RcppExport SEXP _vapour_report_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + rcpp_result_gen = Rcpp::wrap(report_fields_gdal_cpp(dsn, layer, sql)); + return rcpp_result_gen; +END_RCPP +} +// vapour_geom_name_cpp +Rcpp::CharacterVector vapour_geom_name_cpp(CharacterVector dsource, IntegerVector layer, Rcpp::CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_geom_name_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< Rcpp::CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_geom_name_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// vapour_layer_extent_cpp +Rcpp::NumericVector vapour_layer_extent_cpp(CharacterVector dsource, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_vapour_layer_extent_cpp(SEXP dsourceSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_layer_extent_cpp(dsource, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_all +List gdal_dsn_read_geom_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format); +RcppExport SEXP _vapour_gdal_dsn_read_geom_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_all(dsn, layer, sql, ex, format)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ij +List gdal_dsn_read_geom_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ij(dsn, layer, sql, ex, format, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_ia +List gdal_dsn_read_geom_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_geom_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_ia(dsn, layer, sql, ex, format, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_geom_fa +List gdal_dsn_read_geom_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector format, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_geom_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP formatSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type format(formatSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_geom_fa(dsn, layer, sql, ex, format, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_all +List gdal_dsn_read_fields_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_gdal_dsn_read_fields_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_all(dsn, layer, sql, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ij +List gdal_dsn_read_fields_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ij(dsn, layer, sql, ex, fid_column_name, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_ia +List gdal_dsn_read_fields_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fields_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_ia(dsn, layer, sql, ex, fid_column_name, ia)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fields_fa +List gdal_dsn_read_fields_fa(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, CharacterVector fid_column_name, NumericVector fa); +RcppExport SEXP _vapour_gdal_dsn_read_fields_fa(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP, SEXP faSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + Rcpp::traits::input_parameter< NumericVector >::type fa(faSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fields_fa(dsn, layer, sql, ex, fid_column_name, fa)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_all +NumericVector gdal_dsn_read_fids_all(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex); +RcppExport SEXP _vapour_gdal_dsn_read_fids_all(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_all(dsn, layer, sql, ex)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ij +NumericVector gdal_dsn_read_fids_ij(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ij); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ij(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP ijSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ij(ijSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ij(dsn, layer, sql, ex, ij)); + return rcpp_result_gen; +END_RCPP +} +// gdal_dsn_read_fids_ia +NumericVector gdal_dsn_read_fids_ia(CharacterVector dsn, IntegerVector layer, CharacterVector sql, NumericVector ex, NumericVector ia); +RcppExport SEXP _vapour_gdal_dsn_read_fids_ia(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP exSEXP, SEXP iaSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ia(iaSEXP); + rcpp_result_gen = Rcpp::wrap(gdal_dsn_read_fids_ia(dsn, layer, sql, ex, ia)); + return rcpp_result_gen; +END_RCPP +} +// read_fields_gdal_cpp +List read_fields_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex, CharacterVector fid_column_name); +RcppExport SEXP _vapour_read_fields_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP, SEXP fid_column_nameSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type fid_column_name(fid_column_nameSEXP); + rcpp_result_gen = Rcpp::wrap(read_fields_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex, fid_column_name)); + return rcpp_result_gen; +END_RCPP +} +// read_geometry_gdal_cpp +List read_geometry_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, CharacterVector what, CharacterVector textformat, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_geometry_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP whatSEXP, SEXP textformatSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type what(whatSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type textformat(textformatSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_geometry_gdal_cpp(dsn, layer, sql, what, textformat, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// read_fids_gdal_cpp +NumericVector read_fids_gdal_cpp(CharacterVector dsn, IntegerVector layer, CharacterVector sql, IntegerVector limit_n, IntegerVector skip_n, NumericVector ex); +RcppExport SEXP _vapour_read_fids_gdal_cpp(SEXP dsnSEXP, SEXP layerSEXP, SEXP sqlSEXP, SEXP limit_nSEXP, SEXP skip_nSEXP, SEXP exSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type layer(layerSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type sql(sqlSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type limit_n(limit_nSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type skip_n(skip_nSEXP); + Rcpp::traits::input_parameter< NumericVector >::type ex(exSEXP); + rcpp_result_gen = Rcpp::wrap(read_fids_gdal_cpp(dsn, layer, sql, limit_n, skip_n, ex)); + return rcpp_result_gen; +END_RCPP +} +// raster_gcp_gdal_cpp +List raster_gcp_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_gcp_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gcp_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_has_geolocation_gdal_cpp +LogicalVector raster_has_geolocation_gdal_cpp(CharacterVector dsn, IntegerVector sds); +RcppExport SEXP _vapour_raster_has_geolocation_gdal_cpp(SEXP dsnSEXP, SEXP sdsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_has_geolocation_gdal_cpp(dsn, sds)); + return rcpp_result_gen; +END_RCPP +} +// raster_info_gdal_cpp +List raster_info_gdal_cpp(CharacterVector dsn, LogicalVector min_max); +RcppExport SEXP _vapour_raster_info_gdal_cpp(SEXP dsnSEXP, SEXP min_maxSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type min_max(min_maxSEXP); + rcpp_result_gen = Rcpp::wrap(raster_info_gdal_cpp(dsn, min_max)); + return rcpp_result_gen; +END_RCPP +} +// raster_extent_cpp +NumericVector raster_extent_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_raster_extent_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(raster_extent_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// raster_io_gdal_cpp +List raster_io_gdal_cpp(CharacterVector dsn, IntegerVector window, IntegerVector band, CharacterVector resample, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_raster_io_gdal_cpp(SEXP dsnSEXP, SEXP windowSEXP, SEXP bandSEXP, SEXP resampleSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type window(windowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(raster_io_gdal_cpp(dsn, window, band, resample, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_gdal_cpp +CharacterVector sds_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// sds_list_list_gdal_cpp +List sds_list_list_gdal_cpp(CharacterVector dsn); +RcppExport SEXP _vapour_sds_list_list_gdal_cpp(SEXP dsnSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + rcpp_result_gen = Rcpp::wrap(sds_list_list_gdal_cpp(dsn)); + return rcpp_result_gen; +END_RCPP +} +// warp_in_memory_gdal_cpp +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type source_WKT(source_WKTSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_WKT(target_WKTSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type source_extent(source_extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_block_cpp +Rcpp::List vapour_read_raster_block_cpp(CharacterVector dsource, IntegerVector offset, IntegerVector dimension, IntegerVector band, CharacterVector band_output_type, LogicalVector unscale); +RcppExport SEXP _vapour_vapour_read_raster_block_cpp(SEXP dsourceSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP, SEXP unscaleSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type unscale(unscaleSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_block_cpp(dsource, offset, dimension, band, band_output_type, unscale)); + return rcpp_result_gen; +END_RCPP +} +// vapour_write_raster_block_cpp +Rcpp::LogicalVector vapour_write_raster_block_cpp(CharacterVector dsource, NumericVector data, IntegerVector offset, IntegerVector dimension, IntegerVector band); +RcppExport SEXP _vapour_vapour_write_raster_block_cpp(SEXP dsourceSEXP, SEXP dataSEXP, SEXP offsetSEXP, SEXP dimensionSEXP, SEXP bandSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< NumericVector >::type data(dataSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type offset(offsetSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_write_raster_block_cpp(dsource, data, offset, dimension, band)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_copy_cpp +Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterVector dtarget, CharacterVector driver); +RcppExport SEXP _vapour_vapour_create_copy_cpp(SEXP dsourceSEXP, SEXP dtargetSEXP, SEXP driverSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type dtarget(dtargetSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_copy_cpp(dsource, dtarget, driver)); + return rcpp_result_gen; +END_RCPP +} +// vapour_create_cpp +Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); +RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type filename(filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type driver(driverSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); + return rcpp_result_gen; +END_RCPP +} +// vapour_read_raster_value_cpp +Rcpp::NumericVector vapour_read_raster_value_cpp(CharacterVector dsource, IntegerVector col, IntegerVector row, IntegerVector band, CharacterVector band_output_type); +RcppExport SEXP _vapour_vapour_read_raster_value_cpp(SEXP dsourceSEXP, SEXP colSEXP, SEXP rowSEXP, SEXP bandSEXP, SEXP band_output_typeSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type col(colSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type row(rowSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type band(bandSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_read_raster_value_cpp(dsource, col, row, band, band_output_type)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp1 +Rcpp::List blocks_cpp1(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp1(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp1(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// blocks_cpp +Rcpp::List blocks_cpp(CharacterVector dsource, IntegerVector iblock, LogicalVector read); +RcppExport SEXP _vapour_blocks_cpp(SEXP dsourceSEXP, SEXP iblockSEXP, SEXP readSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsource(dsourceSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type iblock(iblockSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type read(readSEXP); + rcpp_result_gen = Rcpp::wrap(blocks_cpp(dsource, iblock, read)); + return rcpp_result_gen; +END_RCPP +} +// raster_gdalinfo_app_cpp +CharacterVector raster_gdalinfo_app_cpp(CharacterVector dsn, CharacterVector options); +RcppExport SEXP _vapour_raster_gdalinfo_app_cpp(SEXP dsnSEXP, SEXP optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_gdalinfo_app_cpp(dsn, options)); + return rcpp_result_gen; +END_RCPP +} +// raster_vrt_cpp +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type dsn(dsnSEXP); + Rcpp::traits::input_parameter< NumericVector >::type extent(extentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type sds(sdsSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); + return rcpp_result_gen; +END_RCPP +} +// raster_warp_file_cpp +List raster_warp_file_cpp(CharacterVector source_filename, CharacterVector target_crs, NumericVector target_extent, IntegerVector target_dim, CharacterVector target_filename, IntegerVector bands, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector warp_options, CharacterVector transformation_options); +RcppExport SEXP _vapour_raster_warp_file_cpp(SEXP source_filenameSEXP, SEXP target_crsSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP target_filenameSEXP, SEXP bandsSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP warp_optionsSEXP, SEXP transformation_optionsSEXP) { +BEGIN_RCPP + Rcpp::RObject rcpp_result_gen; + Rcpp::RNGScope rcpp_rngScope_gen; + Rcpp::traits::input_parameter< CharacterVector >::type source_filename(source_filenameSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_crs(target_crsSEXP); + Rcpp::traits::input_parameter< NumericVector >::type target_extent(target_extentSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type target_dim(target_dimSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type target_filename(target_filenameSEXP); + Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type resample(resampleSEXP); + Rcpp::traits::input_parameter< LogicalVector >::type silent(silentSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type warp_options(warp_optionsSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type transformation_options(transformation_optionsSEXP); + rcpp_result_gen = Rcpp::wrap(raster_warp_file_cpp(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options)); + return rcpp_result_gen; +END_RCPP +} + +static const R_CallMethodDef CallEntries[] = { + {"_vapour_gdal_dsn_read_vector_stream", (DL_FUNC) &_vapour_gdal_dsn_read_vector_stream, 12}, + {"_vapour_warp_general_cpp", (DL_FUNC) &_vapour_warp_general_cpp, 11}, + {"_vapour_warp_suggest_cpp", (DL_FUNC) &_vapour_warp_suggest_cpp, 2}, + {"_vapour_set_gdal_config_cpp", (DL_FUNC) &_vapour_set_gdal_config_cpp, 2}, + {"_vapour_get_gdal_config_cpp", (DL_FUNC) &_vapour_get_gdal_config_cpp, 1}, + {"_vapour_cleanup_gdal_cpp", (DL_FUNC) &_vapour_cleanup_gdal_cpp, 0}, + {"_vapour_driver_gdal_cpp", (DL_FUNC) &_vapour_driver_gdal_cpp, 1}, + {"_vapour_driver_id_gdal_cpp", (DL_FUNC) &_vapour_driver_id_gdal_cpp, 1}, + {"_vapour_layer_names_gdal_cpp", (DL_FUNC) &_vapour_layer_names_gdal_cpp, 1}, + {"_vapour_drivers_list_gdal_cpp", (DL_FUNC) &_vapour_drivers_list_gdal_cpp, 0}, + {"_vapour_proj_to_wkt_gdal_cpp", (DL_FUNC) &_vapour_proj_to_wkt_gdal_cpp, 1}, + {"_vapour_crs_is_lonlat_cpp", (DL_FUNC) &_vapour_crs_is_lonlat_cpp, 1}, + {"_vapour_register_gdal_cpp", (DL_FUNC) &_vapour_register_gdal_cpp, 0}, + {"_vapour_version_gdal_cpp", (DL_FUNC) &_vapour_version_gdal_cpp, 0}, + {"_vapour_vsi_list_gdal_cpp", (DL_FUNC) &_vapour_vsi_list_gdal_cpp, 1}, + {"_vapour_feature_count_gdal_cpp", (DL_FUNC) &_vapour_feature_count_gdal_cpp, 4}, + {"_vapour_projection_info_gdal_cpp", (DL_FUNC) &_vapour_projection_info_gdal_cpp, 3}, + {"_vapour_report_fields_gdal_cpp", (DL_FUNC) &_vapour_report_fields_gdal_cpp, 3}, + {"_vapour_vapour_geom_name_cpp", (DL_FUNC) &_vapour_vapour_geom_name_cpp, 4}, + {"_vapour_vapour_layer_extent_cpp", (DL_FUNC) &_vapour_vapour_layer_extent_cpp, 4}, + {"_vapour_gdal_dsn_read_geom_all", (DL_FUNC) &_vapour_gdal_dsn_read_geom_all, 5}, + {"_vapour_gdal_dsn_read_geom_ij", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ij, 6}, + {"_vapour_gdal_dsn_read_geom_ia", (DL_FUNC) &_vapour_gdal_dsn_read_geom_ia, 6}, + {"_vapour_gdal_dsn_read_geom_fa", (DL_FUNC) &_vapour_gdal_dsn_read_geom_fa, 6}, + {"_vapour_gdal_dsn_read_fields_all", (DL_FUNC) &_vapour_gdal_dsn_read_fields_all, 5}, + {"_vapour_gdal_dsn_read_fields_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ij, 6}, + {"_vapour_gdal_dsn_read_fields_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fields_ia, 6}, + {"_vapour_gdal_dsn_read_fields_fa", (DL_FUNC) &_vapour_gdal_dsn_read_fields_fa, 6}, + {"_vapour_gdal_dsn_read_fids_all", (DL_FUNC) &_vapour_gdal_dsn_read_fids_all, 4}, + {"_vapour_gdal_dsn_read_fids_ij", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ij, 5}, + {"_vapour_gdal_dsn_read_fids_ia", (DL_FUNC) &_vapour_gdal_dsn_read_fids_ia, 5}, + {"_vapour_read_fields_gdal_cpp", (DL_FUNC) &_vapour_read_fields_gdal_cpp, 7}, + {"_vapour_read_geometry_gdal_cpp", (DL_FUNC) &_vapour_read_geometry_gdal_cpp, 8}, + {"_vapour_read_fids_gdal_cpp", (DL_FUNC) &_vapour_read_fids_gdal_cpp, 6}, + {"_vapour_raster_gcp_gdal_cpp", (DL_FUNC) &_vapour_raster_gcp_gdal_cpp, 1}, + {"_vapour_raster_has_geolocation_gdal_cpp", (DL_FUNC) &_vapour_raster_has_geolocation_gdal_cpp, 2}, + {"_vapour_raster_info_gdal_cpp", (DL_FUNC) &_vapour_raster_info_gdal_cpp, 2}, + {"_vapour_raster_extent_cpp", (DL_FUNC) &_vapour_raster_extent_cpp, 1}, + {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, + {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, + {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, + {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, + {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, + {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, + {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, + {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, + {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, + {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, + {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, + {NULL, NULL, 0} +}; + +RcppExport void R_init_vapour(DllInfo *dll) { + R_registerRoutines(dll, NULL, CallEntries, NULL, NULL); + R_useDynamicSymbols(dll, FALSE); +} diff --git a/vapour.Rproj b/vapour.Rproj index 3d1bddfe..ee53058f 100644 --- a/vapour.Rproj +++ b/vapour.Rproj @@ -1,22 +1,22 @@ -Version: 1.0 - -RestoreWorkspace: No -SaveWorkspace: No -AlwaysSaveHistory: Yes - -EnableCodeIndexing: Yes -UseSpacesForTab: Yes -NumSpacesForTab: 2 -Encoding: UTF-8 - -RnwWeave: Sweave -LaTeX: pdfLaTeX - -AutoAppendNewline: Yes -LineEndingConversion: Posix - -BuildType: Package -PackageUseDevtools: Yes -PackageInstallArgs: --no-multiarch --with-keep.source -PackageCheckArgs: --as-cran -PackageRoxygenize: rd,collate,namespace +Version: 1.0 + +RestoreWorkspace: No +SaveWorkspace: No +AlwaysSaveHistory: Yes + +EnableCodeIndexing: Yes +UseSpacesForTab: Yes +NumSpacesForTab: 2 +Encoding: UTF-8 + +RnwWeave: Sweave +LaTeX: pdfLaTeX + +AutoAppendNewline: Yes +LineEndingConversion: Posix + +BuildType: Package +PackageUseDevtools: Yes +PackageInstallArgs: --no-multiarch --with-keep.source +PackageCheckArgs: --as-cran +PackageRoxygenize: rd,collate,namespace From b953f297eb06291b992884b047bf22aa11459d9b Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Wed, 5 Apr 2023 03:05:09 +0000 Subject: [PATCH 089/102] don't use rwinlib --- .github/workflows/check-standard.yaml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/check-standard.yaml b/.github/workflows/check-standard.yaml index b77913aa..87781b75 100644 --- a/.github/workflows/check-standard.yaml +++ b/.github/workflows/check-standard.yaml @@ -39,10 +39,7 @@ jobs: brew install geos brew install gdal - - name: ZapRtools - if: runner.os == 'windows' && matrix.config.binary == 'rwinlib' - run: rm src/Makevars.ucrt - + - uses: actions/checkout@v3 - uses: r-lib/actions/setup-pandoc@v2 From 29d760ae70e89813c4205243f829a5e754f9361a Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 11 Apr 2023 10:29:00 +0000 Subject: [PATCH 090/102] fix problem when source not openable --- inst/include/gdalraster/gdalraster.h | 1 + 1 file changed, 1 insertion(+) diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 1371b569..09cdfbbd 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -102,6 +102,7 @@ inline CharacterVector gdal_list_subdatasets(GDALDataset *poDataset) { inline GDALDatasetH gdalH_open_dsn(const char * dsn, IntegerVector sds) { GDALDatasetH DS; DS = GDALOpen(dsn, GA_ReadOnly); + if (!DS) return nullptr; if (sds[0] > 0 && gdal_has_subdataset((GDALDataset*) DS)) { CharacterVector sdsnames = gdal_subdataset_1((GDALDataset*)DS, sds[0]); if (sdsnames.length() > 0 && !sdsnames[0].empty()) { From edff709b1ef70b84d08a55e17114cd03524b5b33 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 11 Apr 2023 10:29:51 +0000 Subject: [PATCH 091/102] fix warping when no source crs --- R/raster-info.R | 9 +++++++- R/raster-input.R | 1 - .../include/gdalwarpgeneral/gdalwarpgeneral.h | 22 +++++++------------ tests/testthat/test-crs-less-warp.R | 19 ++++++++-------- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/R/raster-info.R b/R/raster-info.R index ee4e9691..1777e994 100644 --- a/R/raster-info.R +++ b/R/raster-info.R @@ -4,7 +4,9 @@ sds_boilerplate_checks <- function(x, sds = NULL) { ## but also don't prevent access to non-files if (file.exists(x)) x <- base::normalizePath(x, mustWork = FALSE) ## use sds wrapper to target the first by default - datavars <- data.frame(datsource = x, subdataset = vapour_sds_names(x), stringsAsFactors = FALSE) + subdatasets <- try(vapour_sds_names(x), silent = TRUE) + if (inherits(subdatasets, "try-error")) stop("GDAL was unable to open ^^") + datavars <- data.frame(datsource = x, subdataset = subdatasets, stringsAsFactors = FALSE) ## catch for l1b where we end up with the GCP conflated with the data set #48 if (nrow(datavars) < 2) return(x) ## shortcut to avoid #48 @@ -144,6 +146,9 @@ vapour_raster_info <- function(x, ..., sds = NULL, min_max = FALSE) { sd <- if (is.null(sds)) 0 else sds x <- .check_dsn_single(x) info <- gdalinfo_internal(x[1L], json = TRUE, stats = min_max, sd = sd, ...) + if (is.na(info)) { + stop("GDAL was unable to open ^^") + } json <- jsonlite::fromJSON(info) sds <- NULL if (!is.null(json$metadata$SUBDATASETS)) { @@ -260,6 +265,8 @@ vapour_raster_gcp <- function(x, ...) { vapour_sds_names <- function(x) { x <- .check_dsn_single(x) info <- gdalinfo_internal(x[1L], json = TRUE) + + if (is.na(info)) stop("GDAL was unable to open ^^") json <- jsonlite::fromJSON(info) if (!is.null(json$metadata$SUBDATASETS)) { sources <- unlist(json$metadata$SUBDATASETS[grep("NAME$", diff --git a/R/raster-input.R b/R/raster-input.R index 7b2b244d..0b6a8b7f 100644 --- a/R/raster-input.R +++ b/R/raster-input.R @@ -507,7 +507,6 @@ vapour_warp_raster <- function(x, bands = NULL, stop("manually setting -r, -te, -t_srs, -of, -s_srs, -ot options not allowed \n ( these controlled by arguments 'resample', 'target_extent', 'target_projection', '', 'source_projection', 'band_output_type')") } if (any(grepl("-te_srs", options))) stop("setting '-te_srs' projection of target extent is not supported") - vals <- warp_in_memory_gdal_cpp(x, source_WKT = source_projection, target_WKT = projection, target_extent = as.numeric(extent), diff --git a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h index e7427d94..b48b17e3 100644 --- a/inst/include/gdalwarpgeneral/gdalwarpgeneral.h +++ b/inst/include/gdalwarpgeneral/gdalwarpgeneral.h @@ -116,16 +116,17 @@ inline List gdal_warp_general(CharacterVector dsn, if (target_chk != OGRERR_NONE) Rcpp::stop("cannot initialize target projection"); const char *st = NULL; st = ((GDALDataset *)poSrcDS[0])->GetProjectionRef(); + + papszArg = CSLAddString(papszArg, "-t_srs"); + papszArg = CSLAddString(papszArg, target_crs[0]); if( *st != '\0') { - // we add our target projection iff a) source crs is valid b) target crs is valid c) transformation source->target is valid - // user may have augmented the array of datasets with source_projection - // if the source is just not defined we ignore the target with a warning - papszArg = CSLAddString(papszArg, "-t_srs"); - papszArg = CSLAddString(papszArg, target_crs[0]); - } else { + // we also should be checking if no geolocation arrays and no gcps Rcpp::warning("no source crs, target crs is ignored\n"); - } + } + + + } @@ -168,13 +169,6 @@ inline List gdal_warp_general(CharacterVector dsn, papszArg = CSLAddString(papszArg, options[gwopt]); } - - - // List out = List::create(1); - // CharacterVector sss(CSLCount (papszArg)); - // for (int sii = 0; sii < sss.size(); sii++) sss[sii] = papszArg[sii]; - // out[0] = sss; - // return out; auto psOptions = GDALWarpAppOptionsNew(papszArg, nullptr); CSLDestroy(papszArg); diff --git a/tests/testthat/test-crs-less-warp.R b/tests/testthat/test-crs-less-warp.R index 7fcf5dc4..dcc7a78e 100644 --- a/tests/testthat/test-crs-less-warp.R +++ b/tests/testthat/test-crs-less-warp.R @@ -1,17 +1,18 @@ test_that("with with no source crs works", { - skip("skip fixme") + #skip("skip fixme") f <- system.file("extdata/volcano.png", package = "vapour", mustWork = TRUE) info <- vapour_raster_info(f) - #vapour_warp_raster(f, dimension = info$dimension, - # extent = c(0, 1, 0, 1)) + ok <- vapour_warp_raster(f, dimension = info$dimension, + extent = c(0, 1, 0, 1), transformation_options = c("SRC_METHOD=NO_GEOTRANSFORM")) - # sds <- "NETCDF:/rdsi/PUBLIC/raad/data/www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810901.nc:sst" + if (dir.exists("/rdsi/PUBLIC/raad/data/www.ncei.noaa.gov")) { + sds <- "NETCDF:/rdsi/PUBLIC/raad/data/www.ncei.noaa.gov/data/sea-surface-temperature-optimum-interpolation/v2.1/access/avhrr/198109/oisst-avhrr-v02r01.19810901.nc:sst" ## expect no crashy crashy -# expect_silent(vapour_warp_raster(sds, extent = c(0, 1, 0, 1), dimension = c(4, 4))) - # expect_silent(vapour_warp_raster(sds, extent = c(0, 1, 0, 1), dimension = c(4, 4), source_projection = "+proj=laea")) - ## expect_warning(vapour_warp_raster(sds, extent = c(0, 1, 0, 1), dimension = c(4, 4), projection = "OGC:CRS84")) - - + expect_silent(vapour_warp_raster(sds, extent = c(0, 1, 0, 1), dimension = c(4, 4))) + expect_silent(vapour_warp_raster(sds, extent = c(0, 1, 0, 1), dimension = c(4, 4), source_projection = "+proj=laea")) + expect_warning(vapour_warp_raster(sds, extent = c(0, 1, 0, 1), dimension = c(4, 4), projection = "OGC:CRS84")) + } + ## this file is written upside down so the geoloc screws up (or something, not quite there yet) badnc <- system.file("extdata/gdal", "bad_netcdf_geoloc_arrays.nc", package = "vapour") From 809c9c99bf810f377474ccc8b7e6e027f7943024 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 11 Apr 2023 10:30:23 +0000 Subject: [PATCH 092/102] fix from Wconversion testing --- NEWS.md | 4 +- README.Rmd | 2 +- inst/ci/CHECK.out | 87 +++++++++++++++++++++++ tests/testthat.R | 2 +- tests/testthat/test-features.R | 2 +- tests/testthat/test-rasterio-resampling.R | 11 +-- 6 files changed, 99 insertions(+), 9 deletions(-) create mode 100644 inst/ci/CHECK.out diff --git a/NEWS.md b/NEWS.md index bbfda101..95c921a2 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,6 @@ -# vapour 0.94 +# vapour 0.9.5 + +* `gdal_raster_data()`, `gdal_raster_dsn()`, and `gdal_raster_image()` now allow a source with geolocation arrays to be warped to a non-longlat projection. * The extent reported by 'vapour_raster_info()' is now correct for the general case including non-zero skew geotransforms. diff --git a/README.Rmd b/README.Rmd index 2633f986..5dc07a5a 100644 --- a/README.Rmd +++ b/README.Rmd @@ -80,7 +80,7 @@ remotes::install_github("hypertidy/vapour") You will need development tools for building R packages. -On Linux, I'm using latest ubuntu and R usually, check https://cran.r-project.org/bin/linux/ubuntu/README +On Linux, I'm using latest ubuntu and R usually, check CRAN on ubuntu (search for "ubuntu cran"). then diff --git a/inst/ci/CHECK.out b/inst/ci/CHECK.out new file mode 100644 index 00000000..3b4860ba --- /dev/null +++ b/inst/ci/CHECK.out @@ -0,0 +1,87 @@ +* using log directory '//vapour.Rcheck' +* using R Under development (unstable) (2023-04-04 r84162) +* using platform: x86_64-pc-linux-gnu (64-bit) +* R was compiled by + gcc (Debian 10.2.1-6) 10.2.1 20210110 + GNU Fortran (Debian 10.2.1-6) 10.2.1 20210110 +* running under: Debian GNU/Linux 11 (bullseye) +* using session charset: ASCII +* using options '--no-manual --ignore-vignettes' +* checking for file 'vapour/DESCRIPTION' ... OK +* this is package 'vapour' version '0.9.5' +* package encoding: UTF-8 +* checking package namespace information ... OK +* checking package dependencies ... OK +* checking if this is a source package ... OK +* checking if there is a namespace ... OK +* checking for executable files ... OK +* checking for hidden files and directories ... OK +* checking for portable file names ... OK +* checking for sufficient/correct file permissions ... OK +* checking whether package 'vapour' can be installed ... OK +* used C++ compiler: 'Debian clang version 15.0.7' +* checking installed package size ... NOTE + installed size is 6.7Mb + sub-directories of 1Mb or more: + extdata 2.8Mb + libs 2.9Mb +* checking package directory ... OK +* checking DESCRIPTION meta-information ... OK +* checking top-level files ... OK +* checking for left-over files ... OK +* checking index information ... OK +* checking package subdirectories ... OK +* checking R files for non-ASCII characters ... OK +* checking R files for syntax errors ... WARNING +Warning in Sys.setlocale("LC_CTYPE", "en_US.UTF-8") : + OS reports request to set locale to "en_US.UTF-8" cannot be honored +* checking whether the package can be loaded ... OK +* checking whether the package can be loaded with stated dependencies ... OK +* checking whether the package can be unloaded cleanly ... OK +* checking whether the namespace can be loaded with stated dependencies ... OK +* checking whether the namespace can be unloaded cleanly ... OK +* checking loading without being on the library search path ... OK +* checking startup messages can be suppressed ... OK +* checking dependencies in R code ... OK +* checking S3 generic/method consistency ... OK +* checking replacement functions ... OK +* checking foreign function calls ... OK +* checking R code for possible problems ... OK +* checking Rd files ... OK +* checking Rd metadata ... OK +* checking Rd cross-references ... OK +* checking for missing documentation entries ... OK +* checking for code/documentation mismatches ... OK +* checking Rd \usage sections ... OK +* checking Rd contents ... OK +* checking for unstated dependencies in examples ... OK +* checking contents of 'data' directory ... OK +* checking data for non-ASCII characters ... OK +* checking LazyData ... OK +* checking data for ASCII and uncompressed saves ... OK +* checking R/sysdata.rda ... OK +* checking line endings in shell scripts ... OK +* checking line endings in C/C++/Fortran sources/headers ... OK +* checking line endings in Makefiles ... OK +* checking compilation flags in Makevars ... WARNING +Non-portable flags in variable 'PKG_CPPFLAGS': + -Wconversion +* checking for GNU extensions in Makefiles ... OK +* checking for portable use of $(BLAS_LIBS) and $(LAPACK_LIBS) ... OK +* checking use of PKG_*FLAGS in Makefiles ... OK +* checking compiled code ... OK +* checking files in 'vignettes' ... SKIPPED +* checking examples ... OK +* checking for unstated dependencies in 'tests' ... OK +* checking tests ... + Running 'spelling.R' + Running 'testthat.R' + OK +* DONE + +Status: 2 WARNINGs, 1 NOTE +See + '//vapour.Rcheck/00check.log' +for details. + + diff --git a/tests/testthat.R b/tests/testthat.R index d974b338..ceeae1f0 100644 --- a/tests/testthat.R +++ b/tests/testthat.R @@ -1,4 +1,4 @@ library(testthat) library(vapour) -#test_check("vapour") +test_check("vapour") diff --git a/tests/testthat/test-features.R b/tests/testthat/test-features.R index 2e31b160..d0008c83 100644 --- a/tests/testthat/test-features.R +++ b/tests/testthat/test-features.R @@ -186,7 +186,7 @@ expect_identical(s1, s2) }) test_that("sanity prevails", { - expect_error(vapour_layer_names(""), "Open failed.") + expect_error(vapour_layer_names(""), "Not a valid character string") }) test_that("index geometry read works", { diff --git a/tests/testthat/test-rasterio-resampling.R b/tests/testthat/test-rasterio-resampling.R index fc7ca6cb..bae2a362 100644 --- a/tests/testthat/test-rasterio-resampling.R +++ b/tests/testthat/test-rasterio-resampling.R @@ -70,17 +70,18 @@ test_that("band sanity prevails", { tst <- try(vapour_sds_names(f1), silent = TRUE) canopen <- !inherits(tst, "try-error") if (!canopen) skip("unable to open netcdf file on this platform") - expect_equivalent(unique(vapour_read_raster(f1, native = TRUE, band = 1)[[1]]), as.raw(0x81)) - + ## OOPS, fixme we need Int8 post-3.7.0 + ## expect_equivalent(unique(vapour_read_raster(f1, native = TRUE, band = 1)[[1]]), as.raw(0x81)) + #expect_silent(vapour_read_raster(f1, native = TRUE, band = 1)) + # expect_warning(vapour_read_raster(f1, window = c(0, 0, 5, 5, 8, 8), native = TRUE)) + expect_error(vapour_read_raster(f1)) - expect_silent(vapour_read_raster(f1, native = TRUE, band = 1)) - + expect_error(vapour_read_raster(f1, native = TRUE, band = NA)) expect_error(vapour_read_raster(f1, native = TRUE, band = 0)) expect_error(vapour_read_raster(f1, native = TRUE, band = 2)) expect_error(vapour_read_raster(f1, native = TRUE, band = "")) - expect_warning(vapour_read_raster(f1, window = c(0, 0, 5, 5, 8, 8), native = TRUE)) }) From 6f39942f0ba3fe7f1d6133e9cf8551c78504ba9d Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 11 Apr 2023 12:29:07 +0000 Subject: [PATCH 093/102] update ci notes --- inst/ci/Dockerfile | 15 +- inst/ci/INSTALL.out | 8938 +++++++++++++++++++++++++++++++++++++++++++ inst/ci/TEST.out | 168 + 3 files changed, 9117 insertions(+), 4 deletions(-) create mode 100644 inst/ci/INSTALL.out create mode 100644 inst/ci/TEST.out diff --git a/inst/ci/Dockerfile b/inst/ci/Dockerfile index 518033f5..64580c8c 100644 --- a/inst/ci/Dockerfile +++ b/inst/ci/Dockerfile @@ -22,13 +22,20 @@ RUN flags="-O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsize RUN apt-get install -y nano git libxml2-dev libfontconfig1-dev libharfbuzz-dev libproj-dev libgeos-dev libgdal-dev -RUN export MAKEFLAGS=-j15 +## for devtools +RUN apt-get install -y libharfbuzz-dev libfribidi-dev -RUN R -e 'options(Ncpus = 15); install.packages("remotes"); remotes::install_cran(c("markdown", "spelling", "jsonlite"));' +RUN export MAKEFLAGS=-j30 + +RUN R -e 'options(Ncpus = 30); install.packages("pak"); pak::pkg_install(c("markdown", "spelling", "jsonlite", "nanoarrow", "testthat", "rmarkdown", "devtools"), ask = FALSE);' #docker build . -t hypertidy/clang-wconversion -#docker run -it --rm -v $(pwd):/vapour hypertidy/clang-wconversion +#docker run -it --rm -v $(pwd)../../..:/vapour hypertidy/clang-wconversion ## now edit src/Makevars.in to put -Wconversion ito CPPFLAGS, and: #R CMD build vapour --no-build-vignettes -#R CMD INSTALL vapour_0.?.?.tar.gz > INSTALL.out 2>&1 +#R CMD INSTALL vapour_0.9.5.tar.gz > vapour/inst/ci/INSTALL.out 2>&1 +#R CMD check vapour_0.9.5.tar.gz --no-manual --no-build-vignettes --ignore-vignettes --no-vignettes > vapour/inst/ci/CHECK.out 2>&1 +#Rscript -e "devtools::test('vapour')" > vapour/inst/ci/TEST.out 2>&1 + + diff --git a/inst/ci/INSTALL.out b/inst/ci/INSTALL.out new file mode 100644 index 00000000..b5a522dc --- /dev/null +++ b/inst/ci/INSTALL.out @@ -0,0 +1,8938 @@ +* installing to library '/root/R/x86_64-pc-linux-gnu-library/4.4' +* installing *source* package 'vapour' ... +** using staged installation +configure: CC: clang +configure: CXX: clang++ -stdlib=libc++ +checking for gdal-config... /usr/bin/gdal-config +checking gdal-config usability... yes +configure: GDAL: 3.2.2 +checking GDAL version >= 2.0.1... yes +checking for gcc... clang +checking whether the C compiler works... yes +checking for C compiler default output file name... a.out +checking for suffix of executables... +checking whether we are cross compiling... no +checking for suffix of object files... o +checking whether we are using the GNU C compiler... yes +checking whether clang accepts -g... yes +checking for clang option to accept ISO C89... none needed +checking how to run the C preprocessor... clang -E +checking for grep that handles long lines and -e... /bin/grep +checking for egrep... /bin/grep -E +checking for ANSI C header files... yes +checking for sys/types.h... yes +checking for sys/stat.h... yes +checking for stdlib.h... yes +checking for string.h... yes +checking for memory.h... yes +checking for strings.h... yes +checking for inttypes.h... yes +checking for stdint.h... yes +checking for unistd.h... yes +checking gdal.h usability... yes +checking gdal.h presence... yes +checking for gdal.h... yes +checking GDAL: linking with --libs only... yes +checking GDAL: checking whether PROJ is available for linking:... yes +checking GDAL: checking whether PROJ is available for running:... yes +configure: GDAL: 3.2.2 +configure: pkg-config proj exists, will use it +configure: using proj.h. +configure: PROJ: 7.2.1 +configure: LIBS: -lproj -L/usr/lib -lgdal +checking PROJ: checking whether PROJ and sqlite3 are available for linking:... yes +configure: Package CPP flags: -DHAVE_PROJ_H -I/usr/include/gdal +configure: Package LIBS: -L/usr/lib -lgdal -lproj +configure: creating ./config.status +config.status: creating src/Makevars +** libs +using C++ compiler: 'Debian clang version 15.0.7' +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 000-stream.cpp -o 000-stream.o +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 000-stream.cpp:2: +In file included from ../inst/include/gdalarrowstream/gdalvectorstream.h:10: +In file included from /usr/include/gdal/ogrsf_frmts.h:35: +In file included from /usr/include/gdal/ogr_feature.h:35: +In file included from /usr/include/gdal/ogr_featurestyle.h:35: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 000-stream.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 000-warpgeneral.cpp -o 000-warpgeneral.o +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 000-warpgeneral.cpp:2: +In file included from ../inst/include/gdallibrary/gdallibrary.h:4: +In file included from /usr/include/gdal/ogrsf_frmts.h:35: +In file included from /usr/include/gdal/ogr_feature.h:35: +In file included from /usr/include/gdal/ogr_featurestyle.h:35: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 000-warpgeneral.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 00_config.cpp -o 00_config.o +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 00_config.cpp:2: +In file included from ../inst/include/gdallibrary/gdallibrary.h:4: +In file included from /usr/include/gdal/ogrsf_frmts.h:35: +In file included from /usr/include/gdal/ogr_feature.h:35: +In file included from /usr/include/gdal/ogr_featurestyle.h:35: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 00_config.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 00_gdal.cpp -o 00_gdal.o +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 00_gdal.cpp:2: +In file included from ../inst/include/gdallibrary/gdallibrary.h:4: +In file included from /usr/include/gdal/ogrsf_frmts.h:35: +In file included from /usr/include/gdal/ogr_feature.h:35: +In file included from /usr/include/gdal/ogr_featurestyle.h:35: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 00_gdal.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 00_geometry.cpp -o 00_geometry.o +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 00_geometry.cpp:2: +In file included from ../inst/include/gdalgeometry/gdalgeometry.h:4: +In file included from /usr/include/gdal/ogrsf_frmts.h:35: +In file included from /usr/include/gdal/ogr_feature.h:35: +In file included from /usr/include/gdal/ogr_featurestyle.h:35: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 00_geometry.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 00_raster.cpp -o 00_raster.o +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 00_raster.cpp:2: +In file included from ../inst/include/gdallibrary/gdallibrary.h:4: +In file included from /usr/include/gdal/ogrsf_frmts.h:35: +In file included from /usr/include/gdal/ogr_feature.h:35: +In file included from /usr/include/gdal/ogr_featurestyle.h:35: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 00_raster.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 00_raster_block_io.cpp -o 00_raster_block_io.o +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 00_raster_block_io.cpp:2: +In file included from ../inst/include/gdalreadwrite/gdalreadwrite.h:6: +In file included from /usr/include/gdal/gdal_priv.h:60: +In file included from /usr/include/gdal/gdal.h:50: +In file included from /usr/include/gdal/ogr_api.h:45: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +00_raster_block_io.cpp:99:56: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + float *faBlockData = (float *) CPLMalloc(nXBlockSize * nYBlockSize); + ~~~~~~~~~ ~~~~~~~~~~~~^~~~~~~~~~~~~ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 00_raster_block_io.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +142 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 00_utils.cpp -o 00_utils.o +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 00_utils.cpp:2: +In file included from ../inst/include/gdalapplib/gdalapplib.h:4: +In file included from /usr/include/gdal/gdal_priv.h:60: +In file included from /usr/include/gdal/gdal.h:50: +In file included from /usr/include/gdal/ogr_api.h:45: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 00_utils.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c 00_vrt.cpp -o 00_vrt.o +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from 00_vrt.cpp:2: +In file included from ../inst/include/gdalraster/gdalraster.h:4: +In file included from /usr/include/gdal/gdal_priv.h:60: +In file included from /usr/include/gdal/gdal.h:50: +In file included from /usr/include/gdal/ogr_api.h:45: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from 00_vrt.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c RcppExports.cpp -o RcppExports.o +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from RcppExports.cpp:4: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +140 warnings generated. +clang++ -stdlib=libc++ -I"/opt/R/devel/lib/R/include" -DNDEBUG -DHAVE_PROJ_H -I/usr/include/gdal -I../inst/include/ -Wconversion -I'/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include' -I/usr/local/include -fpic -O2 -g -Wunneeded-internal-declaration -Winvalid-utf8 -Wformat -Wsizeof-pointer-div -Wliteral-conversion -Wempty-body -Wreturn-stack-address -Wnon-c-typedef-for-linkage -Wstrict-prototypes -c warp_file.cpp -o warp_file.o +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:131:64: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:167: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:85:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/export.h:144:55: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x)) ); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:169: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:53:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:79:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:191:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:293:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:301:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:368:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:369:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:536:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(LGLSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:35: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:65:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Dimension.h:69:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + return dims[i] ; + ~~~~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:37: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Symbol.h:67:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:58: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:30: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Matrix.h:412:24: warning: implicit conversion changes signedness: 'int' to 'const size_t' (aka 'const unsigned long') [-Wsign-conversion] + MATRIX r(Dimension(ncol, nrow)); // new Matrix with reversed dimension + ~~~~~~~~~ ^~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:69: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:81:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(data)), + ~~~~~~~~~~~~ ^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:421:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::search(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:447:28: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), std::find_end(buffer.begin(), buffer.end(), s2.begin(), s2.end())); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/String.h:478:32: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t index = std::distance(buffer.begin(), iter); + ~~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:44: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Promise.h:34:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:93:50: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_a_closure(Rf_type2char(TYPEOF(fun))); + ~~~~~~~~~~~~ ^~~~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:25: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:57:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = mon - baseYear(); + ~ ~~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:58:36: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = day - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:59:32: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = year; + ~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:61:33: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mday = day; + ~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:62:37: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_mon = mon - 1; // range 0 to 11 + ~ ~~~~^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Date.h:63:38: warning: implicit conversion changes signedness: 'unsigned int' to 'int' [-Wsign-conversion] + m_tm.tm_year = year - baseYear(); + ~ ~~~~~^~~~~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:40:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:43:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:66:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDateVector.h:68:26: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Date(d[i]).format() << " "; + ~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:50:46: warning: implicit conversion changes signedness: 'const unsigned int' to 'int' [-Wsign-conversion] + int getMicroSeconds() const { return m_us; } + ~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:83:23: warning: implicit conversion changes signedness: 'int' to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + res = ::snprintf(txtsec, 63, "%s.%06d", txtiso, m_us); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:106:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = static_cast(::Rf_fround( (m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:111:24: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + m_us = NA_INTEGER; + ~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:29: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:144:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/Datetime.h:154:22: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + newdt.m_us = static_cast(::Rf_fround( (newdt.m_dt - dt) * 1.0e6, 0.0)); + ~ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:31: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:48:30: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = this->size(); + ~ ~~~~~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:51:32: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + v[i] = (*this)[i]; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:82:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t n = d.size(); + ~ ~~^~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/newDatetimeVector.h:84:30: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + os << Datetime(d[i]).format() << " "; + ~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:69: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:93: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:78:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + x[i] = (it->second)->nargs() ; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:79:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:93:20: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:106:23: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:134:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = buffer ; + ~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:138:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + res[i] = cit->first ; + ~~~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:27: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/IndexHash.h:195:20: warning: implicit conversion changes signedness: 'int' to 'uint32_t' (aka 'unsigned int') [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:28: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/hash.h:28: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/hash/SelfHash.h:86:20: warning: implicit conversion changes signedness: 'int' to 'unsigned int' [-Wsign-conversion] + return NA_INTEGER; + ~~~~~~ ^~~~~~~~~~ +/opt/R/devel/lib/R/include/R_ext/Arith.h:56:20: note: expanded from macro 'NA_INTEGER' +#define NA_INTEGER R_NaInt + ^~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/seq_along.h:49:24: warning: implicit conversion changes signedness: 'const size_t' (aka 'const unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + return sugar::SeqLen( n ) ; + ~~~~~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:77: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/strings.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:62:26: warning: implicit conversion changes signedness: 'int' to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz - isws(*ptr)); + ~~~~~~ ~~~^~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/strings/trimws.h:81:23: warning: implicit conversion changes signedness: 'R_len_t' (aka 'int') to 'std::basic_string::size_type' (aka 'unsigned long') [-Wsign-conversion] + buff->append(str, sz); + ~~~~~~ ^~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:87: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:621:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nr, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:630:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[i]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:636:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[i]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:696:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:673:36: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + std::vector n_ok(nr, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:679:28: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + ++n_ok[i]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:685:22: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + if (n_ok[i]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:697:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +ROW_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:686:43: note: expanded from macro 'ROW_MEANS_IMPL_RMNA' + detail::div(&res[i], n_ok[i]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:830:36: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector n_ok(nc, 0); + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:839:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ++n_ok[j]; + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:845:22: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (n_ok[j]) { + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:905:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(LGLSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:882:36: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + std::vector n_ok(nc, 0); \ + ~~~~ ^~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:888:28: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + ++n_ok[j]; \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:894:22: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + if (n_ok[j]) { \ + ~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:906:1: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] +COL_MEANS_IMPL_RMNA(INTSXP) +^~~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/rowSums.h:895:43: note: expanded from macro 'COL_MEANS_IMPL_RMNA' + detail::div(&res[j], n_ok[j]); \ + ~~~~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:78: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/sugar.h:31: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/functions.h:89: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:153:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:156:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:163:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:164:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:173:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:176:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:178:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:187:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:193:26: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + ans[i] = (rU < q[k]) ? k + adj : a[k] + adj; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:209:27: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector q(n); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:212:25: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + std::vector HL(n); + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:217:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] = p[i] * n; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:218:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + if (q[i] < 1.0) { + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:227:20: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + i = HL[k]; + ~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:15: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:230:23: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[j] += q[i] - 1; + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:232:21: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + L += (q[j] < 1.0); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/sugar/functions/sample.h:241:11: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + q[i] += i; + ~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:32:16: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + names[i] = it->first ; + ~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:33:15: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + info[i] = CppClass( this , it->second, buffer ) ; + ~~~~ ^ +In file included from warp_file.cpp:2: +In file included from ../inst/include/gdalapplib/gdalapplib.h:4: +In file included from /usr/include/gdal/gdal_priv.h:60: +In file included from /usr/include/gdal/gdal.h:50: +In file included from /usr/include/gdal/ogr_api.h:45: +/usr/include/gdal/ogr_core.h:786:32: warning: implicit conversion from 'int' to 'float' may lose precision [-Wimplicit-int-float-conversion] + const float fValue = (fSec - static_cast(fSec)) * 1000 + 0.5f; + ~ ^~~~~~~~~~~~~~~~~~~~~~ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:163: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:87:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<13>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:91:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<14>' requested here + return basic_cast(x); // #nocov + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:95:21: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<24>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:99:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<15>' requested here + return basic_cast(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:78:59: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + Rf_type2char(TYPEOF(x)), + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/r_cast.h:103:20: note: in instantiation of function template specialization 'Rcpp::internal::basic_cast<10>' requested here + return basic_cast(x); // #nocov + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/exceptions_impl.h:99:25: note: in instantiation of function template specialization 'Rcpp::Vector<16>::Vector' requested here + CharacterVector res(stack.size()); + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:32:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:33:35: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDateVector(int n) : GreedyVector(n) {} + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:35:22: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v.resize(len); + ~~~~~~ ^~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:33:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(SEXP vec) : GreedyVector(vec) {} + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:64: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/date_datetime.h:26: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDateVector.h:26: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:37:19: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + v[i] = T( static_cast(REAL(vec)[i])); + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/GreedyVector.h:40:33: warning: implicit conversion changes signedness: 'int' to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + GreedyVector(int n) : v(n){} + ~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/date_datetime/oldDatetimeVector.h:34:39: note: in instantiation of member function 'Rcpp::GreedyVector::GreedyVector' requested here + oldDatetimeVector(int n) : GreedyVector(n) {} + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/module/Module.h:74:24: note: in instantiation of function template specialization 'Rcpp::Vector<13>::Vector' requested here + IntegerVector x( n ) ; + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:336:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type>, __tree_node<__value_type>, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch>, std::__tree_node>, void *> *, long>>, std::pair>>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>, std::__tree_node>, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:337:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(VECSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:338:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:345:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_VECTOR_ELT(x, i, element); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:346:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:262:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__map_const_iterator<__tree_const_iterator<__value_type, __tree_node<__value_type, void *> *, long>>>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:319:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl__cast, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl__cast(first, last, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::__tree_node, void *> *, long>>, std::pair>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap, std::__tree_node, void *> *, long>>>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: (skipping 16 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:404:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>>' requested here + slot( "enums" ) = cl->enums ; + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:264:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:265:55: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield names(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:273:25: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(names, i, Rf_mkChar(buf.c_str())); + ~~~~~~~~~~~~~~ ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:237:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, std::string>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, std::string>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:544:13: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return range_wrap(object.begin(), object.end()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:552:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_range_sugar_expression>' requested here + return wrap_range_sugar_expression(object, typename Rcpp::traits::is_sugar_expression::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:559:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_iterable__logical>' requested here + return wrap_dispatch_unknown_iterable__logical(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:661:20: note: (skipping 3 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) + return wrap_dispatch_unknown_iterable__matrix_interface(object, + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:787:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_eigen>' requested here + return wrap_dispatch_eigen(object, typename traits::is_eigen_base::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:807:20: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch_unknown_importable>' requested here + return wrap_dispatch_unknown_importable(object, typename ::Rcpp::traits::is_importer::type()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap_end.h:30:25: note: in instantiation of function template specialization 'Rcpp::internal::wrap_dispatch>' requested here + return internal::wrap_dispatch( object, typename ::Rcpp::traits::wrap_type_traits::wrap_category() ) ; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:85:22: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + set(Shield(wrap(rhs))); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Module.h:405:32: note: in instantiation of function template specialization 'Rcpp::SlotProxyPolicy>::SlotProxy::operator=>' requested here + slot( "parents" ) = cl->parents ; + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:238:51: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(STRSXP, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:241:21: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + SET_STRING_ELT(x, i, make_charsexp(*first)); + ~~~~~~~~~~~~~~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:90: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/meat.h:41: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/export.h:54:32: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'std::vector::size_type' (aka 'unsigned long') [-Wsign-conversion] + Container vec( ::Rf_xlength(object) ); + ~~~ ^~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:89:29: note: in instantiation of member function 'Rcpp::traits::ContainerExporter::get' requested here + return exporter.get(); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:23:53: note: in instantiation of function template specialization 'Rcpp::as>' requested here + inline Dimension::Dimension(SEXP dims_) : dims( as< std::vector >(dims_) ){} + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:114:27: warning: implicit conversion changes signedness: 'typename iterator_traits<__wrap_iter>::difference_type' (aka 'long') to 'size_t' (aka 'unsigned long') [-Wsign-conversion] + size_t size = std::distance(first, last); + ~~~~ ^~~~~~~~~~~~~~~~~~~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:167:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl__nocast, int>' requested here + return primitive_range_wrap__impl__nocast(first, last, typename std::iterator_traits::iterator_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:179:20: note: in instantiation of function template specialization 'Rcpp::internal::primitive_range_wrap__impl, int>' requested here + return primitive_range_wrap__impl(first, last, typename ::Rcpp::traits::r_sexptype_needscast()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:419:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch___impl, int>' requested here + return range_wrap_dispatch___impl(first, last, typename ::Rcpp::traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:429:20: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap_dispatch, int>' requested here + return range_wrap_dispatch::value_type>::type >(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:941:27: note: in instantiation of function template specialization 'Rcpp::internal::range_wrap>' requested here + return internal::range_wrap(first, last); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Dimension.h:26:16: note: in instantiation of function template specialization 'Rcpp::wrap>' requested here + return wrap( dims.begin(), dims.end() ) ; + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:27: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/RcppCommon.h:188: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:116:50: warning: implicit conversion changes signedness: 'size_t' (aka 'unsigned long') to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Shield x(Rf_allocVector(RTYPE, size)); + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/wrap.h:128:28: warning: implicit conversion changes signedness: 'R_xlen_t' (aka 'long') to 'unsigned long' [-Wsign-conversion] + switch (size - i) { + ~ ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:38: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:41:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Environment.h:58:30: note: in instantiation of member function 'Rcpp::Environment_Impl::as_environment' requested here + Shield env(as_environment(x)); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/Environment.h:49:12: note: in instantiation of member function 'Rcpp::Environment_Impl::Environment_Impl' requested here + return newEnv(_["size"] = size, _["parent"] = R_EmptyEnv); + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:46: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:205:60: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw ::Rcpp::not_compatible(fmt, Rf_type2char(TYPEOF(x))); // #nocov + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/XPtr.h:78:29: note: in instantiation of member function 'Rcpp::XPtr::checked_set' requested here + explicit XPtr(SEXP x) { checked_set(x); }; + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/is.h:157:26: note: in instantiation of member function 'Rcpp::XPtr::XPtr' requested here + XPtr xp(sexp); + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:48: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Function.h:50:56: warning: implicit conversion changes signedness: 'int' to 'SEXPTYPE' (aka 'unsigned int') [-Wsign-conversion] + throw not_compatible(fmt, Rf_type2char(TYPEOF(x))); + ~~~~~~~~~~~~ ^~~~~~~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/internal/Exporter.h:31:28: note: in instantiation of member function 'Rcpp::Function_Impl::Function_Impl' requested here + Exporter( SEXP x ) : t(x){} + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:87:41: note: in instantiation of member function 'Rcpp::traits::Exporter>::Exporter' requested here + ::Rcpp::traits::Exporter exporter(x); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/as.h:152:26: note: in instantiation of function template specialization 'Rcpp::internal::as>' requested here + return internal::as(x, typename traits::r_type_traits::r_category()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/proxy.h:138:12: note: in instantiation of function template specialization 'Rcpp::as>' requested here + return as(get()); + ^ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/message.h:27:30: note: in instantiation of function template specialization 'Rcpp::BindingPolicy>::Binding::operator Function_Impl>' requested here + Rcpp::Function msg = Rcpp::Environment::base_env()["message"]; + ^ +In file included from warp_file.cpp:1: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp.h:40: +In file included from /root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/Vector.h:52: +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/vector/Vector.h:124:48: warning: implicit conversion changes signedness: 'unsigned long' to 'R_xlen_t' (aka 'long') [-Wsign-conversion] + Storage::set__( Rf_allocVector( RTYPE, size) ) ; + ~~~~~~~~~~~~~~ ^~~~ +/root/R/x86_64-pc-linux-gnu-library/4.4/Rcpp/include/Rcpp/api/meat/module/Module.h:28:11: note: in instantiation of function template specialization 'Rcpp::Vector<19>::Vector' requested here + List info(n); + ^ +141 warnings generated. +clang++ -stdlib=libc++ -shared -L/opt/R/devel/lib/R/lib -L/usr/local/lib -o vapour.so 000-stream.o 000-warpgeneral.o 00_config.o 00_gdal.o 00_geometry.o 00_raster.o 00_raster_block_io.o 00_utils.o 00_vrt.o RcppExports.o warp_file.o -L/usr/lib -lgdal -lproj -L/opt/R/devel/lib/R/lib -lR +installing to /root/R/x86_64-pc-linux-gnu-library/4.4/00LOCK-vapour/00new/vapour/libs +** R +** data +*** moving datasets to lazyload DB +** inst +** byte-compile and prepare package for lazy loading +** help +*** installing help indices +*** copying figures +** building package indices +** installing vignettes +** testing if installed package can be loaded from temporary location +** checking absolute paths in shared objects and dynamic libraries +** testing if installed package can be loaded from final location +** testing if installed package keeps a record of temporary installation path +* DONE (vapour) diff --git a/inst/ci/TEST.out b/inst/ci/TEST.out new file mode 100644 index 00000000..25c12312 --- /dev/null +++ b/inst/ci/TEST.out @@ -0,0 +1,168 @@ +i Testing vapour +v | F W S OK | Context + +/ | 0 | api-funs +\ | 2 | api-funs +v | 9 | api-funs [0.2s] + +/ | 0 | crs-less-warp Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +ERROR 1: netcdf error #-57 : NetCDF: Start+count exceeds dimension bound . +at (netcdfdataset.cpp,SetProjectionFromVar,3478) + +Warning 1: No 1D variable is indexed by dimension month +Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +ERROR 1: netcdf error #-57 : NetCDF: Start+count exceeds dimension bound . +at (netcdfdataset.cpp,SetProjectionFromVar,3478) + +Warning 1: No 1D variable is indexed by dimension month +Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +ERROR 1: netcdf error #-57 : NetCDF: Start+count exceeds dimension bound . +at (netcdfdataset.cpp,SetProjectionFromVar,3478) + +Warning 1: No 1D variable is indexed by dimension month + +- | 1 | crs-less-warp Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +ERROR 1: netcdf error #-57 : NetCDF: Start+count exceeds dimension bound . +at (netcdfdataset.cpp,SetProjectionFromVar,3478) + +Warning 1: No 1D variable is indexed by dimension month +Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +ERROR 1: netcdf error #-57 : NetCDF: Start+count exceeds dimension bound . +at (netcdfdataset.cpp,SetProjectionFromVar,3478) + +Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +ERROR 1: netcdf error #-57 : NetCDF: Start+count exceeds dimension bound . +at (netcdfdataset.cpp,SetProjectionFromVar,3478) + +Warning 1: No UNIDATA NC_GLOBAL:Conventions attribute +ERROR 1: netcdf error #-57 : NetCDF: Start+count exceeds dimension bound . +at (netcdfdataset.cpp,SetProjectionFromVar,3478) + +Warning 1: No 1D variable is indexed by dimension month + +\ | 2 | crs-less-warp +v | 2 | crs-less-warp [0.9s] + +/ | 0 | features +/ | 0 | test-features.R +- | 1 | test-features.R +| | 15 | test-features.R +/ | 16 | test-features.R +- | 17 | test-features.R +\ | 22 | test-features.R +/ | 24 | test-features.R +\ | 26 | test-features.R +- | 29 | test-features.R +- | 33 | test-features.R +| | 39 | test-features.R +- | 45 | test-features.R +- | 49 | test-features.R Warning 1: No translation from Polar_Stereographic to MapInfo known +Warning 6: Unhandled projection method Polar_Stereographic + +| | 51 | test-features.R +| | 55 | test-features.R +/ | 60 | test-features.R +\ | 66 | test-features.R +\ | 70 | test-features.R +| | 71 | test-features.R +| | 75 | test-features.R +| | 83 | test-features.R +/ | 84 | test-features.R +| | 87 | test-features.R +\ | 90 | test-features.R +- | 97 | test-features.R +/ | 104 | test-features.R +v | 106 | test-features.R [4.1s] + +/ | 0 | gdal +v | 2 | gdal + +/ | 0 | helpers +/ | 0 | test-helpers +\ | 2 | test-helpers +- | 5 | test-helpers +v | 5 | test-helpers [0.3s] + +/ | 0 | layers +| | 3 | layers +/ | 4 | layers +- | 5 | layers +\ | 6 | layers +| | 7 | layers +/ | 8 | layers +- | 9 | layers +\ | 10 | layers +| | 11 | layers +- | 13 | layers +\ | 14 | layers +| | 15 | layers +/ | 16 | layers +/ | 20 | layers +/ | 24 | layers +/ | 28 | layers +v | 28 | layers [4.6s] + +/ | 0 | limit_skip_n +/ | 0 | test-limit_skip_n +/ | 4 | test-limit_skip_n +- | 9 | test-limit_skip_n +| | 15 | test-limit_skip_n +- | 21 | test-limit_skip_n +- | 25 | test-limit_skip_n +v | 25 | test-limit_skip_n [0.6s] + +/ | 0 | names +/ | 0 | test-names +v | 1 | test-names + +/ | 0 | raster-info +/ | 0 | test-raster-info +| | 3 | test-raster-info +v | 13 | test-raster-info [0.2s] + +/ | 0 | raster-read +| | 3 | raster-read +| | 19 | raster-read +/ | 36 | raster-read +v | 41 | raster-read [0.4s] + +/ | 0 | raster_read_block +/ | 8 | raster_read_block +v | 11 | raster_read_block [0.1s] + +/ | 0 | rasterio-resampling +/ | 0 | rasterio-resampling +/ | 8 | rasterio-resampling +\ | 14 | rasterio-resampling +\ | 22 | rasterio-resampling +/ | 28 | rasterio-resampling +| | 31 | rasterio-resampling +v | 31 | rasterio-resampling [0.6s] + +/ | 0 | stress +/ | 0 | test-on-rhub +v | 1 | test-on-rhub + +/ | 0 | tiles +v | 1 | tiles + +/ | 0 | utils +/ | 0 | test-utils +v | 8 | test-utils + +/ | 0 | vrt +/ | 0 | vsi_list +v | 1 | vsi_list + +/ | 0 | warper +/ | 8 | warper ERROR 4: afile: No such file or directory + +/ | 16 | warper +| | 19 | warper +v | 19 | warper [0.3s] + +== Results ===================================================================== +Duration: 12.6 s + +[ FAIL 0 | WARN 0 | SKIP 0 | PASS 304 ] From de37ebf247f9ddfdfa3db1c054b0627bc824cca5 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 11 Apr 2023 12:29:20 +0000 Subject: [PATCH 094/102] add overview arg for vapour_vrt() --- NEWS.md | 2 ++ R/RcppExports.R | 8 ++++---- R/raster-input.R | 6 +++--- R/vapour_vrt.R | 11 ++++++++--- README.md | 4 ++-- inst/include/gdalraster/gdalraster.h | 16 +++++++++++----- inst/include/gdalwarpmem/gdalwarpmem.h | 5 +++-- man/vapour_vrt.Rd | 5 ++++- man/vapour_warp_raster.Rd | 5 ++++- src/00_raster.cpp | 4 ++-- src/00_vrt.cpp | 4 ++-- src/Makevars.in | 2 +- src/RcppExports.cpp | 18 ++++++++++-------- 13 files changed, 56 insertions(+), 34 deletions(-) diff --git a/NEWS.md b/NEWS.md index 95c921a2..fed55b96 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,7 @@ # vapour 0.9.5 +* `vapour_vrt()` gains an 'overview' argument. Wish of https://github.com/hypertidy/vapour/issues/186 + * `gdal_raster_data()`, `gdal_raster_dsn()`, and `gdal_raster_image()` now allow a source with geolocation arrays to be warped to a non-longlat projection. * The extent reported by 'vapour_raster_info()' is now correct for the general case including non-zero skew geotransforms. diff --git a/R/RcppExports.R b/R/RcppExports.R index 7d832e27..ca9daeb7 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -165,8 +165,8 @@ sds_list_list_gdal_cpp <- function(dsn) { .Call('_vapour_sds_list_list_gdal_cpp', PACKAGE = 'vapour', dsn) } -warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) { - .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd) +warp_in_memory_gdal_cpp <- function(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd, overview) { + .Call('_vapour_warp_in_memory_gdal_cpp', PACKAGE = 'vapour', dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd, overview) } vapour_read_raster_block_cpp <- function(dsource, offset, dimension, band, band_output_type, unscale) { @@ -201,8 +201,8 @@ raster_gdalinfo_app_cpp <- function(dsn, options) { .Call('_vapour_raster_gdalinfo_app_cpp', PACKAGE = 'vapour', dsn, options) } -raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd) { - .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd) +raster_vrt_cpp <- function(dsn, extent, projection, sds, bands, geolocation, nomd, overview) { + .Call('_vapour_raster_vrt_cpp', PACKAGE = 'vapour', dsn, extent, projection, sds, bands, geolocation, nomd, overview) } raster_warp_file_cpp <- function(source_filename, target_crs, target_extent, target_dim, target_filename, bands, resample, silent, band_output_type, warp_options, transformation_options) { diff --git a/R/raster-input.R b/R/raster-input.R index 0b6a8b7f..563599b5 100644 --- a/R/raster-input.R +++ b/R/raster-input.R @@ -321,7 +321,7 @@ vapour_read_raster_hex <- function(x, band = 1, #' @param open_options character vector of options, as in gdalwarp -oo - see Details #' @param options character vectors of options as per the gdalwarp command line #' @param nomd if `TRUE` the Metadata tag is removed from the resulting VRT (it can be quite substantial) - +#' @param overview pick an integer overview from the source (0L is highest resolution, default -1L does nothing) #' @export #' @seealso vapour_read_raster vapour_read_raster_raw vapour_read_raster_int vapour_read_raster_dbl vapour_read_raster_chr vapour_read_raster_hex #' @return list of vectors (only 1 for 'band') of numeric values, in raster order @@ -352,7 +352,7 @@ vapour_warp_raster <- function(x, bands = NULL, transformation_options = "", open_options = "", options = "", - nomd = FALSE) { + nomd = FALSE, overview = -1L) { x <- .check_dsn_multiple(x) if (!is.null(bands) && (anyNA(bands) || length(bands) < 1 || !is.numeric(bands))) { stop("'bands' must be a valid set of band integers (1-based)") @@ -516,7 +516,7 @@ vapour_warp_raster <- function(x, bands = NULL, resample = resample, silent = silent, band_output_type = band_output_type, - options = options, nomd = nomd) + options = options, nomd = nomd, overview) # ##// if we Dataset->RasterIO we don't have separated bands' # nbands <- length(vals[[1L]]) / prod(as.integer(dimension)) # if (nbands > 1) vals <- split(vals[[1L]], rep(seq_len(nbands), each = prod(as.integer(dimension)))) diff --git a/R/vapour_vrt.R b/R/vapour_vrt.R index b5c418dd..89a42287 100644 --- a/R/vapour_vrt.R +++ b/R/vapour_vrt.R @@ -58,6 +58,7 @@ #' @param geolocation vector of 2 dsn to longitude, latitude geolocation array sources #' @return VRT character string (for use by GDAL-capable tools, i.e. reading raster) #' @param nomd if `TRUE` the Metadata tag is removed from the resulting VRT (it can be quite substantial) +#' @param overview pick an integer overview from the source (0L is highest resolution, default -1L does nothing) #' @export #' #' @examples @@ -66,7 +67,7 @@ #' #' vapour_vrt(tif, bands = c(1, 1)) #' -vapour_vrt <- function(x, extent = NULL, projection = NULL, sds = 1L, bands = NULL, geolocation = NULL, ..., relative_to_vrt = FALSE, nomd = FALSE) { +vapour_vrt <- function(x, extent = NULL, projection = NULL, sds = 1L, bands = NULL, geolocation = NULL, ..., relative_to_vrt = FALSE, nomd = FALSE, overview = -1L) { x <- .check_dsn_multiple_naok(x) if (!relative_to_vrt) { @@ -126,8 +127,12 @@ vapour_vrt <- function(x, extent = NULL, projection = NULL, sds = 1L, bands = N } if (!is.null(geolocation) && (length(geolocation) != 2 || !is.character(geolocation) || anyNA(geolocation))) { geolocation <- "" - } - raster_vrt_cpp(x, extent, projection[1L], sds, bands, geolocation, nomd) + } + if (is.null(overview)) overview <- -1L + overview <- as.integer(overview[1]) + if (is.na(overview)) overview <- -1L + + raster_vrt_cpp(x, extent, projection[1L], sds, bands, geolocation, nomd, overview) } diff --git a/README.md b/README.md index 62d9953c..ce8d2915 100644 --- a/README.md +++ b/README.md @@ -81,8 +81,8 @@ remotes::install_github("hypertidy/vapour") You will need development tools for building R packages. -On Linux, I’m using latest ubuntu and R usually, check - +On Linux, I’m using latest ubuntu and R usually, check CRAN on ubuntu +(search for “ubuntu cran”). then diff --git a/inst/include/gdalraster/gdalraster.h b/inst/include/gdalraster/gdalraster.h index 09cdfbbd..7439fc54 100644 --- a/inst/include/gdalraster/gdalraster.h +++ b/inst/include/gdalraster/gdalraster.h @@ -119,7 +119,8 @@ inline GDALDatasetH gdalH_open_dsn(const char * dsn, IntegerVector sds) { inline GDALDatasetH gdalH_open_avrt(const char* dsn, NumericVector extent, CharacterVector projection, - IntegerVector sds, IntegerVector bands, CharacterVector geolocation) { + IntegerVector sds, IntegerVector bands, CharacterVector geolocation, + IntegerVector overview) { CPLStringList translate_argv; translate_argv.AddString("-of"); @@ -131,6 +132,10 @@ inline GDALDatasetH gdalH_open_avrt(const char* dsn, translate_argv.AddString(CPLSPrintf("%f", extent[1])); translate_argv.AddString(CPLSPrintf("%f", extent[2])); } + if (overview[0] >= 0) { + translate_argv.AddString("-ovr"); + translate_argv.AddString(CPLSPrintf("%i", overview[0])); + } if (!projection[0].empty()) { // have to validate this OGRSpatialReference *srs = new OGRSpatialReference; @@ -204,7 +209,7 @@ inline GDALDatasetH* gdalH_open_avrt_multiple(CharacterVector dsn, NumericVector GDALDatasetH* poHDS; // whoever calls this will have to CPLFree() this poHDS = static_cast(CPLMalloc(sizeof(GDALDatasetH) * static_cast(dsn.size()))); - for (int i = 0; i < dsn.size(); i++) poHDS[i] = gdalH_open_avrt(dsn[i], extent, projection, sds, bands, ""); + for (int i = 0; i < dsn.size(); i++) poHDS[i] = gdalH_open_avrt(dsn[i], extent, projection, sds, bands, "", -1); return poHDS; } // convert an opened GDALDataset to chunk-of-text VRT, if it is VRT you get it direct @@ -239,12 +244,13 @@ inline const char* gdal_vrt_text(GDALDataset* poSrcDS, LogicalVector nomd) { // [[Rcpp::export]] inline CharacterVector gdal_dsn_vrt(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, - CharacterVector geolocation, LogicalVector nomd) { + CharacterVector geolocation, LogicalVector nomd, + IntegerVector overview) { CharacterVector out(dsn.size()); GDALDatasetH DS; for (int i = 0; i < out.size(); i++) { - if (extent.size() == 4 || (!projection[0].empty()) || bands[0] > 0 || (!geolocation[0].empty() ) || sds[0] > 1) { - DS = gdalH_open_avrt(dsn[i], extent, projection, sds, bands, geolocation); + if (extent.size() == 4 || (!projection[0].empty()) || bands[0] > 0 || (!geolocation[0].empty() ) || sds[0] > 1 || overview[0] > -1) { + DS = gdalH_open_avrt(dsn[i], extent, projection, sds, bands, geolocation, overview); } else { DS = gdalH_open_dsn(dsn[i], sds); } diff --git a/inst/include/gdalwarpmem/gdalwarpmem.h b/inst/include/gdalwarpmem/gdalwarpmem.h index ab7a2116..d026ab8a 100644 --- a/inst/include/gdalwarpmem/gdalwarpmem.h +++ b/inst/include/gdalwarpmem/gdalwarpmem.h @@ -29,7 +29,8 @@ inline List gdal_warp_in_memory(CharacterVector source_filename, //CharacterVector open_options, // CharacterVector output_dataset_options, CharacterVector options, - LogicalVector nomd) { + LogicalVector nomd, + IntegerVector overview) { GDALDatasetH *poSrcDS; @@ -42,7 +43,7 @@ inline List gdal_warp_in_memory(CharacterVector source_filename, if (augment) { // not dealing with subdatasets here atm // not dealing with source bands here, bands applies at read beloew - poSrcDS[i] = gdalraster::gdalH_open_avrt(source_filename[i], source_extent, source_WKT, 0, 0, ""); + poSrcDS[i] = gdalraster::gdalH_open_avrt(source_filename[i], source_extent, source_WKT, 0, 0, "", overview); } else { poSrcDS[i] = gdalraster::gdalH_open_dsn(source_filename[i], 0); diff --git a/man/vapour_vrt.Rd b/man/vapour_vrt.Rd index 09bacc76..295d1386 100644 --- a/man/vapour_vrt.Rd +++ b/man/vapour_vrt.Rd @@ -13,7 +13,8 @@ vapour_vrt( geolocation = NULL, ..., relative_to_vrt = FALSE, - nomd = FALSE + nomd = FALSE, + overview = -1L ) } \arguments{ @@ -34,6 +35,8 @@ vapour_vrt( \item{relative_to_vrt}{default \code{FALSE}, if \code{TRUE} input strings that identify as files on the system are left as-is (by default they are made absolute at the R level)} \item{nomd}{if \code{TRUE} the Metadata tag is removed from the resulting VRT (it can be quite substantial)} + +\item{overview}{pick an integer overview from the source (0L is highest resolution, default -1L does nothing)} } \value{ VRT character string (for use by GDAL-capable tools, i.e. reading raster) diff --git a/man/vapour_warp_raster.Rd b/man/vapour_warp_raster.Rd index 464e030e..4df54a3a 100644 --- a/man/vapour_warp_raster.Rd +++ b/man/vapour_warp_raster.Rd @@ -21,7 +21,8 @@ vapour_warp_raster( transformation_options = "", open_options = "", options = "", - nomd = FALSE + nomd = FALSE, + overview = -1L ) } \arguments{ @@ -58,6 +59,8 @@ vapour_warp_raster( \item{options}{character vectors of options as per the gdalwarp command line} \item{nomd}{if \code{TRUE} the Metadata tag is removed from the resulting VRT (it can be quite substantial)} + +\item{overview}{pick an integer overview from the source (0L is highest resolution, default -1L does nothing)} } \value{ list of vectors (only 1 for 'band') of numeric values, in raster order diff --git a/src/00_raster.cpp b/src/00_raster.cpp index 5c95283f..5b2c8723 100644 --- a/src/00_raster.cpp +++ b/src/00_raster.cpp @@ -60,7 +60,7 @@ List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector band_output_type, CharacterVector options, - LogicalVector nomd) { + LogicalVector nomd, IntegerVector overview) { return gdalwarpmem::gdal_warp_in_memory(dsn, source_WKT, target_WKT, @@ -71,5 +71,5 @@ List warp_in_memory_gdal_cpp(CharacterVector dsn, resample, silent, band_output_type, - options, nomd); + options, nomd, overview); } diff --git a/src/00_vrt.cpp b/src/00_vrt.cpp index 3dd8333f..c0fd1570 100644 --- a/src/00_vrt.cpp +++ b/src/00_vrt.cpp @@ -9,8 +9,8 @@ using namespace Rcpp; CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, - IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd) { - return gdalraster::gdal_dsn_vrt(dsn, extent, projection, sds, bands, geolocation, nomd); + IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd, IntegerVector overview) { + return gdalraster::gdal_dsn_vrt(dsn, extent, projection, sds, bands, geolocation, nomd, overview); } diff --git a/src/Makevars.in b/src/Makevars.in index 6ffcf0a8..3d34cea7 100644 --- a/src/Makevars.in +++ b/src/Makevars.in @@ -1,3 +1,3 @@ -PKG_CPPFLAGS=@PKG_CPPFLAGS@ -I../inst/include/ +PKG_CPPFLAGS=@PKG_CPPFLAGS@ -I../inst/include/ -Wconversion PKG_LIBS=@PKG_LIBS@ CXX_STD=CXX diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index d289e648..cc3d3bf3 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -568,8 +568,8 @@ BEGIN_RCPP END_RCPP } // warp_in_memory_gdal_cpp -List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd); -RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP) { +List warp_in_memory_gdal_cpp(CharacterVector dsn, CharacterVector source_WKT, CharacterVector target_WKT, NumericVector target_extent, IntegerVector target_dim, IntegerVector bands, NumericVector source_extent, CharacterVector resample, LogicalVector silent, CharacterVector band_output_type, CharacterVector options, LogicalVector nomd, IntegerVector overview); +RcppExport SEXP _vapour_warp_in_memory_gdal_cpp(SEXP dsnSEXP, SEXP source_WKTSEXP, SEXP target_WKTSEXP, SEXP target_extentSEXP, SEXP target_dimSEXP, SEXP bandsSEXP, SEXP source_extentSEXP, SEXP resampleSEXP, SEXP silentSEXP, SEXP band_output_typeSEXP, SEXP optionsSEXP, SEXP nomdSEXP, SEXP overviewSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -585,7 +585,8 @@ BEGIN_RCPP Rcpp::traits::input_parameter< CharacterVector >::type band_output_type(band_output_typeSEXP); Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd)); + Rcpp::traits::input_parameter< IntegerVector >::type overview(overviewSEXP); + rcpp_result_gen = Rcpp::wrap(warp_in_memory_gdal_cpp(dsn, source_WKT, target_WKT, target_extent, target_dim, bands, source_extent, resample, silent, band_output_type, options, nomd, overview)); return rcpp_result_gen; END_RCPP } @@ -703,8 +704,8 @@ BEGIN_RCPP END_RCPP } // raster_vrt_cpp -CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd); -RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP) { +CharacterVector raster_vrt_cpp(CharacterVector dsn, NumericVector extent, CharacterVector projection, IntegerVector sds, IntegerVector bands, CharacterVector geolocation, LogicalVector nomd, IntegerVector overview); +RcppExport SEXP _vapour_raster_vrt_cpp(SEXP dsnSEXP, SEXP extentSEXP, SEXP projectionSEXP, SEXP sdsSEXP, SEXP bandsSEXP, SEXP geolocationSEXP, SEXP nomdSEXP, SEXP overviewSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -715,7 +716,8 @@ BEGIN_RCPP Rcpp::traits::input_parameter< IntegerVector >::type bands(bandsSEXP); Rcpp::traits::input_parameter< CharacterVector >::type geolocation(geolocationSEXP); Rcpp::traits::input_parameter< LogicalVector >::type nomd(nomdSEXP); - rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd)); + Rcpp::traits::input_parameter< IntegerVector >::type overview(overviewSEXP); + rcpp_result_gen = Rcpp::wrap(raster_vrt_cpp(dsn, extent, projection, sds, bands, geolocation, nomd, overview)); return rcpp_result_gen; END_RCPP } @@ -783,7 +785,7 @@ static const R_CallMethodDef CallEntries[] = { {"_vapour_raster_io_gdal_cpp", (DL_FUNC) &_vapour_raster_io_gdal_cpp, 6}, {"_vapour_sds_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_gdal_cpp, 1}, {"_vapour_sds_list_list_gdal_cpp", (DL_FUNC) &_vapour_sds_list_list_gdal_cpp, 1}, - {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 12}, + {"_vapour_warp_in_memory_gdal_cpp", (DL_FUNC) &_vapour_warp_in_memory_gdal_cpp, 13}, {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, @@ -792,7 +794,7 @@ static const R_CallMethodDef CallEntries[] = { {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, {"_vapour_raster_gdalinfo_app_cpp", (DL_FUNC) &_vapour_raster_gdalinfo_app_cpp, 2}, - {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 7}, + {"_vapour_raster_vrt_cpp", (DL_FUNC) &_vapour_raster_vrt_cpp, 8}, {"_vapour_raster_warp_file_cpp", (DL_FUNC) &_vapour_raster_warp_file_cpp, 11}, {NULL, NULL, 0} }; From b68d64fc375c7cd87aee2cc91d6496d12c6c8e96 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Tue, 11 Apr 2023 12:52:36 +0000 Subject: [PATCH 095/102] RC 0.9.5 --- cran-comments.md | 11 +++++------ src/Makevars.in | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/cran-comments.md b/cran-comments.md index 67c549d2..b646f59c 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,16 +1,15 @@ -## vapour 0.9.3 +## vapour 0.9.5 * Patched CRAN supplied diff for Makevars.ucrt. -* vapour doesn't write to files, so the GDAL 3.6.0 retraction is not relevant so we've avoided messaging - from .onLoad as discussed by R Bivand. - + Thanks! ## Test environments -* win-builder (devel and release) -* Linux ubuntu +* win-builder (devel) +* mac-builder +* Linux ubuntu (and clang with -Wconversion) ## R CMD check results diff --git a/src/Makevars.in b/src/Makevars.in index 3d34cea7..2e132dac 100644 --- a/src/Makevars.in +++ b/src/Makevars.in @@ -1,3 +1,3 @@ -PKG_CPPFLAGS=@PKG_CPPFLAGS@ -I../inst/include/ -Wconversion +PKG_CPPFLAGS=@PKG_CPPFLAGS@ -I../inst/include/ PKG_LIBS=@PKG_LIBS@ CXX_STD=CXX From 8a1ffcd87a1cff6ba128889158d5ea891fcb9c42 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 27 Apr 2023 14:01:58 +1000 Subject: [PATCH 096/102] badge --- README.Rmd | 2 +- README.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.Rmd b/README.Rmd index 2633f986..6523ecdf 100644 --- a/README.Rmd +++ b/README.Rmd @@ -20,7 +20,7 @@ knitr::opts_chunk$set( [![R_build_status](https://github.com/hypertidy/vapour/workflows/R-CMD-check/badge.svg)](https://github.com/hypertidy/vapour/actions) [![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/vapour)](https://cran.r-project.org/package=vapour) -[![CRAN_Download_Badge](http://cranlogs.r-pkg.org/badges/vapour)](https://cran.r-project.org/package=vapour) +[![CRAN_Download_Badge](http://cranlogs.r-pkg.org/badges/vapour)](http://cranlogs.r-pkg.org/badges/vapour) diff --git a/README.md b/README.md index 62d9953c..b3c4fb93 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![R_build_status](https://github.com/hypertidy/vapour/workflows/R-CMD-check/badge.svg)](https://github.com/hypertidy/vapour/actions) [![CRAN_Status_Badge](http://www.r-pkg.org/badges/version/vapour)](https://cran.r-project.org/package=vapour) -[![CRAN_Download_Badge](http://cranlogs.r-pkg.org/badges/vapour)](https://cran.r-project.org/package=vapour) +[![CRAN_Download_Badge](http://cranlogs.r-pkg.org/badges/vapour)](http://cranlogs.r-pkg.org/badges/vapour) ## Overview @@ -174,7 +174,7 @@ image(x) ## or as a spatial object library(terra) -#> terra 1.7.21 +#> terra 1.7.23 r <- rast(ext(ex), nrows = dm[2], ncols = dm[1], crs = crs, vals = vals[[1]]) contour(r, add = TRUE) ``` From 44a5ecd6a7b8f450056c700a4409d54868830c40 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 1 May 2023 09:33:59 +1000 Subject: [PATCH 097/102] close the created file properly --- DESCRIPTION | 2 +- NEWS.md | 3 +++ inst/include/gdalreadwrite/gdalreadwrite.h | 3 ++- tests/testthat/test-create.R | 7 +++++++ 4 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 tests/testthat/test-create.R diff --git a/DESCRIPTION b/DESCRIPTION index c8457c8c..9d18a6e4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.5 +Version: 0.9.5.9001 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index fed55b96..87430e9e 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,6 @@ +# vapour dev + +* Fixed failure to close file created by `vapour_create()` fixes #202. # vapour 0.9.5 * `vapour_vrt()` gains an 'overview' argument. Wish of https://github.com/hypertidy/vapour/issues/186 diff --git a/inst/include/gdalreadwrite/gdalreadwrite.h b/inst/include/gdalreadwrite/gdalreadwrite.h index d5902323..d1f2fea2 100644 --- a/inst/include/gdalreadwrite/gdalreadwrite.h +++ b/inst/include/gdalreadwrite/gdalreadwrite.h @@ -65,7 +65,8 @@ inline CharacterVector gdal_create(CharacterVector filename, CharacterVector dri extent[3], 0, (extent[2] - extent[3])/ dimension[1]}; poDstDS->SetGeoTransform( adfGeoTransform ); - + if( poDstDS != NULL ) + GDALClose( (GDALDatasetH) poDstDS ); if (oTargetSRS != nullptr) { delete oTargetSRS; } diff --git a/tests/testthat/test-create.R b/tests/testthat/test-create.R new file mode 100644 index 00000000..fcbbc80f --- /dev/null +++ b/tests/testthat/test-create.R @@ -0,0 +1,7 @@ +ex <- c(10, 20, -10, 20) +test_that("create works", { + expect_output(vapour_create(tf <- tempfile(fileext = ".tif"), dimension = c(10, 5), extent = ex)) |> expect_equal(tf) + expect_silent(info <- vapour_raster_info(tf)) + expect_equal(info$extent, ex) + expect_equal(info$dimension, c(10, 5)) +}) From e363665ef3d42be3fcf387c89fb64fe5ba697392 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 1 May 2023 13:37:23 +1000 Subject: [PATCH 098/102] more controle for vapour_create --- DESCRIPTION | 2 +- NAMESPACE | 1 + NEWS.md | 3 + R/00_read_block.R | 57 ++++++++- R/RcppExports.R | 4 +- inst/include/gdalreadwrite/gdalreadwrite.h | 139 +++++++++++++++++---- man/vapour_create.Rd | 25 +++- src/00_raster_block_io.cpp | 6 +- src/RcppExports.cpp | 10 +- 9 files changed, 205 insertions(+), 42 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 9d18a6e4..876a5c26 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.5.9001 +Version: 0.9.5.9002 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NAMESPACE b/NAMESPACE index 22c294c6..4e06e5fc 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -5,6 +5,7 @@ export(gdal_raster_dsn) export(gdal_raster_image) export(vapour_all_drivers) export(vapour_create) +export(vapour_create_options) export(vapour_crs_is_lonlat) export(vapour_driver) export(vapour_gdal_version) diff --git a/NEWS.md b/NEWS.md index 87430e9e..3a3edc61 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,9 @@ # vapour dev +* `vapour_create()` gets creation options, data type options, and driver options. + * Fixed failure to close file created by `vapour_create()` fixes #202. + # vapour 0.9.5 * `vapour_vrt()` gains an 'overview' argument. Wish of https://github.com/hypertidy/vapour/issues/186 diff --git a/R/00_read_block.R b/R/00_read_block.R index 7ecf9220..603771a4 100644 --- a/R/00_read_block.R +++ b/R/00_read_block.R @@ -1,3 +1,25 @@ +#' @name vapour_create +#' @export +vapour_create_options <- function(driver = "GTiff") { + + + if (driver[1] == "GTiff") { + default_options = c( + "SPARSE_OK=YES", + "TILED=YES", "BLOCKXSIZE=512", "BLOCKYSIZE=512", + "COMPRESS=DEFLATE", "BIGTIFF=IF_SAFER") + } else if (driver[1] == "COG") { + default_options <- c( + "SPARSE_OK=YES", + "BLOCKSIZE=512", + "COMPRESS=DEFLATE", "BIGTIFF=IF_SAFER") + } else { + default_options <- character(0) + } + default_options +} + + #' Create raster file #' #' This is in an incomplete interface to raster writing, for exploring. @@ -5,8 +27,14 @@ #' If GeoTIFF is used (`driver = "GTiff"`, recommended) then the output is tiled 512x512, and has DEFLATE compression, and #' is sparse when created (no values are initiated, so the file is tiny). #' -#' Note that there is no restriction on where you can read or write from, the responsibility is yours. In future we will -#' allow control of output tiling and data type etc. +#' Note that there is no restriction on where you can read or write from, the responsibility is yours. There is no auto driver detection +#' done for the file format, it's up to you to set the file extension _and_ the driver. +#' +#' File is created using CreateCopy from a VRT in memory. This is so that we can instantiate COG layer with 'driver = "COG"'. +#' Please note that performance is best for GTiff itself, with 'SPARSE_OK=YES'. We don't yet know how to instantiate a large +#' COG with overviews. +#' +#' There are default creation options set for COG and GTiff drivers, see 'vapour_create_options(driver "GTiff")' for what those are. #' #' @param filename filename/path to create #' @param driver GDAL driver to use (GTiff is default, and recommended) @@ -15,6 +43,8 @@ #' @param projection projection of the output, best to use a full WKT but any string accepted #' @param n_bands number of bands in the output, default is 1 #' @param overwrite not TRUE by default +#' @param datatype the name of a GDAL datatype ('Float32', 'Int64', etc) +#' @param options character vector of creation of options for the driver in use `c('COMPRESS=DEFLATE')` note how these are constructed (no '-co' element) #' #' @return the file path that was created #' @export @@ -28,11 +58,30 @@ #' file.remove(tfile) #' } vapour_create <- function(filename, driver = "GTiff", extent = c(-180, 180, -90, 90), - dimension = c(2048, 1024), projection = "OGC:CRS84", n_bands = 1L, overwrite = FALSE) { + dimension = c(2048, 1024), projection = "OGC:CRS84", n_bands = 1L, overwrite = FALSE, + datatype = "Float32", + options = vapour_create_options(driver)) { if (!overwrite && file.exists(filename)) stop("'filename' exists") - vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands) + driver <- driver[1L] + if (length(driver) < 1 || !nzchar(driver) || is.na(driver)) { + stop("driver name is not valid") + } + stopifnot(is.numeric(extent)) + stopifnot(length(extent) == 4L) + df <- diff(extent)[c(1L, 3L)] + if(!df[1] > 0) stop("extent is not valid, must be c(xmin, xmax, ymin, ymax) : xmax !> xmin") + if(!df[2] > 0) stop("extent is not valid, must be c(xmin, xmax, ymin, ymax) : ymax !> ymin") + + if (is.null(options)) { + options <- vapour_create_options(driver) + } + if (!is.character(options)) options <- character() + if (length(options) < 1) options <- character() + if (!nzchar(options[1])) options <- character() + if (is.na(options[1])) options <- character() + vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands, datatype, options) } diff --git a/R/RcppExports.R b/R/RcppExports.R index ca9daeb7..f4a2e1bc 100644 --- a/R/RcppExports.R +++ b/R/RcppExports.R @@ -181,8 +181,8 @@ vapour_create_copy_cpp <- function(dsource, dtarget, driver) { .Call('_vapour_vapour_create_copy_cpp', PACKAGE = 'vapour', dsource, dtarget, driver) } -vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands) { - .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands) +vapour_create_cpp <- function(filename, driver, extent, dimension, projection, n_bands, datatype, options) { + .Call('_vapour_vapour_create_cpp', PACKAGE = 'vapour', filename, driver, extent, dimension, projection, n_bands, datatype, options) } vapour_read_raster_value_cpp <- function(dsource, col, row, band, band_output_type) { diff --git a/inst/include/gdalreadwrite/gdalreadwrite.h b/inst/include/gdalreadwrite/gdalreadwrite.h index d1f2fea2..97e2ca44 100644 --- a/inst/include/gdalreadwrite/gdalreadwrite.h +++ b/inst/include/gdalreadwrite/gdalreadwrite.h @@ -12,14 +12,76 @@ namespace gdalreadwrite{ using namespace Rcpp; + + +inline GDALDataType init_datatype(CharacterVector datatype) { + // Byte/Int8/Int16/UInt16/UInt32/Int32/UInt64/Int64/Float32/Float64/ + // CInt16/CInt32/CFloat32/CFloat64 + // + if (datatype[0] == "Byte") { + return GDT_Byte; + } +#if (GDAL_VERSION_MAJOR >= 3 && GDAL_VERSION_MINOR >= 7) + if (datatype[0] == "Int8") { + return GDT_Int8; + } +#endif + + if (datatype[0] == "Int16") { + return GDT_Int16; + } + if (datatype[0] == "UInt16") { + return GDT_UInt16; + } + if (datatype[0] == "UInt32") { + return GDT_UInt32; + } + if (datatype[0] == "Int32") { + return GDT_Int32; + } + if (datatype[0] == "UInt64") { + return GDT_UInt64; + } + if (datatype[0] == "Float32") { + return GDT_Float32; + } + if (datatype[0] == "Int64") { + return GDT_Int64; + } + if (datatype[0] == "Float64") { + return GDT_Float64; + } + if (datatype[0] == "CInt16") { + return GDT_CInt16; + } + if (datatype[0] == "CInt32") { + return GDT_CInt32; + } + if (datatype[0] == "CFLoat32") { + return GDT_CFloat32; + } + if (datatype[0] == "CFloat64") { + return GDT_CFloat64; + } + + // Rcpp::stop("datatype not suppported %s\n", datatype[0]); + return GDT_Unknown; +} + + + inline CharacterVector gdal_create(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, - IntegerVector n_bands) { + IntegerVector n_bands, + CharacterVector datatype, + CharacterVector options) { // const char *pszFormat; // pszFormat = (const char *)driver[0]; - + + GDALDataType gdt_type = init_datatype(datatype); + //GDALDataType gdt_type = GDT_Float32; OGRSpatialReference* oTargetSRS = nullptr; oTargetSRS = new OGRSpatialReference; OGRErr target_chk = oTargetSRS->SetFromUserInput(projection[0]); @@ -31,42 +93,71 @@ inline CharacterVector gdal_create(CharacterVector filename, CharacterVector dri } char **papszOptions = NULL; - if (driver[0] == "GTiff") { - papszOptions = CSLSetNameValue( papszOptions, "SPARSE_OK", "YES" ); - papszOptions = CSLSetNameValue( papszOptions, "TILED", "YES" ); - papszOptions = CSLSetNameValue( papszOptions, "BLOCKXSIZE", "512" ); - papszOptions = CSLSetNameValue( papszOptions, "BLOCKYSIZE", "512" ); - papszOptions = CSLSetNameValue( papszOptions, "COMPRESS", "DEFLATE" ); + if (options.size() > 0) { + for (int i = 0; i < options.size(); i++) { +// do this in R + // if (EQUAL(options[i], "-co") || CSLPartialFindString(options[i], "=") > -1) { + // Rcpp::warning("create options should not include '-co' or '='") + // } + Rprintf("option: %s\n", (const char *)options[i]); + papszOptions = CSLAddString(papszOptions, options[i]); } + } + // if (driver[0] == "GTiff") { + // papszOptions = CSLSetNameValue( papszOptions, "SPARSE_OK", "YES" ); + // papszOptions = CSLSetNameValue( papszOptions, "TILED", "YES" ); + // papszOptions = CSLSetNameValue( papszOptions, "BLOCKXSIZE", "512" ); + // papszOptions = CSLSetNameValue( papszOptions, "BLOCKYSIZE", "512" ); + // papszOptions = CSLSetNameValue( papszOptions, "COMPRESS", "DEFLATE" ); + // } + GDALDriver *poDriver; - poDriver = GetGDALDriverManager()->GetDriverByName(driver[0]); + poDriver = GetGDALDriverManager()->GetDriverByName("VRT"); if( poDriver == NULL ) { return Rcpp::CharacterVector::create(NA_STRING); } - char **papszMetadata; - papszMetadata = poDriver->GetMetadata(); - if( CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATE, FALSE ) ) { - Rprintf( "Driver %s supports Create() method.\n", (const char *)driver[0]); - } else { - Rprintf( "Driver %s does not support Create() method.\n", (const char *)driver[0]); - return Rcpp::CharacterVector::create(NA_STRING); - } - GDALDataset *poDstDS; - poDstDS = poDriver->Create(filename[0], dimension[0], dimension[1], n_bands[0], GDT_Float32, papszOptions); - if (poDstDS == NULL) { - Rprintf( "Failed to Create %s. \n", (const char *)filename[0]); + // char **papszMetadata; + // papszMetadata = poDriver->GetMetadata(); + // if( CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATE, FALSE ) ) { + // Rprintf( "Driver %s supports Create() method.\n", (const char *)driver[0]); + // } else { + // Rprintf( "Driver %s does not support Create() method.\n", (const char *)driver[0]); + // return Rcpp::CharacterVector::create(NA_STRING); + // } + GDALDataset *poVrtDS; + poVrtDS = poDriver->Create("", dimension[0], dimension[1], n_bands[0], gdt_type, NULL); + if (poVrtDS == NULL) { + Rprintf( "Failed to Create virtual datase\n"); return Rcpp::CharacterVector::create(NA_STRING); } double adfGeoTransform[6] = { extent[0], (extent[1] - extent[0])/ dimension[0], 0, extent[3], 0, (extent[2] - extent[3])/ dimension[1]}; - poDstDS->SetGeoTransform( adfGeoTransform ); + poVrtDS->SetGeoTransform( adfGeoTransform ); + poVrtDS->SetSpatialRef(oTargetSRS); - if( poDstDS != NULL ) - GDALClose( (GDALDatasetH) poDstDS ); + char **papszMetadata; + GDALDriver *outDriver; + outDriver = GetGDALDriverManager()->GetDriverByName(driver[0]); + + papszMetadata = outDriver->GetMetadata(); + if( !CSLFetchBoolean( papszMetadata, GDAL_DCAP_CREATECOPY, FALSE ) ) { + if( poVrtDS != NULL ) + GDALClose( (GDALDatasetH) poVrtDS ); + Rcpp::stop("driver does not support CreateCopy: %s", driver); + + } + + GDALDataset *poDS; + poDS = outDriver->CreateCopy(filename[0], poVrtDS, false, papszOptions, NULL, NULL); + if( poDS != NULL ) + GDALClose( (GDALDatasetH) poDS ); + + if( poVrtDS != NULL ) + GDALClose( (GDALDatasetH) poVrtDS ); if (oTargetSRS != nullptr) { delete oTargetSRS; } diff --git a/man/vapour_create.Rd b/man/vapour_create.Rd index 0affed47..5bd66123 100644 --- a/man/vapour_create.Rd +++ b/man/vapour_create.Rd @@ -2,8 +2,11 @@ % Please edit documentation in R/00_read_block.R \name{vapour_create} \alias{vapour_create} +\alias{vapour_create_options} \title{Create raster file} \usage{ +vapour_create_options(driver = "GTiff") + vapour_create( filename, driver = "GTiff", @@ -11,14 +14,16 @@ vapour_create( dimension = c(2048, 1024), projection = "OGC:CRS84", n_bands = 1L, - overwrite = FALSE + overwrite = FALSE, + datatype = "Float32", + options = vapour_create_options(driver) ) } \arguments{ -\item{filename}{filename/path to create} - \item{driver}{GDAL driver to use (GTiff is default, and recommended)} +\item{filename}{filename/path to create} + \item{extent}{xmin,xmax,ymin,ymax 4-element vector} \item{dimension}{dimension of the output, X * Y} @@ -28,6 +33,10 @@ vapour_create( \item{n_bands}{number of bands in the output, default is 1} \item{overwrite}{not TRUE by default} + +\item{datatype}{the name of a GDAL datatype ('Float32', 'Int64', etc)} + +\item{options}{character vector of creation of options for the driver in use \code{c('COMPRESS=DEFLATE')} note how these are constructed (no '-co' element)} } \value{ the file path that was created @@ -39,8 +48,14 @@ This is in an incomplete interface to raster writing, for exploring. If GeoTIFF is used (\code{driver = "GTiff"}, recommended) then the output is tiled 512x512, and has DEFLATE compression, and is sparse when created (no values are initiated, so the file is tiny). -Note that there is no restriction on where you can read or write from, the responsibility is yours. In future we will -allow control of output tiling and data type etc. +Note that there is no restriction on where you can read or write from, the responsibility is yours. There is no auto driver detection +done for the file format, it's up to you to set the file extension \emph{and} the driver. + +File is created using CreateCopy from a VRT in memory. This is so that we can instantiate COG layer with 'driver = "COG"'. +Please note that performance is best for GTiff itself, with 'SPARSE_OK=YES'. We don't yet know how to instantiate a large +COG with overviews. + +There are default creation options set for COG and GTiff drivers, see 'vapour_create_options(driver "GTiff")' for what those are. } \examples{ tfile <- tempfile(fileext = ".tif") diff --git a/src/00_raster_block_io.cpp b/src/00_raster_block_io.cpp index 2de84821..d6eded1e 100644 --- a/src/00_raster_block_io.cpp +++ b/src/00_raster_block_io.cpp @@ -30,8 +30,10 @@ Rcpp::CharacterVector vapour_create_copy_cpp(CharacterVector dsource, CharacterV Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, - IntegerVector n_bands) { - return gdalreadwrite::gdal_create(filename, driver, extent, dimension, projection, n_bands); + IntegerVector n_bands, + CharacterVector datatype, + CharacterVector options) { + return gdalreadwrite::gdal_create(filename, driver, extent, dimension, projection, n_bands, datatype, options); } diff --git a/src/RcppExports.cpp b/src/RcppExports.cpp index cc3d3bf3..7dba2518 100644 --- a/src/RcppExports.cpp +++ b/src/RcppExports.cpp @@ -635,8 +635,8 @@ BEGIN_RCPP END_RCPP } // vapour_create_cpp -Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands); -RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP) { +Rcpp::CharacterVector vapour_create_cpp(CharacterVector filename, CharacterVector driver, NumericVector extent, IntegerVector dimension, CharacterVector projection, IntegerVector n_bands, CharacterVector datatype, CharacterVector options); +RcppExport SEXP _vapour_vapour_create_cpp(SEXP filenameSEXP, SEXP driverSEXP, SEXP extentSEXP, SEXP dimensionSEXP, SEXP projectionSEXP, SEXP n_bandsSEXP, SEXP datatypeSEXP, SEXP optionsSEXP) { BEGIN_RCPP Rcpp::RObject rcpp_result_gen; Rcpp::RNGScope rcpp_rngScope_gen; @@ -646,7 +646,9 @@ BEGIN_RCPP Rcpp::traits::input_parameter< IntegerVector >::type dimension(dimensionSEXP); Rcpp::traits::input_parameter< CharacterVector >::type projection(projectionSEXP); Rcpp::traits::input_parameter< IntegerVector >::type n_bands(n_bandsSEXP); - rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands)); + Rcpp::traits::input_parameter< CharacterVector >::type datatype(datatypeSEXP); + Rcpp::traits::input_parameter< CharacterVector >::type options(optionsSEXP); + rcpp_result_gen = Rcpp::wrap(vapour_create_cpp(filename, driver, extent, dimension, projection, n_bands, datatype, options)); return rcpp_result_gen; END_RCPP } @@ -789,7 +791,7 @@ static const R_CallMethodDef CallEntries[] = { {"_vapour_vapour_read_raster_block_cpp", (DL_FUNC) &_vapour_vapour_read_raster_block_cpp, 6}, {"_vapour_vapour_write_raster_block_cpp", (DL_FUNC) &_vapour_vapour_write_raster_block_cpp, 5}, {"_vapour_vapour_create_copy_cpp", (DL_FUNC) &_vapour_vapour_create_copy_cpp, 3}, - {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 6}, + {"_vapour_vapour_create_cpp", (DL_FUNC) &_vapour_vapour_create_cpp, 8}, {"_vapour_vapour_read_raster_value_cpp", (DL_FUNC) &_vapour_vapour_read_raster_value_cpp, 5}, {"_vapour_blocks_cpp1", (DL_FUNC) &_vapour_blocks_cpp1, 3}, {"_vapour_blocks_cpp", (DL_FUNC) &_vapour_blocks_cpp, 3}, From 42c61c34ecef9b454034a520b4d29a6f1d016173 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 1 May 2023 16:00:38 +1000 Subject: [PATCH 099/102] make cutline example work --- R/00_warpgeneral.R | 11 +++++++++-- man/gdal_raster_data.Rd | 11 +++++++++-- tests/testthat/test-features.R | 2 +- tools/winlibs.R | 2 +- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index e6c58306..afc03af1 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -31,8 +31,15 @@ #' X1 <- gdal_raster_data(dsn, target_res = 1) #' #' ## add a cutline, and cut to it using gdal warp args -#' cutline <- system.file("extdata/cutline_sst.gpkg", package = "vapour") -#' X1c <- gdal_raster_data(dsn, target_res = .1, options = c("-cutline",cutline, "-crop_to_cutline" )) +#' +#' if (interactive()) { +#' cutline <- tempfile(fileext = ".csv") +#' wkt <- "POLYGON ((142 -41, 149 -41, 146 -58, 142 -41))" +#' write.csv(data.frame(id = 1, WKT = wkt), cutline, row.names = FALSE) +#' X1c <- gdal_raster_data(dsn, target_res = .5, +#' options = c("-cutline",cutline, "-crop_to_cutline" )) +#' file.remove(cutline) +#' } #' #' ## warp whole grid to give res #' X2 <- gdal_raster_data(dsn, target_res = 25000, target_crs = "EPSG:32755") diff --git a/man/gdal_raster_data.Rd b/man/gdal_raster_data.Rd index 971738d4..b940cf8c 100644 --- a/man/gdal_raster_data.Rd +++ b/man/gdal_raster_data.Rd @@ -85,8 +85,15 @@ X <- gdal_raster_data(dsn) X1 <- gdal_raster_data(dsn, target_res = 1) ## add a cutline, and cut to it using gdal warp args -cutline <- system.file("extdata/cutline_sst.gpkg", package = "vapour") -X1c <- gdal_raster_data(dsn, target_res = .1, options = c("-cutline",cutline, "-crop_to_cutline" )) + +if (interactive()) { + cutline <- tempfile(fileext = ".csv") + wkt <- "POLYGON ((142 -41, 149 -41, 146 -58, 142 -41))" + write.csv(data.frame(id = 1, WKT = wkt), cutline, row.names = FALSE) + X1c <- gdal_raster_data(dsn, target_res = .5, + options = c("-cutline",cutline, "-crop_to_cutline" )) + file.remove(cutline) +} ## warp whole grid to give res X2 <- gdal_raster_data(dsn, target_res = 25000, target_crs = "EPSG:32755") diff --git a/tests/testthat/test-features.R b/tests/testthat/test-features.R index d0008c83..720777a3 100644 --- a/tests/testthat/test-features.R +++ b/tests/testthat/test-features.R @@ -81,7 +81,7 @@ test_that("empty geometry set as expected", { file.copy(efile, emptygeomfile) empty <- vapour_geom_summary(emptygeomfile) expect_true(!any(empty$valid_geometry)) - unlink(emptygeomfile) + file.remove(emptygeomfile) }) diff --git a/tools/winlibs.R b/tools/winlibs.R index 1a8e7ade..1d74a5e6 100644 --- a/tools/winlibs.R +++ b/tools/winlibs.R @@ -11,5 +11,5 @@ if(!file.exists(testfile)) { download.file(sprintf("https://github.com/rwinlib/gdal3/archive/v%s.zip", VERSION), "lib.zip", quiet = TRUE) dir.create("../windows", showWarnings = FALSE) unzip("lib.zip", exdir = "../windows") - unlink("lib.zip") + file.remove("lib.zip") } From 2c9edb69c3f53eba5d45fa906a9c0e257fd6b5c1 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 1 May 2023 22:03:03 +1000 Subject: [PATCH 100/102] ifdef version requirement for 64bit integer types --- R/00_warpgeneral.R | 5 ++-- inst/include/gdalreadwrite/gdalreadwrite.h | 35 +++++++++++++--------- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index afc03af1..905f230d 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -22,7 +22,6 @@ #' #' @examples #' dsn <- system.file("extdata/sst.tif", package = "vapour") -#' par(mfrow = c(2, 2)) #' ## do nothing, get native #' X <- gdal_raster_data(dsn) #' @@ -37,11 +36,11 @@ #' wkt <- "POLYGON ((142 -41, 149 -41, 146 -58, 142 -41))" #' write.csv(data.frame(id = 1, WKT = wkt), cutline, row.names = FALSE) #' X1c <- gdal_raster_data(dsn, target_res = .5, -#' options = c("-cutline",cutline, "-crop_to_cutline" )) +#' options = c("-cutline",cutline, "-crop_to_cutline", " )) #' file.remove(cutline) #' } #' -#' ## warp whole grid to give res +#' ## warp whole grid to given res #' X2 <- gdal_raster_data(dsn, target_res = 25000, target_crs = "EPSG:32755") #' #' ## specify exactly (as per vapour originally) diff --git a/inst/include/gdalreadwrite/gdalreadwrite.h b/inst/include/gdalreadwrite/gdalreadwrite.h index 97e2ca44..ac35fb1d 100644 --- a/inst/include/gdalreadwrite/gdalreadwrite.h +++ b/inst/include/gdalreadwrite/gdalreadwrite.h @@ -15,17 +15,14 @@ using namespace Rcpp; inline GDALDataType init_datatype(CharacterVector datatype) { - // Byte/Int8/Int16/UInt16/UInt32/Int32/UInt64/Int64/Float32/Float64/ - // CInt16/CInt32/CFloat32/CFloat64 - // + // Byte/Int8/Int16/UInt16/ + //UInt32/Int32/UInt64/Int64/ + // Float32/Float64/CInt16/CInt32/ + // CFloat32/CFloat64 + // Unknown if (datatype[0] == "Byte") { return GDT_Byte; } -#if (GDAL_VERSION_MAJOR >= 3 && GDAL_VERSION_MINOR >= 7) - if (datatype[0] == "Int8") { - return GDT_Int8; - } -#endif if (datatype[0] == "Int16") { return GDT_Int16; @@ -39,15 +36,10 @@ inline GDALDataType init_datatype(CharacterVector datatype) { if (datatype[0] == "Int32") { return GDT_Int32; } - if (datatype[0] == "UInt64") { - return GDT_UInt64; - } + if (datatype[0] == "Float32") { return GDT_Float32; } - if (datatype[0] == "Int64") { - return GDT_Int64; - } if (datatype[0] == "Float64") { return GDT_Float64; } @@ -63,6 +55,21 @@ inline GDALDataType init_datatype(CharacterVector datatype) { if (datatype[0] == "CFloat64") { return GDT_CFloat64; } +#if (GDAL_VERSION_MAJOR >= 3 && GDAL_VERSION_MINOR >= 7) + if (datatype[0] == "Int8") { + return GDT_Int8; + } +#endif + +#if (GDAL_VERSION_MAJOR >= 3 && GDAL_VERSION_MINOR >= 5) + + if (datatype[0] == "UInt64") { + return GDT_UInt64; + } + if (datatype[0] == "Int64") { + return GDT_Int64; + } +#endif // Rcpp::stop("datatype not suppported %s\n", datatype[0]); return GDT_Unknown; From 3d4a3bcee4ab1d0328f06c7c1e57a125385ff3d0 Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Mon, 1 May 2023 22:05:42 +1000 Subject: [PATCH 101/102] ifdef for 64bit integer types version requirements --- R/00_warpgeneral.R | 2 +- man/gdal_raster_data.Rd | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/R/00_warpgeneral.R b/R/00_warpgeneral.R index 905f230d..fe176000 100644 --- a/R/00_warpgeneral.R +++ b/R/00_warpgeneral.R @@ -36,7 +36,7 @@ #' wkt <- "POLYGON ((142 -41, 149 -41, 146 -58, 142 -41))" #' write.csv(data.frame(id = 1, WKT = wkt), cutline, row.names = FALSE) #' X1c <- gdal_raster_data(dsn, target_res = .5, -#' options = c("-cutline",cutline, "-crop_to_cutline", " )) +#' options = c("-cutline",cutline, "-crop_to_cutline")) #' file.remove(cutline) #' } #' diff --git a/man/gdal_raster_data.Rd b/man/gdal_raster_data.Rd index b940cf8c..8a00bd7b 100644 --- a/man/gdal_raster_data.Rd +++ b/man/gdal_raster_data.Rd @@ -76,7 +76,6 @@ tool, a convenience third function 'gdal_raster_image()' works especially for im } \examples{ dsn <- system.file("extdata/sst.tif", package = "vapour") -par(mfrow = c(2, 2)) ## do nothing, get native X <- gdal_raster_data(dsn) @@ -91,11 +90,11 @@ if (interactive()) { wkt <- "POLYGON ((142 -41, 149 -41, 146 -58, 142 -41))" write.csv(data.frame(id = 1, WKT = wkt), cutline, row.names = FALSE) X1c <- gdal_raster_data(dsn, target_res = .5, - options = c("-cutline",cutline, "-crop_to_cutline" )) + options = c("-cutline",cutline, "-crop_to_cutline")) file.remove(cutline) } -## warp whole grid to give res +## warp whole grid to given res X2 <- gdal_raster_data(dsn, target_res = 25000, target_crs = "EPSG:32755") ## specify exactly (as per vapour originally) From da3292fd059b115d5a100bf27db454ba1761603a Mon Sep 17 00:00:00 2001 From: Michael Sumner Date: Thu, 18 May 2023 14:31:32 +1000 Subject: [PATCH 102/102] fix #210 --- DESCRIPTION | 2 +- NEWS.md | 3 +++ R/vapour_vrt.R | 13 +++++++++++-- man/vapour_vrt.Rd | 3 +++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 876a5c26..a3b794a7 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: vapour Title: Access to the 'Geospatial Data Abstraction Library' ('GDAL') -Version: 0.9.5.9002 +Version: 0.9.5.9003 Authors@R: c(person("Michael", "Sumner", email = "mdsumner@gmail.com", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-2471-7511")), person("Simon", "Wotherspoon", role = "ctb", comment = "RasterIO configuration for resampling options"), person("Mark", "Padgham", role = "ctb", comment = "helped get started :)"), diff --git a/NEWS.md b/NEWS.md index 3a3edc61..17ee7673 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # vapour dev +* `vapour_vrt()` called with geolocation arrays now scrubs the geotransform from the output (which ensures the + warper uses the arrays without setting '-geoloc'). + * `vapour_create()` gets creation options, data type options, and driver options. * Fixed failure to close file created by `vapour_create()` fixes #202. diff --git a/R/vapour_vrt.R b/R/vapour_vrt.R index 89a42287..4d023b6b 100644 --- a/R/vapour_vrt.R +++ b/R/vapour_vrt.R @@ -19,7 +19,11 @@ #' #' `vapour_vrt()` is vectorized, it will return multiple VRT strings for multiple inputs in #' a "length > 1" character vector. These are all independent, this is different to the function -#' `vapour_warp_raster()` where multiple inputs are merged (possibly by sequential overlapping). +#' `vapour_warp_raster()` where multiple inputs are merged (possibly by sequential overlapping). +#' +#' If `geolocation` is set the '' element is forcibly removed from the vrt output, in order +#' to avoid https://github.com/hypertidy/vapour/issues/210 (there might be a better fix). +#' #' @section Rationale: #' #' For a raster, the basic essentials we can specify or modify for a source are @@ -132,7 +136,12 @@ vapour_vrt <- function(x, extent = NULL, projection = NULL, sds = 1L, bands = N overview <- as.integer(overview[1]) if (is.na(overview)) overview <- -1L - raster_vrt_cpp(x, extent, projection[1L], sds, bands, geolocation, nomd, overview) + out <- raster_vrt_cpp(x, extent, projection[1L], sds, bands, geolocation, nomd, overview) + ## scrub any transform, because of #210 + if (nzchar(geolocation[1L])) { + out <- gsub("", "", out) + } + out } diff --git a/man/vapour_vrt.Rd b/man/vapour_vrt.Rd index 295d1386..6d13996d 100644 --- a/man/vapour_vrt.Rd +++ b/man/vapour_vrt.Rd @@ -63,6 +63,9 @@ in any order and contain repetitions. \code{vapour_vrt()} is vectorized, it will return multiple VRT strings for multiple inputs in a "length > 1" character vector. These are all independent, this is different to the function \code{vapour_warp_raster()} where multiple inputs are merged (possibly by sequential overlapping). + +If \code{geolocation} is set the '\if{html}{\out{}}' element is forcibly removed from the vrt output, in order +to avoid https://github.com/hypertidy/vapour/issues/210 (there might be a better fix). } \section{Rationale}{