@crossbind/port-gdal-wasm 2.0.0-beta.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (667) hide show
  1. package/LICENSE +467 -0
  2. package/README.md +12 -0
  3. package/assets/gdal_empty_file.cpp +0 -0
  4. package/crossbind.build.js +23 -0
  5. package/crossbind.config.js +35 -0
  6. package/dist/prebuilt/CMakeLists.txt +57 -0
  7. package/dist/prebuilt/wasm-wasm32-mt-release/crossbind-emccflags.fingerprint +1 -0
  8. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_atomic_ops.h +89 -0
  9. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_auto_close.h +72 -0
  10. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_compressor.h +112 -0
  11. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_config.h +203 -0
  12. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_config_extras.h +33 -0
  13. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_conv.h +528 -0
  14. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_csv.h +70 -0
  15. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_error.h +505 -0
  16. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_float.h +730 -0
  17. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_hash_set.h +82 -0
  18. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_http.h +317 -0
  19. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_json.h +398 -0
  20. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_list.h +58 -0
  21. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_minixml.h +210 -0
  22. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_multiproc.h +241 -0
  23. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_port.h +1266 -0
  24. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_progress.h +48 -0
  25. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_quad_tree.h +104 -0
  26. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_spawn.h +59 -0
  27. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_string.h +985 -0
  28. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_time.h +28 -0
  29. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_virtualmem.h +347 -0
  30. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_vsi.h +885 -0
  31. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_vsi_error.h +91 -0
  32. package/dist/prebuilt/wasm-wasm32-mt-release/include/cpl_vsi_virtual.h +838 -0
  33. package/dist/prebuilt/wasm-wasm32-mt-release/include/cplkeywordparser.h +60 -0
  34. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal.h +3013 -0
  35. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_adbc.h +46 -0
  36. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_alg.h +753 -0
  37. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_alg_priv.h +444 -0
  38. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_asyncreader.h +177 -0
  39. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_colortable.h +85 -0
  40. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_computedrasterband.h +334 -0
  41. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_cpp_functions.h +414 -0
  42. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_csv.h +24 -0
  43. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_dataset.h +959 -0
  44. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_defaultoverviews.h +133 -0
  45. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_driver.h +348 -0
  46. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_drivermanager.h +115 -0
  47. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_frmts.h +230 -0
  48. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_fwd.h +219 -0
  49. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_gcp.h +140 -0
  50. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_geotransform.h +251 -0
  51. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_majorobject.h +102 -0
  52. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_maskbands.h +170 -0
  53. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_mdreader.h +240 -0
  54. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_mem.h +32 -0
  55. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_minmax_element.hpp +1489 -0
  56. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_multidim.h +1356 -0
  57. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_multidim_cpp.h +33 -0
  58. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_multidomainmetadata.h +91 -0
  59. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_openinfo.h +94 -0
  60. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_pam.h +400 -0
  61. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_pam_multidim.h +114 -0
  62. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_priv.h +69 -0
  63. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_priv_templates.hpp +1516 -0
  64. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_proxy.h +475 -0
  65. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_raster_cpp.h +46 -0
  66. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_rasterband.h +779 -0
  67. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_rasterblock.h +184 -0
  68. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_rat.h +589 -0
  69. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_relationship.h +380 -0
  70. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_simplesurf.h +579 -0
  71. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_thread_pool.h +42 -0
  72. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_typetraits.h +517 -0
  73. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_utils.h +350 -0
  74. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_vector_cpp.h +31 -0
  75. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_version.h +37 -0
  76. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdal_vrt.h +88 -0
  77. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalalgorithm.h +19 -0
  78. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalalgorithm_c.h +292 -0
  79. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalalgorithm_cpp.h +3398 -0
  80. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalcachedpixelaccessor.h +446 -0
  81. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalgeorefpamdataset.h +72 -0
  82. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalgrid.h +102 -0
  83. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalgrid_priv.h +67 -0
  84. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdaljp2abstractdataset.h +60 -0
  85. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdaljp2metadata.h +236 -0
  86. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalpansharpen.h +260 -0
  87. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalsubdatasetinfo.h +104 -0
  88. package/dist/prebuilt/wasm-wasm32-mt-release/include/gdalwarper.h +644 -0
  89. package/dist/prebuilt/wasm-wasm32-mt-release/include/geoheif.h +58 -0
  90. package/dist/prebuilt/wasm-wasm32-mt-release/include/gnm.h +781 -0
  91. package/dist/prebuilt/wasm-wasm32-mt-release/include/gnm_api.h +99 -0
  92. package/dist/prebuilt/wasm-wasm32-mt-release/include/gnmgraph.h +257 -0
  93. package/dist/prebuilt/wasm-wasm32-mt-release/include/memdataset.h +385 -0
  94. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_api.h +948 -0
  95. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_core.h +1319 -0
  96. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_feature.h +2136 -0
  97. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_featurestyle.h +869 -0
  98. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_geocoding.h +45 -0
  99. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_geomcoordinateprecision.h +85 -0
  100. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_geometry.h +4382 -0
  101. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_p.h +330 -0
  102. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_recordbatch.h +128 -0
  103. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_refcountedptr.h +198 -0
  104. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_spatialref.h +1122 -0
  105. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_srs_api.h +1073 -0
  106. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogr_swq.h +534 -0
  107. package/dist/prebuilt/wasm-wasm32-mt-release/include/ogrsf_frmts.h +803 -0
  108. package/dist/prebuilt/wasm-wasm32-mt-release/include/rawdataset.h +268 -0
  109. package/dist/prebuilt/wasm-wasm32-mt-release/include/vrtdataset.h +2595 -0
  110. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/3.20/FindLibLZMA.cmake +126 -0
  111. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/3.20/FindPostgreSQL.cmake +312 -0
  112. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/DefineFindPackage2.cmake +164 -0
  113. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
  114. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDAL-targets.cmake +108 -0
  115. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDALConfig.cmake +35 -0
  116. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GDALConfigVersion.cmake +65 -0
  117. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/GdalFindModulePath.cmake +13 -0
  118. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindBRUNSLI.cmake +74 -0
  119. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindBlosc.cmake +74 -0
  120. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindCURL.cmake +235 -0
  121. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindCryptoPP.cmake +91 -0
  122. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindDeflate.cmake +113 -0
  123. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindECW.cmake +172 -0
  124. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindEXPAT.cmake +156 -0
  125. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindExprTk.cmake +93 -0
  126. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindFYBA.cmake +38 -0
  127. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindFileGDB.cmake +93 -0
  128. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindFreeXL.cmake +67 -0
  129. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindGEOS.cmake +49 -0
  130. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindGIF.cmake +97 -0
  131. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindGeoTIFF.cmake +104 -0
  132. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindHDF4.cmake +133 -0
  133. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindHDFS.cmake +54 -0
  134. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindIDB.cmake +45 -0
  135. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindIconv.cmake +145 -0
  136. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindJSONC.cmake +48 -0
  137. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindKDU.cmake +105 -0
  138. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindLERC.cmake +46 -0
  139. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindLZ4.cmake +130 -0
  140. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindLibKML.cmake +134 -0
  141. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMONGOCXX.cmake +56 -0
  142. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMRSID.cmake +66 -0
  143. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMSSQL_NCLI.cmake +86 -0
  144. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMSSQL_ODBC.cmake +113 -0
  145. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindMySQL.cmake +83 -0
  146. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindNetCDF.cmake +209 -0
  147. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindODBC.cmake +259 -0
  148. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindODBCCPP.cmake +72 -0
  149. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOpenCAD.cmake +97 -0
  150. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOpenEXR.cmake +125 -0
  151. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOpenJPEG.cmake +124 -0
  152. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindOracle.cmake +230 -0
  153. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPCRE.cmake +28 -0
  154. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPCRE2.cmake +27 -0
  155. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPROJ.cmake +91 -0
  156. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPodofo.cmake +94 -0
  157. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindPoppler.cmake +182 -0
  158. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindQHULL.cmake +44 -0
  159. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindRASTERLITE2.cmake +85 -0
  160. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSFCGAL.cmake +87 -0
  161. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSPATIALITE.cmake +74 -0
  162. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSQLite3.cmake +208 -0
  163. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindShapelib.cmake +69 -0
  164. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindSpatialindex.cmake +18 -0
  165. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindTEIGHA.cmake +242 -0
  166. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindWebP.cmake +38 -0
  167. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/FindZSTD.cmake +95 -0
  168. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/packages/Findmuparser.cmake +53 -0
  169. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/DotnetImports.props.in +7 -0
  170. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindCSharp.cmake +72 -0
  171. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindDotnet.cmake +496 -0
  172. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindInt128.cmake +65 -0
  173. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/FindMono.cmake +163 -0
  174. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/GetGitHeadDate.cmake +33 -0
  175. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake +181 -0
  176. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake.in +50 -0
  177. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/OSXInstallDirs.cmake +214 -0
  178. package/dist/prebuilt/wasm-wasm32-mt-release/lib/cmake/gdal/thirdparty/SystemSummary.cmake +89 -0
  179. package/dist/prebuilt/wasm-wasm32-mt-release/lib/gdalplugins/drivers.ini +285 -0
  180. package/dist/prebuilt/wasm-wasm32-mt-release/lib/libgdal.a +0 -0
  181. package/dist/prebuilt/wasm-wasm32-mt-release/lib/pkgconfig/gdal.pc +17 -0
  182. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/GDALLogoBW.svg +138 -0
  183. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/GDALLogoColor.svg +126 -0
  184. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/GDALLogoGS.svg +126 -0
  185. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/LICENSE.TXT +467 -0
  186. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/MM_m_idofic.csv +320 -0
  187. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/cubewerx_extra.wkt +48 -0
  188. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/default.rsc +0 -0
  189. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ecw_cs.wkt +1453 -0
  190. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/eedaconf.json +23 -0
  191. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/epsg.wkt +1 -0
  192. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/esri_StatePlane_extra.wkt +631 -0
  193. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdal_algorithm.schema.json +240 -0
  194. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalg.schema.json +36 -0
  195. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalicon.png +0 -0
  196. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalinfo_output.schema.json +390 -0
  197. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalmdiminfo_output.schema.json +393 -0
  198. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdaltileindex.xsd +264 -0
  199. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gdalvrt.xsd +948 -0
  200. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gfs.xsd +246 -0
  201. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gml_registry.xml +117 -0
  202. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gml_registry.xsd +66 -0
  203. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_center.csv +251 -0
  204. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_process.csv +102 -0
  205. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_subcenter.csv +63 -0
  206. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  207. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  208. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  209. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  210. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  211. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  212. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_17.csv +261 -0
  213. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  214. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  215. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  216. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  217. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  218. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  219. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  220. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_22.csv +261 -0
  221. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  222. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  223. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  224. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  225. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  226. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  227. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  228. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  229. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  230. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  231. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  232. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  233. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  234. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  235. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  236. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  237. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  238. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_20_3.csv +261 -0
  239. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  240. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  241. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  242. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  243. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  244. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_2_7.csv +261 -0
  245. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  246. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  247. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_2.csv +243 -0
  248. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_3.csv +261 -0
  249. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_4.csv +261 -0
  250. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_5.csv +261 -0
  251. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_3_6.csv +261 -0
  252. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  253. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  254. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  255. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  256. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  257. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  258. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  259. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  260. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  261. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  262. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  263. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  264. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  265. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  266. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  267. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  268. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  269. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_4_5.csv +261 -0
  270. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/grib2_table_versions.csv +3 -0
  271. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gt_datum.csv +229 -0
  272. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/gt_ellips.csv +24 -0
  273. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/header.dxf +1138 -0
  274. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  275. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  276. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  277. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  278. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  279. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  280. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  281. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_BldA.gfs +54 -0
  282. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_BldL.gfs +54 -0
  283. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  284. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  285. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  286. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  287. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  288. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_GCP.gfs +94 -0
  289. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  290. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  291. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  292. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  293. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  294. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  295. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  296. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  297. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  298. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  299. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  300. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  301. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WA.gfs +54 -0
  302. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WL.gfs +54 -0
  303. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  304. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  305. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/leaflet_template.html +102 -0
  306. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/nitf_spec.xml +3508 -0
  307. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/nitf_spec.xsd +178 -0
  308. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ogr_fields_override.schema.json +278 -0
  309. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ogrinfo_output.schema.json +532 -0
  310. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ogrvrt.xsd +526 -0
  311. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/osmconf.ini +134 -0
  312. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ozi_datum.csv +131 -0
  313. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ozi_ellips.csv +35 -0
  314. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/pci_datum.txt +530 -0
  315. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/pci_ellips.txt +129 -0
  316. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/pdfcomposition.xsd +703 -0
  317. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/plscenesconf.json +1985 -0
  318. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  319. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  320. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  321. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/ruian_vf_v1.gfs +2126 -0
  322. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57agencies.csv +249 -0
  323. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57attributes.csv +484 -0
  324. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57expectedinput.csv +1008 -0
  325. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/s57objectclasses.csv +287 -0
  326. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/seed_2d.dgn +0 -0
  327. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/seed_3d.dgn +0 -0
  328. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/stateplane.csv +259 -0
  329. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/template_tiles.mapml +26 -0
  330. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  331. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_MapML_APSTILE.json +268 -0
  332. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_MapML_CBMTILE.json +346 -0
  333. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/tms_NZTM2000.json +243 -0
  334. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/trailer.dxf +434 -0
  335. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/vdv452.xml +349 -0
  336. package/dist/prebuilt/wasm-wasm32-mt-release/share/gdal/vdv452.xsd +45 -0
  337. package/dist/prebuilt/wasm-wasm32-st-release/crossbind-emccflags.fingerprint +1 -0
  338. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_atomic_ops.h +89 -0
  339. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_auto_close.h +72 -0
  340. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_compressor.h +112 -0
  341. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_config.h +203 -0
  342. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_config_extras.h +33 -0
  343. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_conv.h +528 -0
  344. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_csv.h +70 -0
  345. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_error.h +505 -0
  346. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_float.h +730 -0
  347. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_hash_set.h +82 -0
  348. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_http.h +317 -0
  349. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_json.h +398 -0
  350. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_list.h +58 -0
  351. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_minixml.h +210 -0
  352. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_multiproc.h +241 -0
  353. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_port.h +1266 -0
  354. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_progress.h +48 -0
  355. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_quad_tree.h +104 -0
  356. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_spawn.h +59 -0
  357. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_string.h +985 -0
  358. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_time.h +28 -0
  359. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_virtualmem.h +347 -0
  360. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_vsi.h +885 -0
  361. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_vsi_error.h +91 -0
  362. package/dist/prebuilt/wasm-wasm32-st-release/include/cpl_vsi_virtual.h +838 -0
  363. package/dist/prebuilt/wasm-wasm32-st-release/include/cplkeywordparser.h +60 -0
  364. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal.h +3013 -0
  365. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_adbc.h +46 -0
  366. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_alg.h +753 -0
  367. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_alg_priv.h +444 -0
  368. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_asyncreader.h +177 -0
  369. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_colortable.h +85 -0
  370. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_computedrasterband.h +334 -0
  371. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_cpp_functions.h +414 -0
  372. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_csv.h +24 -0
  373. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_dataset.h +959 -0
  374. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_defaultoverviews.h +133 -0
  375. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_driver.h +348 -0
  376. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_drivermanager.h +115 -0
  377. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_frmts.h +230 -0
  378. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_fwd.h +219 -0
  379. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_gcp.h +140 -0
  380. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_geotransform.h +251 -0
  381. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_majorobject.h +102 -0
  382. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_maskbands.h +170 -0
  383. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_mdreader.h +240 -0
  384. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_mem.h +32 -0
  385. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_minmax_element.hpp +1489 -0
  386. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_multidim.h +1356 -0
  387. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_multidim_cpp.h +33 -0
  388. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_multidomainmetadata.h +91 -0
  389. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_openinfo.h +94 -0
  390. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_pam.h +400 -0
  391. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_pam_multidim.h +114 -0
  392. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_priv.h +69 -0
  393. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_priv_templates.hpp +1516 -0
  394. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_proxy.h +475 -0
  395. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_raster_cpp.h +46 -0
  396. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_rasterband.h +779 -0
  397. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_rasterblock.h +184 -0
  398. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_rat.h +589 -0
  399. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_relationship.h +380 -0
  400. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_simplesurf.h +579 -0
  401. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_thread_pool.h +42 -0
  402. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_typetraits.h +517 -0
  403. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_utils.h +350 -0
  404. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_vector_cpp.h +31 -0
  405. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_version.h +37 -0
  406. package/dist/prebuilt/wasm-wasm32-st-release/include/gdal_vrt.h +88 -0
  407. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalalgorithm.h +19 -0
  408. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalalgorithm_c.h +292 -0
  409. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalalgorithm_cpp.h +3398 -0
  410. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalcachedpixelaccessor.h +446 -0
  411. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalgeorefpamdataset.h +72 -0
  412. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalgrid.h +102 -0
  413. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalgrid_priv.h +67 -0
  414. package/dist/prebuilt/wasm-wasm32-st-release/include/gdaljp2abstractdataset.h +60 -0
  415. package/dist/prebuilt/wasm-wasm32-st-release/include/gdaljp2metadata.h +236 -0
  416. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalpansharpen.h +260 -0
  417. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalsubdatasetinfo.h +104 -0
  418. package/dist/prebuilt/wasm-wasm32-st-release/include/gdalwarper.h +644 -0
  419. package/dist/prebuilt/wasm-wasm32-st-release/include/geoheif.h +58 -0
  420. package/dist/prebuilt/wasm-wasm32-st-release/include/gnm.h +781 -0
  421. package/dist/prebuilt/wasm-wasm32-st-release/include/gnm_api.h +99 -0
  422. package/dist/prebuilt/wasm-wasm32-st-release/include/gnmgraph.h +257 -0
  423. package/dist/prebuilt/wasm-wasm32-st-release/include/memdataset.h +385 -0
  424. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_api.h +948 -0
  425. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_core.h +1319 -0
  426. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_feature.h +2136 -0
  427. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_featurestyle.h +869 -0
  428. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_geocoding.h +45 -0
  429. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_geomcoordinateprecision.h +85 -0
  430. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_geometry.h +4382 -0
  431. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_p.h +330 -0
  432. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_recordbatch.h +128 -0
  433. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_refcountedptr.h +198 -0
  434. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_spatialref.h +1122 -0
  435. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_srs_api.h +1073 -0
  436. package/dist/prebuilt/wasm-wasm32-st-release/include/ogr_swq.h +534 -0
  437. package/dist/prebuilt/wasm-wasm32-st-release/include/ogrsf_frmts.h +803 -0
  438. package/dist/prebuilt/wasm-wasm32-st-release/include/rawdataset.h +268 -0
  439. package/dist/prebuilt/wasm-wasm32-st-release/include/vrtdataset.h +2595 -0
  440. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/3.20/FindLibLZMA.cmake +126 -0
  441. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/3.20/FindPostgreSQL.cmake +312 -0
  442. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/DefineFindPackage2.cmake +164 -0
  443. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDAL-targets-release.cmake +19 -0
  444. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDAL-targets.cmake +108 -0
  445. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDALConfig.cmake +35 -0
  446. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GDALConfigVersion.cmake +65 -0
  447. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/GdalFindModulePath.cmake +13 -0
  448. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindBRUNSLI.cmake +74 -0
  449. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindBlosc.cmake +74 -0
  450. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindCURL.cmake +235 -0
  451. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindCryptoPP.cmake +91 -0
  452. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindDeflate.cmake +113 -0
  453. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindECW.cmake +172 -0
  454. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindEXPAT.cmake +156 -0
  455. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindExprTk.cmake +93 -0
  456. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindFYBA.cmake +38 -0
  457. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindFileGDB.cmake +93 -0
  458. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindFreeXL.cmake +67 -0
  459. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindGEOS.cmake +49 -0
  460. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindGIF.cmake +97 -0
  461. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindGeoTIFF.cmake +104 -0
  462. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindHDF4.cmake +133 -0
  463. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindHDFS.cmake +54 -0
  464. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindIDB.cmake +45 -0
  465. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindIconv.cmake +145 -0
  466. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindJSONC.cmake +48 -0
  467. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindKDU.cmake +105 -0
  468. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindLERC.cmake +46 -0
  469. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindLZ4.cmake +130 -0
  470. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindLibKML.cmake +134 -0
  471. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMONGOCXX.cmake +56 -0
  472. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMRSID.cmake +66 -0
  473. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMSSQL_NCLI.cmake +86 -0
  474. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMSSQL_ODBC.cmake +113 -0
  475. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindMySQL.cmake +83 -0
  476. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindNetCDF.cmake +209 -0
  477. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindODBC.cmake +259 -0
  478. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindODBCCPP.cmake +72 -0
  479. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOpenCAD.cmake +97 -0
  480. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOpenEXR.cmake +125 -0
  481. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOpenJPEG.cmake +124 -0
  482. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindOracle.cmake +230 -0
  483. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPCRE.cmake +28 -0
  484. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPCRE2.cmake +27 -0
  485. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPROJ.cmake +91 -0
  486. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPodofo.cmake +94 -0
  487. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindPoppler.cmake +182 -0
  488. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindQHULL.cmake +44 -0
  489. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindRASTERLITE2.cmake +85 -0
  490. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSFCGAL.cmake +87 -0
  491. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSPATIALITE.cmake +74 -0
  492. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSQLite3.cmake +208 -0
  493. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindShapelib.cmake +69 -0
  494. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindSpatialindex.cmake +18 -0
  495. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindTEIGHA.cmake +242 -0
  496. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindWebP.cmake +38 -0
  497. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/FindZSTD.cmake +95 -0
  498. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/packages/Findmuparser.cmake +53 -0
  499. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/DotnetImports.props.in +7 -0
  500. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindCSharp.cmake +72 -0
  501. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindDotnet.cmake +496 -0
  502. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindInt128.cmake +65 -0
  503. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/FindMono.cmake +163 -0
  504. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/GetGitHeadDate.cmake +33 -0
  505. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake +181 -0
  506. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/GetGitRevisionDescription.cmake.in +50 -0
  507. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/OSXInstallDirs.cmake +214 -0
  508. package/dist/prebuilt/wasm-wasm32-st-release/lib/cmake/gdal/thirdparty/SystemSummary.cmake +89 -0
  509. package/dist/prebuilt/wasm-wasm32-st-release/lib/gdalplugins/drivers.ini +285 -0
  510. package/dist/prebuilt/wasm-wasm32-st-release/lib/libgdal.a +0 -0
  511. package/dist/prebuilt/wasm-wasm32-st-release/lib/pkgconfig/gdal.pc +17 -0
  512. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/GDALLogoBW.svg +138 -0
  513. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/GDALLogoColor.svg +126 -0
  514. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/GDALLogoGS.svg +126 -0
  515. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/LICENSE.TXT +467 -0
  516. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/MM_m_idofic.csv +320 -0
  517. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/cubewerx_extra.wkt +48 -0
  518. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/default.rsc +0 -0
  519. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ecw_cs.wkt +1453 -0
  520. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/eedaconf.json +23 -0
  521. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/epsg.wkt +1 -0
  522. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/esri_StatePlane_extra.wkt +631 -0
  523. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdal_algorithm.schema.json +240 -0
  524. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalg.schema.json +36 -0
  525. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalicon.png +0 -0
  526. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalinfo_output.schema.json +390 -0
  527. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalmdiminfo_output.schema.json +393 -0
  528. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdaltileindex.xsd +264 -0
  529. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gdalvrt.xsd +948 -0
  530. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gfs.xsd +246 -0
  531. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gml_registry.xml +117 -0
  532. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gml_registry.xsd +66 -0
  533. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_center.csv +251 -0
  534. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_process.csv +102 -0
  535. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_subcenter.csv +63 -0
  536. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_0.csv +261 -0
  537. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_1.csv +261 -0
  538. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_13.csv +261 -0
  539. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_14.csv +261 -0
  540. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_15.csv +261 -0
  541. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_16.csv +261 -0
  542. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_17.csv +261 -0
  543. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_18.csv +261 -0
  544. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_19.csv +261 -0
  545. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_190.csv +261 -0
  546. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_191.csv +261 -0
  547. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_2.csv +261 -0
  548. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_20.csv +261 -0
  549. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_21.csv +261 -0
  550. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_22.csv +261 -0
  551. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_3.csv +261 -0
  552. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_4.csv +261 -0
  553. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_5.csv +261 -0
  554. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_6.csv +261 -0
  555. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_0_7.csv +261 -0
  556. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_0.csv +261 -0
  557. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_1.csv +261 -0
  558. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_191.csv +261 -0
  559. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_2.csv +261 -0
  560. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_3.csv +261 -0
  561. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_10_4.csv +261 -0
  562. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_1_0.csv +261 -0
  563. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_1_1.csv +261 -0
  564. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_1_2.csv +261 -0
  565. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_0.csv +261 -0
  566. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_1.csv +261 -0
  567. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_2.csv +261 -0
  568. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_20_3.csv +261 -0
  569. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_0.csv +261 -0
  570. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_3.csv +261 -0
  571. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_4.csv +261 -0
  572. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_5.csv +261 -0
  573. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_6.csv +261 -0
  574. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_2_7.csv +261 -0
  575. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_0.csv +261 -0
  576. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_1.csv +261 -0
  577. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_2.csv +243 -0
  578. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_3.csv +261 -0
  579. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_4.csv +261 -0
  580. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_5.csv +261 -0
  581. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_3_6.csv +261 -0
  582. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_0.csv +261 -0
  583. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_1.csv +261 -0
  584. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_10.csv +261 -0
  585. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_2.csv +261 -0
  586. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_3.csv +261 -0
  587. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_4.csv +261 -0
  588. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_5.csv +261 -0
  589. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_6.csv +261 -0
  590. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_7.csv +261 -0
  591. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_8.csv +261 -0
  592. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_4_9.csv +261 -0
  593. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_Canada.csv +5 -0
  594. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_HPC.csv +2 -0
  595. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_MRMS.csv +175 -0
  596. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_NCEP.csv +401 -0
  597. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_NDFD.csv +38 -0
  598. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_2_local_index.csv +7 -0
  599. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_4_5.csv +261 -0
  600. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/grib2_table_versions.csv +3 -0
  601. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gt_datum.csv +229 -0
  602. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/gt_ellips.csv +24 -0
  603. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/header.dxf +1138 -0
  604. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_BasicPropertyUnit.gfs +57 -0
  605. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_CadastralBoundary.gfs +60 -0
  606. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_CadastralParcel.gfs +81 -0
  607. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/inspire_cp_CadastralZoning.gfs +161 -0
  608. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_AdmArea.gfs +59 -0
  609. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_AdmBdry.gfs +49 -0
  610. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_AdmPt.gfs +59 -0
  611. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_BldA.gfs +54 -0
  612. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_BldL.gfs +54 -0
  613. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_Cntr.gfs +54 -0
  614. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_CommBdry.gfs +49 -0
  615. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_CommPt.gfs +59 -0
  616. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_Cstline.gfs +54 -0
  617. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_ElevPt.gfs +54 -0
  618. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_GCP.gfs +94 -0
  619. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_LeveeEdge.gfs +49 -0
  620. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RailCL.gfs +54 -0
  621. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdASL.gfs +44 -0
  622. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdArea.gfs +54 -0
  623. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdCompt.gfs +59 -0
  624. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdEdg.gfs +59 -0
  625. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdMgtBdry.gfs +49 -0
  626. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RdSgmtA.gfs +59 -0
  627. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_RvrMgtBdry.gfs +49 -0
  628. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_SBAPt.gfs +49 -0
  629. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_SBArea.gfs +54 -0
  630. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_SBBdry.gfs +44 -0
  631. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WA.gfs +54 -0
  632. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WL.gfs +54 -0
  633. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WStrA.gfs +54 -0
  634. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/jpfgdgml_WStrL.gfs +54 -0
  635. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/leaflet_template.html +102 -0
  636. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/nitf_spec.xml +3508 -0
  637. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/nitf_spec.xsd +178 -0
  638. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ogr_fields_override.schema.json +278 -0
  639. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ogrinfo_output.schema.json +532 -0
  640. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ogrvrt.xsd +526 -0
  641. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/osmconf.ini +134 -0
  642. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ozi_datum.csv +131 -0
  643. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ozi_ellips.csv +35 -0
  644. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/pci_datum.txt +530 -0
  645. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/pci_ellips.txt +129 -0
  646. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/pdfcomposition.xsd +703 -0
  647. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/plscenesconf.json +1985 -0
  648. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_ob_v1.gfs +1455 -0
  649. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_st_uvoh_v1.gfs +86 -0
  650. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_st_v1.gfs +1489 -0
  651. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/ruian_vf_v1.gfs +2126 -0
  652. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57agencies.csv +249 -0
  653. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57attributes.csv +484 -0
  654. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57expectedinput.csv +1008 -0
  655. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/s57objectclasses.csv +287 -0
  656. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/seed_2d.dgn +0 -0
  657. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/seed_3d.dgn +0 -0
  658. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/stateplane.csv +259 -0
  659. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/template_tiles.mapml +26 -0
  660. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_LINZAntarticaMapTileGrid.json +190 -0
  661. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_MapML_APSTILE.json +268 -0
  662. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_MapML_CBMTILE.json +346 -0
  663. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/tms_NZTM2000.json +243 -0
  664. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/trailer.dxf +434 -0
  665. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/vdv452.xml +349 -0
  666. package/dist/prebuilt/wasm-wasm32-st-release/share/gdal/vdv452.xsd +45 -0
  667. package/package.json +49 -0
@@ -0,0 +1,1489 @@
1
+ /******************************************************************************
2
+ * Project: GDAL Core
3
+ * Purpose: Utility functions to find minimum and maximum values in a buffer
4
+ * Author: Even Rouault, <even dot rouault at spatialys.com>
5
+ *
6
+ ******************************************************************************
7
+ * Copyright (c) 2024, Even Rouault <even dot rouault at spatialys.com>
8
+ *
9
+ * SPDX-License-Identifier: MIT
10
+ ****************************************************************************/
11
+
12
+ #ifndef GDAL_MINMAX_ELEMENT_INCLUDED
13
+ #define GDAL_MINMAX_ELEMENT_INCLUDED
14
+
15
+ // NOTE: This header requires C++17
16
+
17
+ // This file may be vendored by other applications than GDAL
18
+ // WARNING: if modifying this file, please also update the upstream GDAL version
19
+ // at https://github.com/OSGeo/gdal/blob/master/gcore/gdal_minmax_element.hpp
20
+
21
+ #include <algorithm>
22
+ #include <cassert>
23
+ #include <cmath>
24
+ #include <cstdint>
25
+ #include <limits>
26
+ #include <type_traits>
27
+ #include <utility>
28
+
29
+ #include "gdal.h"
30
+
31
+ // Just to please cppcheck
32
+ #ifndef GDAL_COMPUTE_VERSION
33
+ #define GDAL_COMPUTE_VERSION(maj, min, rev) \
34
+ ((maj) * 1000000 + (min) * 10000 + (rev) * 100)
35
+ #endif
36
+
37
+ #ifdef GDAL_COMPILATION
38
+ #include "cpl_float.h"
39
+ #define GDAL_MINMAXELT_NS gdal
40
+ #elif !defined(GDAL_MINMAXELT_NS)
41
+ #error "Please define the GDAL_MINMAXELT_NS macro to define the namespace"
42
+ #elif GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
43
+ #include "cpl_float.h"
44
+ #endif
45
+
46
+ #ifdef USE_NEON_OPTIMIZATIONS
47
+ #include "include_sse2neon.h"
48
+ #define GDAL_MINMAX_ELEMENT_USE_SSE2
49
+ #else
50
+ #if defined(__x86_64) || defined(_M_X64)
51
+ #define GDAL_MINMAX_ELEMENT_USE_SSE2
52
+ #endif
53
+ #ifdef GDAL_MINMAX_ELEMENT_USE_SSE2
54
+ // SSE2 header
55
+ #include <emmintrin.h>
56
+ #if defined(__SSE4_1__) || defined(__AVX__)
57
+ #include <smmintrin.h>
58
+ #endif
59
+ #endif
60
+ #endif
61
+
62
+ #include "gdal_priv_templates.hpp"
63
+
64
+ namespace GDAL_MINMAXELT_NS
65
+ {
66
+ namespace detail
67
+ {
68
+
69
+ template <class T> struct is_floating_point
70
+ {
71
+ static constexpr bool value = std::is_floating_point_v<T>
72
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
73
+ || std::is_same_v<T, GFloat16>
74
+ #endif
75
+ ;
76
+ };
77
+
78
+ template <class T>
79
+ constexpr bool is_floating_point_v = is_floating_point<T>::value;
80
+
81
+ /************************************************************************/
82
+ /* compScalar() */
83
+ /************************************************************************/
84
+
85
+ template <class T, bool IS_MAX> inline static bool compScalar(T x, T y)
86
+ {
87
+ if constexpr (IS_MAX)
88
+ return x > y;
89
+ else
90
+ return x < y;
91
+ }
92
+
93
+ template <typename T> inline static bool IsNan(T x)
94
+ {
95
+ // We need to write `using std::isnan` instead of directly using
96
+ // `std::isnan` because `std::isnan` only supports the types
97
+ // `float` and `double`. The `isnan` for `cpl::Float16` is found in the
98
+ // `cpl` namespace via argument-dependent lookup
99
+ // <https://en.cppreference.com/w/cpp/language/adl>.
100
+ using std::isnan;
101
+ return isnan(x);
102
+ }
103
+
104
+ template <class T> inline static bool compEqual(T x, T y)
105
+ {
106
+ return x == y;
107
+ }
108
+
109
+ // On Intel/Neon, we do comparisons on uint16_t instead of casting to float for
110
+ // faster execution.
111
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0) && \
112
+ defined(GDAL_MINMAX_ELEMENT_USE_SSE2)
113
+ template <> bool IsNan<GFloat16>(GFloat16 x)
114
+ {
115
+ uint16_t iX;
116
+ memcpy(&iX, &x, sizeof(x));
117
+ // Check that the 5 bits of the exponent are set and the mantissa is not zero.
118
+ return (iX & 0x7fff) > 0x7c00;
119
+ }
120
+
121
+ template <> bool compEqual<GFloat16>(GFloat16 x, GFloat16 y)
122
+ {
123
+ uint16_t iX, iY;
124
+ memcpy(&iX, &x, sizeof(x));
125
+ memcpy(&iY, &y, sizeof(y));
126
+ // Given our usage where y cannot be NaN we can skip the IsNan tests
127
+ assert(!IsNan(y));
128
+ return (iX == iY ||
129
+ // Also check +0 == -0
130
+ ((iX | iY) == (1 << 15)));
131
+ }
132
+
133
+ template <> bool compScalar<GFloat16, true>(GFloat16 x, GFloat16 y)
134
+ {
135
+ uint16_t iX, iY;
136
+ memcpy(&iX, &x, sizeof(x));
137
+ memcpy(&iY, &y, sizeof(y));
138
+ bool ret;
139
+ if (IsNan(x) || IsNan(y))
140
+ {
141
+ ret = false;
142
+ }
143
+ else if (!(iX >> 15))
144
+ {
145
+ // +0 considered > -0. We don't really care
146
+ ret = (iY >> 15) || iX > iY;
147
+ }
148
+ else
149
+ {
150
+ ret = (iY >> 15) && iX < iY;
151
+ }
152
+ return ret;
153
+ }
154
+
155
+ template <> bool compScalar<GFloat16, false>(GFloat16 x, GFloat16 y)
156
+ {
157
+ return compScalar<GFloat16, true>(y, x);
158
+ }
159
+ #endif
160
+
161
+ /************************************************************************/
162
+ /* extremum_element_with_nan_generic() */
163
+ /************************************************************************/
164
+
165
+ template <class T, bool IS_MAX>
166
+ inline size_t extremum_element_with_nan_generic(const T *v, size_t size)
167
+ {
168
+ if (size == 0)
169
+ return 0;
170
+ size_t idx_of_extremum = 0;
171
+ auto extremum = v[0];
172
+ bool extremum_is_nan = IsNan(extremum);
173
+ size_t i = 1;
174
+ for (; i < size; ++i)
175
+ {
176
+ if (compScalar<T, IS_MAX>(v[i], extremum) ||
177
+ (extremum_is_nan && !IsNan(v[i])))
178
+ {
179
+ extremum = v[i];
180
+ idx_of_extremum = i;
181
+ extremum_is_nan = false;
182
+ }
183
+ }
184
+ return idx_of_extremum;
185
+ }
186
+
187
+ /************************************************************************/
188
+ /* extremum_element_with_nan_generic() */
189
+ /************************************************************************/
190
+
191
+ template <class T, bool IS_MAX>
192
+ inline size_t extremum_element_with_nan_generic(const T *v, size_t size,
193
+ T noDataValue)
194
+ {
195
+ if (IsNan(noDataValue))
196
+ return extremum_element_with_nan_generic<T, IS_MAX>(v, size);
197
+ if (size == 0)
198
+ return 0;
199
+ size_t idx_of_extremum = 0;
200
+ auto extremum = v[0];
201
+ bool extremum_is_nan_or_nodata =
202
+ IsNan(extremum) || compEqual(extremum, noDataValue);
203
+ size_t i = 1;
204
+ for (; i < size; ++i)
205
+ {
206
+ if (!compEqual(v[i], noDataValue) &&
207
+ (compScalar<T, IS_MAX>(v[i], extremum) ||
208
+ (extremum_is_nan_or_nodata && !IsNan(v[i]))))
209
+ {
210
+ extremum = v[i];
211
+ idx_of_extremum = i;
212
+ extremum_is_nan_or_nodata = false;
213
+ }
214
+ }
215
+ return idx_of_extremum;
216
+ }
217
+
218
+ /************************************************************************/
219
+ /* extremum_element_generic() */
220
+ /************************************************************************/
221
+
222
+ template <class T, bool IS_MAX>
223
+ inline size_t extremum_element_generic(const T *buffer, size_t size,
224
+ bool bHasNoData, T noDataValue)
225
+ {
226
+ if (bHasNoData)
227
+ {
228
+ if constexpr (is_floating_point_v<T>)
229
+ {
230
+ if (IsNan(noDataValue))
231
+ {
232
+ if constexpr (IS_MAX)
233
+ {
234
+ return std::max_element(buffer, buffer + size,
235
+ [](T a, T b)
236
+ {
237
+ return IsNan(b) ? false
238
+ : IsNan(a) ? true
239
+ : a < b;
240
+ }) -
241
+ buffer;
242
+ }
243
+ else
244
+ {
245
+ return std::min_element(buffer, buffer + size,
246
+ [](T a, T b)
247
+ {
248
+ return IsNan(b) ? true
249
+ : IsNan(a) ? false
250
+ : a < b;
251
+ }) -
252
+ buffer;
253
+ }
254
+ }
255
+ else
256
+ {
257
+ if constexpr (IS_MAX)
258
+ {
259
+ return std::max_element(buffer, buffer + size,
260
+ [noDataValue](T a, T b)
261
+ {
262
+ return IsNan(b) ? false
263
+ : IsNan(a) ? true
264
+ : (b == noDataValue)
265
+ ? false
266
+ : (a == noDataValue)
267
+ ? true
268
+ : a < b;
269
+ }) -
270
+ buffer;
271
+ }
272
+ else
273
+ {
274
+ return std::min_element(buffer, buffer + size,
275
+ [noDataValue](T a, T b)
276
+ {
277
+ return IsNan(b) ? true
278
+ : IsNan(a) ? false
279
+ : (b == noDataValue)
280
+ ? true
281
+ : (a == noDataValue)
282
+ ? false
283
+ : a < b;
284
+ }) -
285
+ buffer;
286
+ }
287
+ }
288
+ }
289
+ else
290
+ {
291
+ if constexpr (IS_MAX)
292
+ {
293
+ return std::max_element(buffer, buffer + size,
294
+ [noDataValue](T a, T b)
295
+ {
296
+ return (b == noDataValue) ? false
297
+ : (a == noDataValue) ? true
298
+ : a < b;
299
+ }) -
300
+ buffer;
301
+ }
302
+ else
303
+ {
304
+ return std::min_element(buffer, buffer + size,
305
+ [noDataValue](T a, T b)
306
+ {
307
+ return (b == noDataValue) ? true
308
+ : (a == noDataValue) ? false
309
+ : a < b;
310
+ }) -
311
+ buffer;
312
+ }
313
+ }
314
+ }
315
+ else
316
+ {
317
+ if constexpr (is_floating_point_v<T>)
318
+ {
319
+ if constexpr (IS_MAX)
320
+ {
321
+ return std::max_element(buffer, buffer + size,
322
+ [](T a, T b)
323
+ {
324
+ return IsNan(b) ? false
325
+ : IsNan(a) ? true
326
+ : a < b;
327
+ }) -
328
+ buffer;
329
+ }
330
+ else
331
+ {
332
+ return std::min_element(buffer, buffer + size,
333
+ [](T a, T b)
334
+ {
335
+ return IsNan(b) ? true
336
+ : IsNan(a) ? false
337
+ : a < b;
338
+ }) -
339
+ buffer;
340
+ }
341
+ }
342
+ else
343
+ {
344
+ if constexpr (IS_MAX)
345
+ {
346
+ return std::max_element(buffer, buffer + size) - buffer;
347
+ }
348
+ else
349
+ {
350
+ return std::min_element(buffer, buffer + size) - buffer;
351
+ }
352
+ }
353
+ }
354
+ }
355
+
356
+ #ifdef GDAL_MINMAX_ELEMENT_USE_SSE2
357
+
358
+ /************************************************************************/
359
+ /* extremum_element_sse2() */
360
+ /************************************************************************/
361
+
362
+ static inline int8_t Shift8(uint8_t x)
363
+ {
364
+ return static_cast<int8_t>(x + std::numeric_limits<int8_t>::min());
365
+ }
366
+
367
+ static inline int16_t Shift16(uint16_t x)
368
+ {
369
+ return static_cast<int16_t>(x + std::numeric_limits<int16_t>::min());
370
+ }
371
+
372
+ CPL_NOSANITIZE_UNSIGNED_INT_OVERFLOW
373
+ static inline int32_t Shift32(uint32_t x)
374
+ {
375
+ x += static_cast<uint32_t>(std::numeric_limits<int32_t>::min());
376
+ int32_t ret;
377
+ memcpy(&ret, &x, sizeof(x));
378
+ return ret;
379
+ }
380
+
381
+ CPL_NOSANITIZE_UNSIGNED_INT_OVERFLOW
382
+ static inline int64_t Shift64(uint64_t x)
383
+ {
384
+ x += static_cast<uint64_t>(std::numeric_limits<int64_t>::min());
385
+ int64_t ret;
386
+ memcpy(&ret, &x, sizeof(x));
387
+ return ret;
388
+ }
389
+
390
+ // Return a _mm128[i|d] register with all its elements set to x
391
+ template <class T> static inline auto set1(T x)
392
+ {
393
+ if constexpr (std::is_same_v<T, uint8_t>)
394
+ return _mm_set1_epi8(Shift8(x));
395
+ else if constexpr (std::is_same_v<T, int8_t>)
396
+ return _mm_set1_epi8(x);
397
+ else if constexpr (std::is_same_v<T, uint16_t>)
398
+ return _mm_set1_epi16(Shift16(x));
399
+ else if constexpr (std::is_same_v<T, int16_t>)
400
+ return _mm_set1_epi16(x);
401
+ else if constexpr (std::is_same_v<T, uint32_t>)
402
+ return _mm_set1_epi32(Shift32(x));
403
+ else if constexpr (std::is_same_v<T, int32_t>)
404
+ return _mm_set1_epi32(x);
405
+ else if constexpr (std::is_same_v<T, uint64_t>)
406
+ return _mm_set1_epi64x(Shift64(x));
407
+ else if constexpr (std::is_same_v<T, int64_t>)
408
+ return _mm_set1_epi64x(x);
409
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
410
+ else if constexpr (std::is_same_v<T, GFloat16>)
411
+ {
412
+ int16_t iX;
413
+ memcpy(&iX, &x, sizeof(x));
414
+ return _mm_set1_epi16(iX);
415
+ }
416
+ #endif
417
+ else if constexpr (std::is_same_v<T, float>)
418
+ return _mm_set1_ps(x);
419
+ else
420
+ {
421
+ static_assert(std::is_same_v<T, double>);
422
+ return _mm_set1_pd(x);
423
+ }
424
+ }
425
+
426
+ // Return a _mm128[i|d] register with all its elements set to x
427
+ template <class T> static inline auto set1_unshifted(T x)
428
+ {
429
+ if constexpr (std::is_same_v<T, uint8_t>)
430
+ {
431
+ int8_t xSigned;
432
+ memcpy(&xSigned, &x, sizeof(xSigned));
433
+ return _mm_set1_epi8(xSigned);
434
+ }
435
+ else if constexpr (std::is_same_v<T, int8_t>)
436
+ return _mm_set1_epi8(x);
437
+ else if constexpr (std::is_same_v<T, uint16_t>)
438
+ {
439
+ int16_t xSigned;
440
+ memcpy(&xSigned, &x, sizeof(xSigned));
441
+ return _mm_set1_epi16(xSigned);
442
+ }
443
+ else if constexpr (std::is_same_v<T, int16_t>)
444
+ return _mm_set1_epi16(x);
445
+ else if constexpr (std::is_same_v<T, uint32_t>)
446
+ {
447
+ int32_t xSigned;
448
+ memcpy(&xSigned, &x, sizeof(xSigned));
449
+ return _mm_set1_epi32(xSigned);
450
+ }
451
+ else if constexpr (std::is_same_v<T, int32_t>)
452
+ return _mm_set1_epi32(x);
453
+ else if constexpr (std::is_same_v<T, uint64_t>)
454
+ {
455
+ int64_t xSigned;
456
+ memcpy(&xSigned, &x, sizeof(xSigned));
457
+ return _mm_set1_epi64x(xSigned);
458
+ }
459
+ else if constexpr (std::is_same_v<T, int64_t>)
460
+ return _mm_set1_epi64x(x);
461
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
462
+ else if constexpr (std::is_same_v<T, GFloat16>)
463
+ {
464
+ int16_t iX;
465
+ memcpy(&iX, &x, sizeof(x));
466
+ return _mm_set1_epi16(iX);
467
+ }
468
+ #endif
469
+ else if constexpr (std::is_same_v<T, float>)
470
+ return _mm_set1_ps(x);
471
+ else
472
+ {
473
+ static_assert(std::is_same_v<T, double>);
474
+ return _mm_set1_pd(x);
475
+ }
476
+ }
477
+
478
+ // Load as many values of type T at a _mm128[i|d] register can contain from x
479
+ template <class T> static inline auto loadv(const T *x)
480
+ {
481
+ if constexpr (std::is_same_v<T, float>)
482
+ return _mm_loadu_ps(x);
483
+ else if constexpr (std::is_same_v<T, double>)
484
+ return _mm_loadu_pd(x);
485
+ else
486
+ return _mm_loadu_si128(reinterpret_cast<const __m128i *>(x));
487
+ }
488
+
489
+ inline __m128i IsNanGFloat16(__m128i x)
490
+ {
491
+ // (iX & 0x7fff) > 0x7c00
492
+ return _mm_cmpgt_epi16(_mm_and_si128(x, _mm_set1_epi16(0x7fff)),
493
+ _mm_set1_epi16(0x7c00));
494
+ }
495
+
496
+ template <class T, class SSE_T>
497
+ static inline SSE_T blendv(SSE_T a, SSE_T b, SSE_T mask)
498
+ {
499
+ if constexpr (std::is_same_v<T, float>)
500
+ {
501
+ #if defined(__SSE4_1__) || defined(__AVX__) || defined(USE_NEON_OPTIMIZATIONS)
502
+ return _mm_blendv_ps(a, b, mask);
503
+ #else
504
+ return _mm_or_ps(_mm_andnot_ps(mask, a), _mm_and_ps(mask, b));
505
+ #endif
506
+ }
507
+ else if constexpr (std::is_same_v<T, double>)
508
+ {
509
+ #if defined(__SSE4_1__) || defined(__AVX__) || defined(USE_NEON_OPTIMIZATIONS)
510
+ return _mm_blendv_pd(a, b, mask);
511
+ #else
512
+ return _mm_or_pd(_mm_andnot_pd(mask, a), _mm_and_pd(mask, b));
513
+ #endif
514
+ }
515
+ else
516
+ {
517
+ #if defined(__SSE4_1__) || defined(__AVX__) || defined(USE_NEON_OPTIMIZATIONS)
518
+ return _mm_blendv_epi8(a, b, mask);
519
+ #else
520
+ return _mm_or_si128(_mm_andnot_si128(mask, a), _mm_and_si128(mask, b));
521
+ #endif
522
+ }
523
+ }
524
+
525
+ inline __m128i cmpgt_ph(__m128i x, __m128i y)
526
+ {
527
+ #ifdef slow
528
+ GFloat16 vx[8], vy[8];
529
+ int16_t res[8];
530
+ _mm_storeu_si128(reinterpret_cast<__m128i *>(vx), x);
531
+ _mm_storeu_si128(reinterpret_cast<__m128i *>(vy), y);
532
+ for (int i = 0; i < 8; ++i)
533
+ {
534
+ res[i] = vx[i] > vy[i] ? -1 : 0;
535
+ }
536
+ return _mm_loadu_si128(reinterpret_cast<const __m128i *>(res));
537
+ #else
538
+ const auto x_is_negative = _mm_srai_epi16(x, 15);
539
+ const auto y_is_negative = _mm_srai_epi16(y, 15);
540
+ return _mm_andnot_si128(
541
+ // only x can be NaN given how we use this method
542
+ IsNanGFloat16(x),
543
+ blendv<int16_t>(_mm_or_si128(y_is_negative, _mm_cmpgt_epi16(x, y)),
544
+ _mm_and_si128(y_is_negative, _mm_cmpgt_epi16(y, x)),
545
+ x_is_negative));
546
+ #endif
547
+ }
548
+
549
+ inline __m128i cmpgt_epi64(__m128i x, __m128i y)
550
+ {
551
+ #if defined(__SSE4_2__) || defined(__AVX__) || defined(USE_NEON_OPTIMIZATIONS)
552
+ return _mm_cmpgt_epi64(x, y);
553
+ #else
554
+ auto tmp = _mm_and_si128(_mm_sub_epi64(y, x), _mm_cmpeq_epi32(x, y));
555
+ tmp = _mm_or_si128(tmp, _mm_cmpgt_epi32(x, y));
556
+ // Replicate the 2 odd-indexed (hi) 32-bit word into the 2 even-indexed (lo)
557
+ // ones
558
+ return _mm_shuffle_epi32(tmp, _MM_SHUFFLE(3, 3, 1, 1));
559
+ #endif
560
+ }
561
+
562
+ // Return a __m128i register with bits set when x[i] < y[i] when !IS_MAX
563
+ // or x[i] > y[i] when IS_MAX
564
+ template <class T, bool IS_MAX, class SSE_T>
565
+ static inline __m128i comp(SSE_T x, SSE_T y)
566
+ {
567
+ if constexpr (IS_MAX)
568
+ {
569
+ if constexpr (std::is_same_v<T, uint8_t>)
570
+ return _mm_cmpgt_epi8(
571
+ _mm_add_epi8(x,
572
+ _mm_set1_epi8(std::numeric_limits<int8_t>::min())),
573
+ y);
574
+ else if constexpr (std::is_same_v<T, int8_t>)
575
+ return _mm_cmpgt_epi8(x, y);
576
+ else if constexpr (std::is_same_v<T, uint16_t>)
577
+ return _mm_cmpgt_epi16(
578
+ _mm_add_epi16(
579
+ x, _mm_set1_epi16(std::numeric_limits<int16_t>::min())),
580
+ y);
581
+ else if constexpr (std::is_same_v<T, int16_t>)
582
+ return _mm_cmpgt_epi16(x, y);
583
+ else if constexpr (std::is_same_v<T, uint32_t>)
584
+ return _mm_cmpgt_epi32(
585
+ _mm_add_epi32(
586
+ x, _mm_set1_epi32(std::numeric_limits<int32_t>::min())),
587
+ y);
588
+ else if constexpr (std::is_same_v<T, int32_t>)
589
+ return _mm_cmpgt_epi32(x, y);
590
+ else if constexpr (std::is_same_v<T, uint64_t>)
591
+ {
592
+ return cmpgt_epi64(
593
+ _mm_add_epi64(
594
+ x, _mm_set1_epi64x(std::numeric_limits<int64_t>::min())),
595
+ y);
596
+ }
597
+ else if constexpr (std::is_same_v<T, int64_t>)
598
+ {
599
+ return cmpgt_epi64(x, y);
600
+ }
601
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
602
+ else if constexpr (std::is_same_v<T, GFloat16>)
603
+ {
604
+ return cmpgt_ph(x, y);
605
+ }
606
+ #endif
607
+ else if constexpr (std::is_same_v<T, float>)
608
+ return _mm_castps_si128(_mm_cmpgt_ps(x, y));
609
+ else
610
+ {
611
+ static_assert(std::is_same_v<T, double>);
612
+ return _mm_castpd_si128(_mm_cmpgt_pd(x, y));
613
+ }
614
+ }
615
+ else
616
+ {
617
+ if constexpr (std::is_same_v<T, uint8_t>)
618
+ return _mm_cmplt_epi8(
619
+ _mm_add_epi8(x,
620
+ _mm_set1_epi8(std::numeric_limits<int8_t>::min())),
621
+ y);
622
+ else if constexpr (std::is_same_v<T, int8_t>)
623
+ return _mm_cmplt_epi8(x, y);
624
+ else if constexpr (std::is_same_v<T, uint16_t>)
625
+ return _mm_cmplt_epi16(
626
+ _mm_add_epi16(
627
+ x, _mm_set1_epi16(std::numeric_limits<int16_t>::min())),
628
+ y);
629
+ else if constexpr (std::is_same_v<T, int16_t>)
630
+ return _mm_cmplt_epi16(x, y);
631
+ else if constexpr (std::is_same_v<T, uint32_t>)
632
+ return _mm_cmplt_epi32(
633
+ _mm_add_epi32(
634
+ x, _mm_set1_epi32(std::numeric_limits<int32_t>::min())),
635
+ y);
636
+ else if constexpr (std::is_same_v<T, int32_t>)
637
+ return _mm_cmplt_epi32(x, y);
638
+ else if constexpr (std::is_same_v<T, uint64_t>)
639
+ {
640
+ return cmpgt_epi64(
641
+ y, _mm_add_epi64(x, _mm_set1_epi64x(
642
+ std::numeric_limits<int64_t>::min())));
643
+ }
644
+ else if constexpr (std::is_same_v<T, int64_t>)
645
+ {
646
+ return cmpgt_epi64(y, x);
647
+ }
648
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
649
+ else if constexpr (std::is_same_v<T, GFloat16>)
650
+ {
651
+ return cmpgt_ph(y, x);
652
+ }
653
+ #endif
654
+ else if constexpr (std::is_same_v<T, float>)
655
+ return _mm_castps_si128(_mm_cmplt_ps(x, y));
656
+ else
657
+ {
658
+ static_assert(std::is_same_v<T, double>);
659
+ return _mm_castpd_si128(_mm_cmplt_pd(x, y));
660
+ }
661
+ }
662
+ }
663
+
664
+ template <class T, class SSE_T> static inline SSE_T compeq(SSE_T a, SSE_T b);
665
+
666
+ template <> __m128i compeq<uint8_t>(__m128i a, __m128i b)
667
+ {
668
+ return _mm_cmpeq_epi8(a, b);
669
+ }
670
+
671
+ template <> __m128i compeq<int8_t>(__m128i a, __m128i b)
672
+ {
673
+ return _mm_cmpeq_epi8(a, b);
674
+ }
675
+
676
+ template <> __m128i compeq<uint16_t>(__m128i a, __m128i b)
677
+ {
678
+ return _mm_cmpeq_epi16(a, b);
679
+ }
680
+
681
+ template <> __m128i compeq<int16_t>(__m128i a, __m128i b)
682
+ {
683
+ return _mm_cmpeq_epi16(a, b);
684
+ }
685
+
686
+ template <> __m128i compeq<uint32_t>(__m128i a, __m128i b)
687
+ {
688
+ return _mm_cmpeq_epi32(a, b);
689
+ }
690
+
691
+ template <> __m128i compeq<int32_t>(__m128i a, __m128i b)
692
+ {
693
+ return _mm_cmpeq_epi32(a, b);
694
+ }
695
+
696
+ template <> __m128i compeq<uint64_t>(__m128i a, __m128i b)
697
+ {
698
+ #if defined(__SSE4_1__) || defined(__AVX__) || defined(USE_NEON_OPTIMIZATIONS)
699
+ return _mm_cmpeq_epi64(a, b);
700
+ #else
701
+ auto tmp = _mm_cmpeq_epi32(a, b);
702
+ // The shuffle swaps hi-lo 32-bit words
703
+ return _mm_and_si128(tmp, _mm_shuffle_epi32(tmp, _MM_SHUFFLE(2, 3, 0, 1)));
704
+ #endif
705
+ }
706
+
707
+ template <>
708
+ #if defined(__INTEL_CLANG_COMPILER) && \
709
+ !(defined(__SSE4_1__) || defined(__AVX__))
710
+ // ICC 2024 has a bug with the following code when -fiopenmp is enabled.
711
+ // Disabling inlining works around it...
712
+ __attribute__((noinline))
713
+ #endif
714
+ __m128i compeq<int64_t>(__m128i a, __m128i b)
715
+ {
716
+ return compeq<uint64_t>(a, b);
717
+ }
718
+
719
+ template <> __m128 compeq<float>(__m128 a, __m128 b)
720
+ {
721
+ return _mm_cmpeq_ps(a, b);
722
+ }
723
+
724
+ template <> __m128d compeq<double>(__m128d a, __m128d b)
725
+ {
726
+ return _mm_cmpeq_pd(a, b);
727
+ }
728
+
729
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
730
+ template <> __m128i compeq<GFloat16>(__m128i a, __m128i b)
731
+ {
732
+ // !isnan(a) && !isnan(b) && (a == b || (a|b) == 0x8000)
733
+ return _mm_andnot_si128(
734
+ IsNanGFloat16(a), // b cannot be NaN given how we use this method
735
+ _mm_or_si128(_mm_cmpeq_epi16(a, b),
736
+ _mm_cmpeq_epi16(
737
+ _mm_or_si128(a, b),
738
+ _mm_set1_epi16(std::numeric_limits<int16_t>::min()))));
739
+ }
740
+ #endif
741
+
742
+ // Using SSE2
743
+ template <class T, bool IS_MAX, bool HAS_NODATA>
744
+ #if defined(__GNUC__)
745
+ __attribute__((noinline))
746
+ #endif
747
+ size_t extremum_element_sse2(const T *v, size_t size, T noDataValue)
748
+ {
749
+ static_assert(std::is_same_v<T, uint8_t> || std::is_same_v<T, int8_t> ||
750
+ std::is_same_v<T, uint16_t> || std::is_same_v<T, int16_t> ||
751
+ std::is_same_v<T, uint32_t> || std::is_same_v<T, int32_t> ||
752
+ std::is_same_v<T, uint64_t> || std::is_same_v<T, int64_t> ||
753
+ is_floating_point_v<T>);
754
+ if (size == 0)
755
+ return 0;
756
+ size_t idx_of_extremum = 0;
757
+ T extremum = v[0];
758
+ [[maybe_unused]] bool extremum_is_invalid = false;
759
+ if constexpr (is_floating_point_v<T>)
760
+ {
761
+ if constexpr (HAS_NODATA)
762
+ {
763
+ if (IsNan(noDataValue))
764
+ {
765
+ return extremum_element_sse2<T, IS_MAX, false>(
766
+ v, size, static_cast<T>(0));
767
+ }
768
+ }
769
+ extremum_is_invalid = IsNan(extremum);
770
+ }
771
+ if constexpr (HAS_NODATA)
772
+ {
773
+ if (compEqual(extremum, noDataValue))
774
+ extremum_is_invalid = true;
775
+ }
776
+ size_t i = 1;
777
+
778
+ constexpr size_t VALS_PER_REG = sizeof(set1(extremum)) / sizeof(extremum);
779
+ constexpr int LOOP_UNROLLING = 4;
780
+ // If changing the value, then we need to adjust the number of sse_valX
781
+ // loading in the loop.
782
+ static_assert(LOOP_UNROLLING == 4);
783
+ constexpr size_t VALS_PER_ITER = VALS_PER_REG * LOOP_UNROLLING;
784
+
785
+ const auto update = [v, noDataValue, &extremum, &idx_of_extremum,
786
+ &extremum_is_invalid](size_t idx)
787
+ {
788
+ if constexpr (HAS_NODATA)
789
+ {
790
+ if (compEqual(v[idx], noDataValue))
791
+ return;
792
+ if (extremum_is_invalid)
793
+ {
794
+ if constexpr (is_floating_point_v<T>)
795
+ {
796
+ if (IsNan(v[idx]))
797
+ return;
798
+ }
799
+ extremum = v[idx];
800
+ idx_of_extremum = idx;
801
+ extremum_is_invalid = false;
802
+ return;
803
+ }
804
+ }
805
+ else
806
+ {
807
+ CPL_IGNORE_RET_VAL(noDataValue);
808
+ }
809
+ if (compScalar<T, IS_MAX>(v[idx], extremum))
810
+ {
811
+ extremum = v[idx];
812
+ idx_of_extremum = idx;
813
+ extremum_is_invalid = false;
814
+ }
815
+ else if constexpr (is_floating_point_v<T>)
816
+ {
817
+ if (extremum_is_invalid && !IsNan(v[idx]))
818
+ {
819
+ extremum = v[idx];
820
+ idx_of_extremum = idx;
821
+ extremum_is_invalid = false;
822
+ }
823
+ }
824
+ };
825
+
826
+ for (; i < VALS_PER_ITER && i < size; ++i)
827
+ {
828
+ update(i);
829
+ }
830
+
831
+ [[maybe_unused]] auto sse_neutral = set1_unshifted(static_cast<T>(0));
832
+ [[maybe_unused]] auto sse_nodata = set1_unshifted(noDataValue);
833
+ if constexpr (HAS_NODATA || is_floating_point_v<T>)
834
+ {
835
+ for (; i < size && extremum_is_invalid; ++i)
836
+ {
837
+ update(i);
838
+ }
839
+ if (!extremum_is_invalid)
840
+ {
841
+ for (; i < size && (i % VALS_PER_ITER) != 0; ++i)
842
+ {
843
+ update(i);
844
+ }
845
+ sse_neutral = set1_unshifted(extremum);
846
+ }
847
+ }
848
+
849
+ auto sse_extremum = set1(extremum);
850
+
851
+ [[maybe_unused]] size_t hits = 0;
852
+ const auto sse_iter_count = (size / VALS_PER_ITER) * VALS_PER_ITER;
853
+ for (; i < sse_iter_count; i += VALS_PER_ITER)
854
+ {
855
+ // A bit of loop unrolling to save 3/4 of slow movemask operations.
856
+ auto sse_val0 = loadv(v + i + 0 * VALS_PER_REG);
857
+ auto sse_val1 = loadv(v + i + 1 * VALS_PER_REG);
858
+ auto sse_val2 = loadv(v + i + 2 * VALS_PER_REG);
859
+ auto sse_val3 = loadv(v + i + 3 * VALS_PER_REG);
860
+
861
+ if constexpr (HAS_NODATA)
862
+ {
863
+ // Replace all components that are at the nodata value by a
864
+ // neutral value (current minimum)
865
+ const auto replaceNoDataByNeutral =
866
+ [sse_neutral, sse_nodata](auto sse_val)
867
+ {
868
+ const auto eq_nodata = compeq<T>(sse_val, sse_nodata);
869
+ return blendv<T>(sse_val, sse_neutral, eq_nodata);
870
+ };
871
+
872
+ sse_val0 = replaceNoDataByNeutral(sse_val0);
873
+ sse_val1 = replaceNoDataByNeutral(sse_val1);
874
+ sse_val2 = replaceNoDataByNeutral(sse_val2);
875
+ sse_val3 = replaceNoDataByNeutral(sse_val3);
876
+ }
877
+
878
+ if (_mm_movemask_epi8(_mm_or_si128(
879
+ _mm_or_si128(comp<T, IS_MAX>(sse_val0, sse_extremum),
880
+ comp<T, IS_MAX>(sse_val1, sse_extremum)),
881
+ _mm_or_si128(comp<T, IS_MAX>(sse_val2, sse_extremum),
882
+ comp<T, IS_MAX>(sse_val3, sse_extremum)))) != 0)
883
+ {
884
+ if constexpr (!std::is_same_v<T, int8_t> &&
885
+ !std::is_same_v<T, uint8_t>)
886
+ {
887
+ // The above tests excluding int8_t/uint8_t is due to the fact
888
+ // with those small ranges of values we will quickly converge
889
+ // to the minimum, so no need to do the below "smart" test.
890
+
891
+ if (++hits == size / 16)
892
+ {
893
+ // If we have an almost sorted array, then using this code path
894
+ // will hurt performance. Arbitrary give up if we get here
895
+ // more than 1. / 16 of the size of the array.
896
+ // fprintf(stderr, "going to non-vector path\n");
897
+ break;
898
+ }
899
+ }
900
+ for (size_t j = 0; j < VALS_PER_ITER; j++)
901
+ {
902
+ update(i + j);
903
+ }
904
+
905
+ sse_extremum = set1(extremum);
906
+ if constexpr (HAS_NODATA)
907
+ {
908
+ sse_neutral = set1_unshifted(extremum);
909
+ }
910
+ }
911
+ }
912
+ for (; i < size; ++i)
913
+ {
914
+ update(i);
915
+ }
916
+ return idx_of_extremum;
917
+ }
918
+
919
+ /************************************************************************/
920
+ /* extremum_element() */
921
+ /************************************************************************/
922
+
923
+ template <class T, bool IS_MAX>
924
+ inline size_t extremum_element(const T *buffer, size_t size, T noDataValue)
925
+ {
926
+ return extremum_element_sse2<T, IS_MAX, true>(buffer, size, noDataValue);
927
+ }
928
+
929
+ template <class T, bool IS_MAX>
930
+ inline size_t extremum_element(const T *buffer, size_t size)
931
+ {
932
+ return extremum_element_sse2<T, IS_MAX, false>(buffer, size,
933
+ static_cast<T>(0));
934
+ }
935
+
936
+ #else
937
+
938
+ template <class T, bool IS_MAX>
939
+ inline size_t extremum_element(const T *buffer, size_t size, T noDataValue)
940
+ {
941
+ if constexpr (is_floating_point_v<T>)
942
+ return extremum_element_with_nan_generic<T, IS_MAX>(buffer, size,
943
+ noDataValue);
944
+ else
945
+ return extremum_element_generic<T, IS_MAX>(buffer, size, true,
946
+ noDataValue);
947
+ }
948
+
949
+ template <class T, bool IS_MAX>
950
+ inline size_t extremum_element(const T *buffer, size_t size)
951
+ {
952
+ if constexpr (is_floating_point_v<T>)
953
+ return extremum_element_with_nan_generic<T, IS_MAX>(buffer, size);
954
+ else
955
+ return extremum_element_generic<T, IS_MAX>(buffer, size, false,
956
+ static_cast<T>(0));
957
+ }
958
+
959
+ #endif
960
+
961
+ /************************************************************************/
962
+ /* extremum_element() */
963
+ /************************************************************************/
964
+
965
+ template <class T, bool IS_MAX>
966
+ inline size_t extremum_element(const T *buffer, size_t size, bool bHasNoData,
967
+ T noDataValue)
968
+ {
969
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0) && \
970
+ !defined(GDAL_MINMAX_ELEMENT_USE_SSE2)
971
+ if constexpr (std::is_same_v<T, GFloat16>)
972
+ {
973
+ if (bHasNoData)
974
+ return extremum_element_with_nan_generic<T, IS_MAX>(buffer, size,
975
+ noDataValue);
976
+ else
977
+ return extremum_element_with_nan_generic<T, IS_MAX>(buffer, size);
978
+ }
979
+ else
980
+ #endif
981
+ if (bHasNoData)
982
+ return extremum_element<T, IS_MAX>(buffer, size, noDataValue);
983
+ else
984
+ return extremum_element<T, IS_MAX>(buffer, size);
985
+ }
986
+
987
+ template <class T, class NODATAType>
988
+ inline bool IsValueExactAs([[maybe_unused]] NODATAType noDataValue)
989
+ {
990
+ if constexpr (std::is_same_v<T, NODATAType>)
991
+ return true;
992
+ else
993
+ return GDALIsValueExactAs<T>(static_cast<double>(noDataValue));
994
+ }
995
+
996
+ template <bool IS_MAX, class NODATAType>
997
+ size_t extremum_element(const void *buffer, size_t nElts, GDALDataType eDT,
998
+ bool bHasNoData, NODATAType noDataValue)
999
+ {
1000
+ switch (eDT)
1001
+ {
1002
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 7, 0)
1003
+ case GDT_Int8:
1004
+ {
1005
+ using T = int8_t;
1006
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1007
+ return extremum_element<T, IS_MAX>(
1008
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1009
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1010
+ }
1011
+ #endif
1012
+ case GDT_Byte:
1013
+ {
1014
+ using T = uint8_t;
1015
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1016
+ return extremum_element<T, IS_MAX>(
1017
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1018
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1019
+ }
1020
+ case GDT_Int16:
1021
+ {
1022
+ using T = int16_t;
1023
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1024
+ return extremum_element<T, IS_MAX>(
1025
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1026
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1027
+ }
1028
+ case GDT_UInt16:
1029
+ {
1030
+ using T = uint16_t;
1031
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1032
+ return extremum_element<T, IS_MAX>(
1033
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1034
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1035
+ }
1036
+ case GDT_Int32:
1037
+ {
1038
+ using T = int32_t;
1039
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1040
+ return extremum_element<T, IS_MAX>(
1041
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1042
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1043
+ }
1044
+ case GDT_UInt32:
1045
+ {
1046
+ using T = uint32_t;
1047
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1048
+ return extremum_element<T, IS_MAX>(
1049
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1050
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1051
+ }
1052
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 5, 0)
1053
+ case GDT_Int64:
1054
+ {
1055
+ using T = int64_t;
1056
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1057
+ return extremum_element<T, IS_MAX>(
1058
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1059
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1060
+ }
1061
+ case GDT_UInt64:
1062
+ {
1063
+ using T = uint64_t;
1064
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1065
+ return extremum_element<T, IS_MAX>(
1066
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1067
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1068
+ }
1069
+ #endif
1070
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
1071
+ case GDT_Float16:
1072
+ {
1073
+ using T = GFloat16;
1074
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1075
+ return extremum_element<T, IS_MAX>(
1076
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1077
+ bHasNoData ? static_cast<T>(noDataValue) : static_cast<T>(0));
1078
+ }
1079
+ #endif
1080
+ case GDT_Float32:
1081
+ {
1082
+ using T = float;
1083
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1084
+ return extremum_element<T, IS_MAX>(
1085
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1086
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1087
+ }
1088
+ case GDT_Float64:
1089
+ {
1090
+ using T = double;
1091
+ bHasNoData = bHasNoData && IsValueExactAs<T>(noDataValue);
1092
+ return extremum_element<T, IS_MAX>(
1093
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1094
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1095
+ }
1096
+ case GDT_CInt16:
1097
+ case GDT_CInt32:
1098
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
1099
+ case GDT_CFloat16:
1100
+ #endif
1101
+ case GDT_CFloat32:
1102
+ case GDT_CFloat64:
1103
+ case GDT_Unknown:
1104
+ case GDT_TypeCount:
1105
+ break;
1106
+ }
1107
+ CPLError(CE_Failure, CPLE_NotSupported,
1108
+ "%s not supported for this data type.", __FUNCTION__);
1109
+ return 0;
1110
+ }
1111
+
1112
+ } // namespace detail
1113
+
1114
+ /************************************************************************/
1115
+ /* max_element() */
1116
+ /************************************************************************/
1117
+
1118
+ /** Return the index of the element where the maximum value is hit.
1119
+ *
1120
+ * If it is hit in several locations, it is not specified which one will be
1121
+ * returned.
1122
+ *
1123
+ * @param buffer Vector of nElts elements of type eDT.
1124
+ * @param nElts Number of elements in buffer.
1125
+ * @param eDT Data type of the elements of buffer.
1126
+ * @param bHasNoData Whether noDataValue is valid.
1127
+ * @param noDataValue Nodata value, only taken into account if bHasNoData == true
1128
+ *
1129
+ * @since GDAL 3.11
1130
+ */
1131
+ template <class NODATAType>
1132
+ inline size_t max_element(const void *buffer, size_t nElts, GDALDataType eDT,
1133
+ bool bHasNoData, NODATAType noDataValue)
1134
+ {
1135
+ return detail::extremum_element<true>(buffer, nElts, eDT, bHasNoData,
1136
+ noDataValue);
1137
+ }
1138
+
1139
+ /************************************************************************/
1140
+ /* min_element() */
1141
+ /************************************************************************/
1142
+
1143
+ /** Return the index of the element where the minimum value is hit.
1144
+ *
1145
+ * If it is hit in several locations, it is not specified which one will be
1146
+ * returned.
1147
+ *
1148
+ * @param buffer Vector of nElts elements of type eDT.
1149
+ * @param nElts Number of elements in buffer.
1150
+ * @param eDT Data type of the elements of buffer.
1151
+ * @param bHasNoData Whether noDataValue is valid.
1152
+ * @param noDataValue Nodata value, only taken into account if bHasNoData == true
1153
+ *
1154
+ * @since GDAL 3.11
1155
+ */
1156
+ template <class NODATAType>
1157
+ inline size_t min_element(const void *buffer, size_t nElts, GDALDataType eDT,
1158
+ bool bHasNoData, NODATAType noDataValue)
1159
+ {
1160
+ return detail::extremum_element<false>(buffer, nElts, eDT, bHasNoData,
1161
+ noDataValue);
1162
+ }
1163
+
1164
+ namespace detail
1165
+ {
1166
+
1167
+ #ifdef NOT_EFFICIENT
1168
+
1169
+ /************************************************************************/
1170
+ /* minmax_element() */
1171
+ /************************************************************************/
1172
+
1173
+ template <class T>
1174
+ std::pair<size_t, size_t> minmax_element(const T *v, size_t size, T noDataValue)
1175
+ {
1176
+ static_assert(!(std::is_floating_point_v<T>));
1177
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
1178
+ static_assert(!std::is_same_v<T, GFloat16>);
1179
+ #endif
1180
+ if (size == 0)
1181
+ return std::pair(0, 0);
1182
+ size_t idx_of_min = 0;
1183
+ size_t idx_of_max = 0;
1184
+ T vmin = v[0];
1185
+ T vmax = v[0];
1186
+ bool extremum_is_nodata = vmin == noDataValue;
1187
+ size_t i = 1;
1188
+ for (; i < size; ++i)
1189
+ {
1190
+ if (v[i] != noDataValue && (v[i] < vmin || extremum_is_nodata))
1191
+ {
1192
+ vmin = v[i];
1193
+ idx_of_min = i;
1194
+ extremum_is_nodata = false;
1195
+ }
1196
+ if (v[i] != noDataValue && (v[i] > vmax || extremum_is_nodata))
1197
+ {
1198
+ vmax = v[i];
1199
+ idx_of_max = i;
1200
+ extremum_is_nodata = false;
1201
+ }
1202
+ }
1203
+ return std::pair(idx_of_min, idx_of_max);
1204
+ }
1205
+
1206
+ template <class T>
1207
+ std::pair<size_t, size_t> minmax_element(const T *v, size_t size)
1208
+ {
1209
+ static_assert(!(std::is_floating_point_v<T>));
1210
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
1211
+ static_assert(!std::is_same_v<T, GFloat16>);
1212
+ #endif
1213
+ if (size == 0)
1214
+ return std::pair(0, 0);
1215
+ size_t idx_of_min = 0;
1216
+ size_t idx_of_max = 0;
1217
+ T vmin = v[0];
1218
+ T vmax = v[0];
1219
+ size_t i = 1;
1220
+ for (; i < size; ++i)
1221
+ {
1222
+ if (v[i] < vmin)
1223
+ {
1224
+ vmin = v[i];
1225
+ idx_of_min = i;
1226
+ }
1227
+ if (v[i] > vmax)
1228
+ {
1229
+ vmax = v[i];
1230
+ idx_of_max = i;
1231
+ }
1232
+ }
1233
+ return std::pair(idx_of_min, idx_of_max);
1234
+ }
1235
+
1236
+ template <class T>
1237
+ inline std::pair<size_t, size_t> minmax_element_with_nan(const T *v,
1238
+ size_t size)
1239
+ {
1240
+ if (size == 0)
1241
+ return std::pair(0, 0);
1242
+ size_t idx_of_min = 0;
1243
+ size_t idx_of_max = 0;
1244
+ T vmin = v[0];
1245
+ T vmax = v[0];
1246
+ size_t i = 1;
1247
+ if (IsNan(v[0]))
1248
+ {
1249
+ for (; i < size; ++i)
1250
+ {
1251
+ if (!IsNan(v[i]))
1252
+ {
1253
+ vmin = v[i];
1254
+ idx_of_min = i;
1255
+ vmax = v[i];
1256
+ idx_of_max = i;
1257
+ break;
1258
+ }
1259
+ }
1260
+ }
1261
+ for (; i < size; ++i)
1262
+ {
1263
+ if (v[i] < vmin)
1264
+ {
1265
+ vmin = v[i];
1266
+ idx_of_min = i;
1267
+ }
1268
+ if (v[i] > vmax)
1269
+ {
1270
+ vmax = v[i];
1271
+ idx_of_max = i;
1272
+ }
1273
+ }
1274
+ return std::pair(idx_of_min, idx_of_max);
1275
+ }
1276
+
1277
+ template <>
1278
+ std::pair<size_t, size_t> minmax_element<float>(const float *v, size_t size)
1279
+ {
1280
+ return minmax_element_with_nan<float>(v, size);
1281
+ }
1282
+
1283
+ template <>
1284
+ std::pair<size_t, size_t> minmax_element<double>(const double *v, size_t size)
1285
+ {
1286
+ return minmax_element_with_nan<double>(v, size);
1287
+ }
1288
+
1289
+ template <class T>
1290
+ inline std::pair<size_t, size_t> minmax_element(const T *buffer, size_t size,
1291
+ bool bHasNoData, T noDataValue)
1292
+ {
1293
+ if (bHasNoData)
1294
+ {
1295
+ return minmax_element<T>(buffer, size, noDataValue);
1296
+ }
1297
+ else
1298
+ {
1299
+ return minmax_element<T>(buffer, size);
1300
+ }
1301
+ }
1302
+ #else
1303
+
1304
+ /************************************************************************/
1305
+ /* minmax_element() */
1306
+ /************************************************************************/
1307
+
1308
+ template <class T>
1309
+ inline std::pair<size_t, size_t> minmax_element(const T *buffer, size_t size,
1310
+ bool bHasNoData, T noDataValue)
1311
+ {
1312
+ #ifdef NOT_EFFICIENT
1313
+ if (bHasNoData)
1314
+ {
1315
+ return minmax_element<T>(buffer, size, noDataValue);
1316
+ }
1317
+ else
1318
+ {
1319
+ return minmax_element<T>(buffer, size);
1320
+ //auto [imin, imax] = std::minmax_element(buffer, buffer + size);
1321
+ //return std::pair(imin - buffer, imax - buffer);
1322
+ }
1323
+ #else
1324
+
1325
+ #if !defined(GDAL_MINMAX_ELEMENT_USE_SSE2)
1326
+ if constexpr (!std::is_floating_point_v<T>
1327
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
1328
+ && !std::is_same_v<T, GFloat16>
1329
+ #endif
1330
+ )
1331
+ {
1332
+ if (!bHasNoData)
1333
+ {
1334
+ auto [min_iter, max_iter] =
1335
+ std::minmax_element(buffer, buffer + size);
1336
+ return std::pair(min_iter - buffer, max_iter - buffer);
1337
+ }
1338
+ }
1339
+ #endif
1340
+
1341
+ // Using separately min and max is more efficient than computing them
1342
+ // within the same loop
1343
+ return std::pair(
1344
+ extremum_element<T, false>(buffer, size, bHasNoData, noDataValue),
1345
+ extremum_element<T, true>(buffer, size, bHasNoData, noDataValue));
1346
+
1347
+ #endif
1348
+ }
1349
+ #endif
1350
+
1351
+ } // namespace detail
1352
+
1353
+ /************************************************************************/
1354
+ /* minmax_element() */
1355
+ /************************************************************************/
1356
+
1357
+ /** Return the index of the elements where the minimum and maximum values are hit.
1358
+ *
1359
+ * If they are hit in several locations, it is not specified which one will be
1360
+ * returned (contrary to std::minmax_element).
1361
+ *
1362
+ * @param buffer Vector of nElts elements of type eDT.
1363
+ * @param nElts Number of elements in buffer.
1364
+ * @param eDT Data type of the elements of buffer.
1365
+ * @param bHasNoData Whether noDataValue is valid.
1366
+ * @param noDataValue Nodata value, only taken into account if bHasNoData == true
1367
+ *
1368
+ * @since GDAL 3.11
1369
+ */
1370
+ template <class NODATAType>
1371
+ inline std::pair<size_t, size_t>
1372
+ minmax_element(const void *buffer, size_t nElts, GDALDataType eDT,
1373
+ bool bHasNoData, NODATAType noDataValue)
1374
+ {
1375
+ switch (eDT)
1376
+ {
1377
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 7, 0)
1378
+ case GDT_Int8:
1379
+ {
1380
+ using T = int8_t;
1381
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1382
+ return detail::minmax_element<T>(
1383
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1384
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1385
+ }
1386
+ #endif
1387
+ case GDT_Byte:
1388
+ {
1389
+ using T = uint8_t;
1390
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1391
+ return detail::minmax_element<T>(
1392
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1393
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1394
+ }
1395
+ case GDT_Int16:
1396
+ {
1397
+ using T = int16_t;
1398
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1399
+ return detail::minmax_element<T>(
1400
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1401
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1402
+ }
1403
+ case GDT_UInt16:
1404
+ {
1405
+ using T = uint16_t;
1406
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1407
+ return detail::minmax_element<T>(
1408
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1409
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1410
+ }
1411
+ case GDT_Int32:
1412
+ {
1413
+ using T = int32_t;
1414
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1415
+ return detail::minmax_element<T>(
1416
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1417
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1418
+ }
1419
+ case GDT_UInt32:
1420
+ {
1421
+ using T = uint32_t;
1422
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1423
+ return detail::minmax_element<T>(
1424
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1425
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1426
+ }
1427
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 5, 0)
1428
+ case GDT_Int64:
1429
+ {
1430
+ using T = int64_t;
1431
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1432
+ return detail::minmax_element<T>(
1433
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1434
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1435
+ }
1436
+ case GDT_UInt64:
1437
+ {
1438
+ using T = uint64_t;
1439
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1440
+ return detail::minmax_element<T>(
1441
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1442
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1443
+ }
1444
+ #endif
1445
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
1446
+ case GDT_Float16:
1447
+ {
1448
+ using T = GFloat16;
1449
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1450
+ return detail::minmax_element<T>(
1451
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1452
+ bHasNoData ? static_cast<T>(noDataValue) : static_cast<T>(0));
1453
+ }
1454
+ #endif
1455
+ case GDT_Float32:
1456
+ {
1457
+ using T = float;
1458
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1459
+ return detail::minmax_element<T>(
1460
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1461
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1462
+ }
1463
+ case GDT_Float64:
1464
+ {
1465
+ using T = double;
1466
+ bHasNoData = bHasNoData && detail::IsValueExactAs<T>(noDataValue);
1467
+ return detail::minmax_element<T>(
1468
+ static_cast<const T *>(buffer), nElts, bHasNoData,
1469
+ bHasNoData ? static_cast<T>(noDataValue) : 0);
1470
+ }
1471
+ case GDT_CInt16:
1472
+ case GDT_CInt32:
1473
+ #if GDAL_VERSION_NUM >= GDAL_COMPUTE_VERSION(3, 11, 0)
1474
+ case GDT_CFloat16:
1475
+ #endif
1476
+ case GDT_CFloat32:
1477
+ case GDT_CFloat64:
1478
+ case GDT_Unknown:
1479
+ case GDT_TypeCount:
1480
+ break;
1481
+ }
1482
+ CPLError(CE_Failure, CPLE_NotSupported,
1483
+ "%s not supported for this data type.", __FUNCTION__);
1484
+ return std::pair(0, 0);
1485
+ }
1486
+
1487
+ } // namespace GDAL_MINMAXELT_NS
1488
+
1489
+ #endif // GDAL_MINMAX_ELEMENT_INCLUDED