@sentryware/s2-node 0.0.6

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 (471) hide show
  1. package/.circleci/config.yml +45 -0
  2. package/.dockerignore +1 -0
  3. package/.gitmodules +3 -0
  4. package/CHANGELOG.md +33 -0
  5. package/LICENSE +201 -0
  6. package/README.md +147 -0
  7. package/binding.gyp +170 -0
  8. package/docker/Dockerfile.node20.test +8 -0
  9. package/docker/Dockerfile.node22.test +8 -0
  10. package/docker/Dockerfile.node24.test +8 -0
  11. package/index.d.ts +117 -0
  12. package/index.js +6 -0
  13. package/jest.config.js +184 -0
  14. package/package.json +43 -0
  15. package/publish-linux.sh +18 -0
  16. package/publish-osx.sh +19 -0
  17. package/src/builder.cc +84 -0
  18. package/src/builder.h +29 -0
  19. package/src/cell.cc +71 -0
  20. package/src/cell.h +26 -0
  21. package/src/cell_id.cc +210 -0
  22. package/src/cell_id.h +44 -0
  23. package/src/cell_union.cc +237 -0
  24. package/src/cell_union.h +34 -0
  25. package/src/earth.cc +185 -0
  26. package/src/earth.h +33 -0
  27. package/src/latlng.cc +132 -0
  28. package/src/latlng.h +28 -0
  29. package/src/loop.cc +51 -0
  30. package/src/loop.h +21 -0
  31. package/src/point.cc +69 -0
  32. package/src/point.h +23 -0
  33. package/src/polygon.cc +36 -0
  34. package/src/polygon.h +20 -0
  35. package/src/polyline.cc +186 -0
  36. package/src/polyline.h +34 -0
  37. package/src/region_coverer.cc +450 -0
  38. package/src/region_coverer.h +56 -0
  39. package/src/s2.cc +27 -0
  40. package/test/Cell.test.js +37 -0
  41. package/test/CellId.test.js +135 -0
  42. package/test/CellUnion.test.js +150 -0
  43. package/test/Earth.test.js +62 -0
  44. package/test/LatLng.test.js +45 -0
  45. package/test/Point.test.js +14 -0
  46. package/test/Polyline.test.js +78 -0
  47. package/test/RegionCoverer.test.js +301 -0
  48. package/test.sh +16 -0
  49. package/third_party/s2geometry/.travis.yml +163 -0
  50. package/third_party/s2geometry/AUTHORS +13 -0
  51. package/third_party/s2geometry/CONTRIBUTING.md +65 -0
  52. package/third_party/s2geometry/CONTRIBUTORS +30 -0
  53. package/third_party/s2geometry/LICENSE +202 -0
  54. package/third_party/s2geometry/NOTICE +5 -0
  55. package/third_party/s2geometry/README.md +127 -0
  56. package/third_party/s2geometry/doc/examples/point_index.cc +44 -0
  57. package/third_party/s2geometry/doc/examples/term_index.cc +99 -0
  58. package/third_party/s2geometry/doc/examples/term_index.py +101 -0
  59. package/third_party/s2geometry/src/python/coder.i +125 -0
  60. package/third_party/s2geometry/src/python/pywraps2_test.py +786 -0
  61. package/third_party/s2geometry/src/python/s2.i +37 -0
  62. package/third_party/s2geometry/src/python/s2_common.i +756 -0
  63. package/third_party/s2geometry/src/s2/_fp_contract_off.h +60 -0
  64. package/third_party/s2geometry/src/s2/base/casts.h +318 -0
  65. package/third_party/s2geometry/src/s2/base/commandlineflags.h +67 -0
  66. package/third_party/s2geometry/src/s2/base/integral_types.h +31 -0
  67. package/third_party/s2geometry/src/s2/base/log_severity.h +40 -0
  68. package/third_party/s2geometry/src/s2/base/logging.h +173 -0
  69. package/third_party/s2geometry/src/s2/base/mutex.h +61 -0
  70. package/third_party/s2geometry/src/s2/base/port.h +999 -0
  71. package/third_party/s2geometry/src/s2/base/spinlock.h +60 -0
  72. package/third_party/s2geometry/src/s2/base/stringprintf.cc +107 -0
  73. package/third_party/s2geometry/src/s2/base/stringprintf.h +53 -0
  74. package/third_party/s2geometry/src/s2/base/strtoint.cc +65 -0
  75. package/third_party/s2geometry/src/s2/base/strtoint.h +106 -0
  76. package/third_party/s2geometry/src/s2/base/timer.h +50 -0
  77. package/third_party/s2geometry/src/s2/encoded_s2cell_id_vector.cc +164 -0
  78. package/third_party/s2geometry/src/s2/encoded_s2cell_id_vector.h +110 -0
  79. package/third_party/s2geometry/src/s2/encoded_s2cell_id_vector_test.cc +232 -0
  80. package/third_party/s2geometry/src/s2/encoded_s2point_vector.cc +838 -0
  81. package/third_party/s2geometry/src/s2/encoded_s2point_vector.h +140 -0
  82. package/third_party/s2geometry/src/s2/encoded_s2point_vector_test.cc +344 -0
  83. package/third_party/s2geometry/src/s2/encoded_s2shape_index.cc +181 -0
  84. package/third_party/s2geometry/src/s2/encoded_s2shape_index.h +276 -0
  85. package/third_party/s2geometry/src/s2/encoded_s2shape_index_test.cc +244 -0
  86. package/third_party/s2geometry/src/s2/encoded_string_vector.cc +66 -0
  87. package/third_party/s2geometry/src/s2/encoded_string_vector.h +164 -0
  88. package/third_party/s2geometry/src/s2/encoded_string_vector_test.cc +69 -0
  89. package/third_party/s2geometry/src/s2/encoded_uint_vector.h +299 -0
  90. package/third_party/s2geometry/src/s2/encoded_uint_vector_test.cc +124 -0
  91. package/third_party/s2geometry/src/s2/id_set_lexicon.cc +81 -0
  92. package/third_party/s2geometry/src/s2/id_set_lexicon.h +199 -0
  93. package/third_party/s2geometry/src/s2/id_set_lexicon_test.cc +70 -0
  94. package/third_party/s2geometry/src/s2/mutable_s2shape_index.cc +1585 -0
  95. package/third_party/s2geometry/src/s2/mutable_s2shape_index.h +600 -0
  96. package/third_party/s2geometry/src/s2/mutable_s2shape_index_test.cc +589 -0
  97. package/third_party/s2geometry/src/s2/r1interval.h +220 -0
  98. package/third_party/s2geometry/src/s2/r1interval_test.cc +185 -0
  99. package/third_party/s2geometry/src/s2/r2.h +26 -0
  100. package/third_party/s2geometry/src/s2/r2rect.cc +93 -0
  101. package/third_party/s2geometry/src/s2/r2rect.h +234 -0
  102. package/third_party/s2geometry/src/s2/r2rect_test.cc +228 -0
  103. package/third_party/s2geometry/src/s2/s1angle.cc +54 -0
  104. package/third_party/s2geometry/src/s2/s1angle.h +336 -0
  105. package/third_party/s2geometry/src/s2/s1angle_test.cc +185 -0
  106. package/third_party/s2geometry/src/s2/s1chord_angle.cc +159 -0
  107. package/third_party/s2geometry/src/s2/s1chord_angle.h +369 -0
  108. package/third_party/s2geometry/src/s2/s1chord_angle_test.cc +207 -0
  109. package/third_party/s2geometry/src/s2/s1interval.cc +296 -0
  110. package/third_party/s2geometry/src/s2/s1interval.h +266 -0
  111. package/third_party/s2geometry/src/s2/s1interval_test.cc +469 -0
  112. package/third_party/s2geometry/src/s2/s2boolean_operation.cc +2391 -0
  113. package/third_party/s2geometry/src/s2/s2boolean_operation.h +501 -0
  114. package/third_party/s2geometry/src/s2/s2boolean_operation_test.cc +1400 -0
  115. package/third_party/s2geometry/src/s2/s2builder.cc +1828 -0
  116. package/third_party/s2geometry/src/s2/s2builder.h +1057 -0
  117. package/third_party/s2geometry/src/s2/s2builder_graph.cc +1084 -0
  118. package/third_party/s2geometry/src/s2/s2builder_graph.h +799 -0
  119. package/third_party/s2geometry/src/s2/s2builder_graph_test.cc +462 -0
  120. package/third_party/s2geometry/src/s2/s2builder_layer.h +50 -0
  121. package/third_party/s2geometry/src/s2/s2builder_test.cc +1329 -0
  122. package/third_party/s2geometry/src/s2/s2builderutil_closed_set_normalizer.cc +313 -0
  123. package/third_party/s2geometry/src/s2/s2builderutil_closed_set_normalizer.h +221 -0
  124. package/third_party/s2geometry/src/s2/s2builderutil_closed_set_normalizer_test.cc +261 -0
  125. package/third_party/s2geometry/src/s2/s2builderutil_find_polygon_degeneracies.cc +392 -0
  126. package/third_party/s2geometry/src/s2/s2builderutil_find_polygon_degeneracies.h +86 -0
  127. package/third_party/s2geometry/src/s2/s2builderutil_find_polygon_degeneracies_test.cc +182 -0
  128. package/third_party/s2geometry/src/s2/s2builderutil_graph_shape.h +57 -0
  129. package/third_party/s2geometry/src/s2/s2builderutil_lax_polygon_layer.cc +212 -0
  130. package/third_party/s2geometry/src/s2/s2builderutil_lax_polygon_layer.h +218 -0
  131. package/third_party/s2geometry/src/s2/s2builderutil_lax_polygon_layer_test.cc +367 -0
  132. package/third_party/s2geometry/src/s2/s2builderutil_s2point_vector_layer.cc +74 -0
  133. package/third_party/s2geometry/src/s2/s2builderutil_s2point_vector_layer.h +122 -0
  134. package/third_party/s2geometry/src/s2/s2builderutil_s2point_vector_layer_test.cc +167 -0
  135. package/third_party/s2geometry/src/s2/s2builderutil_s2polygon_layer.cc +191 -0
  136. package/third_party/s2geometry/src/s2/s2builderutil_s2polygon_layer.h +211 -0
  137. package/third_party/s2geometry/src/s2/s2builderutil_s2polygon_layer_test.cc +312 -0
  138. package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_layer.cc +105 -0
  139. package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_layer.h +174 -0
  140. package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_layer_test.cc +220 -0
  141. package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_vector_layer.cc +98 -0
  142. package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_vector_layer.h +292 -0
  143. package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_vector_layer_test.cc +233 -0
  144. package/third_party/s2geometry/src/s2/s2builderutil_snap_functions.cc +354 -0
  145. package/third_party/s2geometry/src/s2/s2builderutil_snap_functions.h +239 -0
  146. package/third_party/s2geometry/src/s2/s2builderutil_snap_functions_test.cc +716 -0
  147. package/third_party/s2geometry/src/s2/s2builderutil_testing.cc +37 -0
  148. package/third_party/s2geometry/src/s2/s2builderutil_testing.h +100 -0
  149. package/third_party/s2geometry/src/s2/s2builderutil_testing_test.cc +85 -0
  150. package/third_party/s2geometry/src/s2/s2cap.cc +347 -0
  151. package/third_party/s2geometry/src/s2/s2cap.h +286 -0
  152. package/third_party/s2geometry/src/s2/s2cap_test.cc +379 -0
  153. package/third_party/s2geometry/src/s2/s2cell.cc +552 -0
  154. package/third_party/s2geometry/src/s2/s2cell.h +249 -0
  155. package/third_party/s2geometry/src/s2/s2cell_id.cc +619 -0
  156. package/third_party/s2geometry/src/s2/s2cell_id.h +705 -0
  157. package/third_party/s2geometry/src/s2/s2cell_id_test.cc +633 -0
  158. package/third_party/s2geometry/src/s2/s2cell_index.cc +149 -0
  159. package/third_party/s2geometry/src/s2/s2cell_index.h +660 -0
  160. package/third_party/s2geometry/src/s2/s2cell_index_test.cc +411 -0
  161. package/third_party/s2geometry/src/s2/s2cell_test.cc +687 -0
  162. package/third_party/s2geometry/src/s2/s2cell_union.cc +515 -0
  163. package/third_party/s2geometry/src/s2/s2cell_union.h +399 -0
  164. package/third_party/s2geometry/src/s2/s2cell_union_test.cc +598 -0
  165. package/third_party/s2geometry/src/s2/s2centroids.cc +84 -0
  166. package/third_party/s2geometry/src/s2/s2centroids.h +87 -0
  167. package/third_party/s2geometry/src/s2/s2centroids_test.cc +82 -0
  168. package/third_party/s2geometry/src/s2/s2closest_cell_query.cc +123 -0
  169. package/third_party/s2geometry/src/s2/s2closest_cell_query.h +385 -0
  170. package/third_party/s2geometry/src/s2/s2closest_cell_query_base.h +841 -0
  171. package/third_party/s2geometry/src/s2/s2closest_cell_query_base_test.cc +63 -0
  172. package/third_party/s2geometry/src/s2/s2closest_cell_query_test.cc +412 -0
  173. package/third_party/s2geometry/src/s2/s2closest_edge_query.cc +106 -0
  174. package/third_party/s2geometry/src/s2/s2closest_edge_query.h +421 -0
  175. package/third_party/s2geometry/src/s2/s2closest_edge_query_base.h +946 -0
  176. package/third_party/s2geometry/src/s2/s2closest_edge_query_base_test.cc +59 -0
  177. package/third_party/s2geometry/src/s2/s2closest_edge_query_test.cc +505 -0
  178. package/third_party/s2geometry/src/s2/s2closest_edge_query_testing.h +91 -0
  179. package/third_party/s2geometry/src/s2/s2closest_point_query.cc +66 -0
  180. package/third_party/s2geometry/src/s2/s2closest_point_query.h +465 -0
  181. package/third_party/s2geometry/src/s2/s2closest_point_query_base.h +767 -0
  182. package/third_party/s2geometry/src/s2/s2closest_point_query_base_test.cc +63 -0
  183. package/third_party/s2geometry/src/s2/s2closest_point_query_test.cc +312 -0
  184. package/third_party/s2geometry/src/s2/s2contains_point_query.h +328 -0
  185. package/third_party/s2geometry/src/s2/s2contains_point_query_test.cc +159 -0
  186. package/third_party/s2geometry/src/s2/s2contains_vertex_query.cc +39 -0
  187. package/third_party/s2geometry/src/s2/s2contains_vertex_query.h +66 -0
  188. package/third_party/s2geometry/src/s2/s2contains_vertex_query_test.cc +67 -0
  189. package/third_party/s2geometry/src/s2/s2convex_hull_query.cc +198 -0
  190. package/third_party/s2geometry/src/s2/s2convex_hull_query.h +110 -0
  191. package/third_party/s2geometry/src/s2/s2convex_hull_query_test.cc +208 -0
  192. package/third_party/s2geometry/src/s2/s2coords.cc +146 -0
  193. package/third_party/s2geometry/src/s2/s2coords.h +459 -0
  194. package/third_party/s2geometry/src/s2/s2coords_internal.h +71 -0
  195. package/third_party/s2geometry/src/s2/s2coords_test.cc +218 -0
  196. package/third_party/s2geometry/src/s2/s2crossing_edge_query.cc +380 -0
  197. package/third_party/s2geometry/src/s2/s2crossing_edge_query.h +220 -0
  198. package/third_party/s2geometry/src/s2/s2crossing_edge_query_test.cc +382 -0
  199. package/third_party/s2geometry/src/s2/s2debug.cc +23 -0
  200. package/third_party/s2geometry/src/s2/s2debug.h +69 -0
  201. package/third_party/s2geometry/src/s2/s2distance_target.h +165 -0
  202. package/third_party/s2geometry/src/s2/s2earth.cc +52 -0
  203. package/third_party/s2geometry/src/s2/s2earth.h +268 -0
  204. package/third_party/s2geometry/src/s2/s2earth_test.cc +146 -0
  205. package/third_party/s2geometry/src/s2/s2edge_clipping.cc +462 -0
  206. package/third_party/s2geometry/src/s2/s2edge_clipping.h +183 -0
  207. package/third_party/s2geometry/src/s2/s2edge_clipping_test.cc +335 -0
  208. package/third_party/s2geometry/src/s2/s2edge_crosser.cc +85 -0
  209. package/third_party/s2geometry/src/s2/s2edge_crosser.h +343 -0
  210. package/third_party/s2geometry/src/s2/s2edge_crosser_test.cc +264 -0
  211. package/third_party/s2geometry/src/s2/s2edge_crossings.cc +515 -0
  212. package/third_party/s2geometry/src/s2/s2edge_crossings.h +138 -0
  213. package/third_party/s2geometry/src/s2/s2edge_crossings_internal.h +59 -0
  214. package/third_party/s2geometry/src/s2/s2edge_crossings_test.cc +246 -0
  215. package/third_party/s2geometry/src/s2/s2edge_distances.cc +419 -0
  216. package/third_party/s2geometry/src/s2/s2edge_distances.h +192 -0
  217. package/third_party/s2geometry/src/s2/s2edge_distances_test.cc +539 -0
  218. package/third_party/s2geometry/src/s2/s2edge_tessellator.cc +276 -0
  219. package/third_party/s2geometry/src/s2/s2edge_tessellator.h +101 -0
  220. package/third_party/s2geometry/src/s2/s2edge_tessellator_test.cc +492 -0
  221. package/third_party/s2geometry/src/s2/s2edge_vector_shape.h +85 -0
  222. package/third_party/s2geometry/src/s2/s2edge_vector_shape_test.cc +66 -0
  223. package/third_party/s2geometry/src/s2/s2error.cc +29 -0
  224. package/third_party/s2geometry/src/s2/s2error.h +147 -0
  225. package/third_party/s2geometry/src/s2/s2error_test.cc +31 -0
  226. package/third_party/s2geometry/src/s2/s2furthest_edge_query.cc +117 -0
  227. package/third_party/s2geometry/src/s2/s2furthest_edge_query.h +439 -0
  228. package/third_party/s2geometry/src/s2/s2furthest_edge_query_test.cc +487 -0
  229. package/third_party/s2geometry/src/s2/s2latlng.cc +90 -0
  230. package/third_party/s2geometry/src/s2/s2latlng.h +234 -0
  231. package/third_party/s2geometry/src/s2/s2latlng_rect.cc +727 -0
  232. package/third_party/s2geometry/src/s2/s2latlng_rect.h +434 -0
  233. package/third_party/s2geometry/src/s2/s2latlng_rect_bounder.cc +344 -0
  234. package/third_party/s2geometry/src/s2/s2latlng_rect_bounder.h +89 -0
  235. package/third_party/s2geometry/src/s2/s2latlng_rect_bounder_test.cc +306 -0
  236. package/third_party/s2geometry/src/s2/s2latlng_rect_test.cc +1030 -0
  237. package/third_party/s2geometry/src/s2/s2latlng_test.cc +165 -0
  238. package/third_party/s2geometry/src/s2/s2lax_loop_shape.cc +104 -0
  239. package/third_party/s2geometry/src/s2/s2lax_loop_shape.h +153 -0
  240. package/third_party/s2geometry/src/s2/s2lax_loop_shape_test.cc +101 -0
  241. package/third_party/s2geometry/src/s2/s2lax_polygon_shape.cc +348 -0
  242. package/third_party/s2geometry/src/s2/s2lax_polygon_shape.h +183 -0
  243. package/third_party/s2geometry/src/s2/s2lax_polygon_shape_test.cc +234 -0
  244. package/third_party/s2geometry/src/s2/s2lax_polyline_shape.cc +118 -0
  245. package/third_party/s2geometry/src/s2/s2lax_polyline_shape.h +124 -0
  246. package/third_party/s2geometry/src/s2/s2lax_polyline_shape_test.cc +62 -0
  247. package/third_party/s2geometry/src/s2/s2loop.cc +1509 -0
  248. package/third_party/s2geometry/src/s2/s2loop.h +711 -0
  249. package/third_party/s2geometry/src/s2/s2loop_measures.cc +313 -0
  250. package/third_party/s2geometry/src/s2/s2loop_measures.h +280 -0
  251. package/third_party/s2geometry/src/s2/s2loop_measures_test.cc +367 -0
  252. package/third_party/s2geometry/src/s2/s2loop_test.cc +1371 -0
  253. package/third_party/s2geometry/src/s2/s2max_distance_targets.cc +265 -0
  254. package/third_party/s2geometry/src/s2/s2max_distance_targets.h +241 -0
  255. package/third_party/s2geometry/src/s2/s2max_distance_targets_test.cc +367 -0
  256. package/third_party/s2geometry/src/s2/s2measures.cc +128 -0
  257. package/third_party/s2geometry/src/s2/s2measures.h +78 -0
  258. package/third_party/s2geometry/src/s2/s2measures_test.cc +135 -0
  259. package/third_party/s2geometry/src/s2/s2metrics.cc +122 -0
  260. package/third_party/s2geometry/src/s2/s2metrics.h +199 -0
  261. package/third_party/s2geometry/src/s2/s2metrics_test.cc +127 -0
  262. package/third_party/s2geometry/src/s2/s2min_distance_targets.cc +295 -0
  263. package/third_party/s2geometry/src/s2/s2min_distance_targets.h +273 -0
  264. package/third_party/s2geometry/src/s2/s2min_distance_targets_test.cc +239 -0
  265. package/third_party/s2geometry/src/s2/s2padded_cell.cc +162 -0
  266. package/third_party/s2geometry/src/s2/s2padded_cell.h +108 -0
  267. package/third_party/s2geometry/src/s2/s2padded_cell_test.cc +138 -0
  268. package/third_party/s2geometry/src/s2/s2point.h +38 -0
  269. package/third_party/s2geometry/src/s2/s2point_compression.cc +388 -0
  270. package/third_party/s2geometry/src/s2/s2point_compression.h +78 -0
  271. package/third_party/s2geometry/src/s2/s2point_compression_test.cc +305 -0
  272. package/third_party/s2geometry/src/s2/s2point_index.h +345 -0
  273. package/third_party/s2geometry/src/s2/s2point_index_test.cc +147 -0
  274. package/third_party/s2geometry/src/s2/s2point_region.cc +72 -0
  275. package/third_party/s2geometry/src/s2/s2point_region.h +76 -0
  276. package/third_party/s2geometry/src/s2/s2point_region_test.cc +100 -0
  277. package/third_party/s2geometry/src/s2/s2point_span.h +57 -0
  278. package/third_party/s2geometry/src/s2/s2point_test.cc +47 -0
  279. package/third_party/s2geometry/src/s2/s2point_vector_shape.h +127 -0
  280. package/third_party/s2geometry/src/s2/s2point_vector_shape_test.cc +59 -0
  281. package/third_party/s2geometry/src/s2/s2pointutil.cc +131 -0
  282. package/third_party/s2geometry/src/s2/s2pointutil.h +138 -0
  283. package/third_party/s2geometry/src/s2/s2pointutil_test.cc +157 -0
  284. package/third_party/s2geometry/src/s2/s2polygon.cc +1569 -0
  285. package/third_party/s2geometry/src/s2/s2polygon.h +934 -0
  286. package/third_party/s2geometry/src/s2/s2polygon_test.cc +3025 -0
  287. package/third_party/s2geometry/src/s2/s2polyline.cc +645 -0
  288. package/third_party/s2geometry/src/s2/s2polyline.h +379 -0
  289. package/third_party/s2geometry/src/s2/s2polyline_alignment.cc +414 -0
  290. package/third_party/s2geometry/src/s2/s2polyline_alignment.h +245 -0
  291. package/third_party/s2geometry/src/s2/s2polyline_alignment_internal.h +158 -0
  292. package/third_party/s2geometry/src/s2/s2polyline_alignment_test.cc +610 -0
  293. package/third_party/s2geometry/src/s2/s2polyline_measures.cc +42 -0
  294. package/third_party/s2geometry/src/s2/s2polyline_measures.h +53 -0
  295. package/third_party/s2geometry/src/s2/s2polyline_measures_test.cc +57 -0
  296. package/third_party/s2geometry/src/s2/s2polyline_simplifier.cc +187 -0
  297. package/third_party/s2geometry/src/s2/s2polyline_simplifier.h +109 -0
  298. package/third_party/s2geometry/src/s2/s2polyline_simplifier_test.cc +165 -0
  299. package/third_party/s2geometry/src/s2/s2polyline_test.cc +554 -0
  300. package/third_party/s2geometry/src/s2/s2predicates.cc +1486 -0
  301. package/third_party/s2geometry/src/s2/s2predicates.h +282 -0
  302. package/third_party/s2geometry/src/s2/s2predicates_internal.h +135 -0
  303. package/third_party/s2geometry/src/s2/s2predicates_test.cc +1427 -0
  304. package/third_party/s2geometry/src/s2/s2projections.cc +109 -0
  305. package/third_party/s2geometry/src/s2/s2projections.h +161 -0
  306. package/third_party/s2geometry/src/s2/s2projections_test.cc +78 -0
  307. package/third_party/s2geometry/src/s2/s2r2rect.cc +88 -0
  308. package/third_party/s2geometry/src/s2/s2r2rect.h +292 -0
  309. package/third_party/s2geometry/src/s2/s2r2rect_test.cc +312 -0
  310. package/third_party/s2geometry/src/s2/s2region.cc +26 -0
  311. package/third_party/s2geometry/src/s2/s2region.h +142 -0
  312. package/third_party/s2geometry/src/s2/s2region_coverer.cc +514 -0
  313. package/third_party/s2geometry/src/s2/s2region_coverer.h +356 -0
  314. package/third_party/s2geometry/src/s2/s2region_coverer_test.cc +509 -0
  315. package/third_party/s2geometry/src/s2/s2region_intersection.cc +84 -0
  316. package/third_party/s2geometry/src/s2/s2region_intersection.h +79 -0
  317. package/third_party/s2geometry/src/s2/s2region_term_indexer.cc +270 -0
  318. package/third_party/s2geometry/src/s2/s2region_term_indexer.h +299 -0
  319. package/third_party/s2geometry/src/s2/s2region_term_indexer_test.cc +209 -0
  320. package/third_party/s2geometry/src/s2/s2region_test.cc +370 -0
  321. package/third_party/s2geometry/src/s2/s2region_union.cc +90 -0
  322. package/third_party/s2geometry/src/s2/s2region_union.h +83 -0
  323. package/third_party/s2geometry/src/s2/s2region_union_test.cc +89 -0
  324. package/third_party/s2geometry/src/s2/s2shape.h +283 -0
  325. package/third_party/s2geometry/src/s2/s2shape_index.cc +321 -0
  326. package/third_party/s2geometry/src/s2/s2shape_index.h +781 -0
  327. package/third_party/s2geometry/src/s2/s2shape_index_buffered_region.cc +113 -0
  328. package/third_party/s2geometry/src/s2/s2shape_index_buffered_region.h +135 -0
  329. package/third_party/s2geometry/src/s2/s2shape_index_buffered_region_test.cc +162 -0
  330. package/third_party/s2geometry/src/s2/s2shape_index_measures.cc +92 -0
  331. package/third_party/s2geometry/src/s2/s2shape_index_measures.h +100 -0
  332. package/third_party/s2geometry/src/s2/s2shape_index_measures_test.cc +136 -0
  333. package/third_party/s2geometry/src/s2/s2shape_index_region.h +350 -0
  334. package/third_party/s2geometry/src/s2/s2shape_index_region_test.cc +161 -0
  335. package/third_party/s2geometry/src/s2/s2shape_index_test.cc +24 -0
  336. package/third_party/s2geometry/src/s2/s2shape_measures.cc +138 -0
  337. package/third_party/s2geometry/src/s2/s2shape_measures.h +95 -0
  338. package/third_party/s2geometry/src/s2/s2shape_measures_test.cc +139 -0
  339. package/third_party/s2geometry/src/s2/s2shapeutil_build_polygon_boundaries.cc +120 -0
  340. package/third_party/s2geometry/src/s2/s2shapeutil_build_polygon_boundaries.h +66 -0
  341. package/third_party/s2geometry/src/s2/s2shapeutil_build_polygon_boundaries_test.cc +170 -0
  342. package/third_party/s2geometry/src/s2/s2shapeutil_coding.cc +253 -0
  343. package/third_party/s2geometry/src/s2/s2shapeutil_coding.h +283 -0
  344. package/third_party/s2geometry/src/s2/s2shapeutil_coding_test.cc +54 -0
  345. package/third_party/s2geometry/src/s2/s2shapeutil_contains_brute_force.cc +40 -0
  346. package/third_party/s2geometry/src/s2/s2shapeutil_contains_brute_force.h +41 -0
  347. package/third_party/s2geometry/src/s2/s2shapeutil_contains_brute_force_test.cc +55 -0
  348. package/third_party/s2geometry/src/s2/s2shapeutil_count_edges.h +57 -0
  349. package/third_party/s2geometry/src/s2/s2shapeutil_count_edges_test.cc +43 -0
  350. package/third_party/s2geometry/src/s2/s2shapeutil_edge_iterator.cc +45 -0
  351. package/third_party/s2geometry/src/s2/s2shapeutil_edge_iterator.h +72 -0
  352. package/third_party/s2geometry/src/s2/s2shapeutil_edge_iterator_test.cc +116 -0
  353. package/third_party/s2geometry/src/s2/s2shapeutil_get_reference_point.cc +107 -0
  354. package/third_party/s2geometry/src/s2/s2shapeutil_get_reference_point.h +48 -0
  355. package/third_party/s2geometry/src/s2/s2shapeutil_get_reference_point_test.cc +104 -0
  356. package/third_party/s2geometry/src/s2/s2shapeutil_range_iterator.cc +58 -0
  357. package/third_party/s2geometry/src/s2/s2shapeutil_range_iterator.h +65 -0
  358. package/third_party/s2geometry/src/s2/s2shapeutil_range_iterator_test.cc +61 -0
  359. package/third_party/s2geometry/src/s2/s2shapeutil_shape_edge.h +58 -0
  360. package/third_party/s2geometry/src/s2/s2shapeutil_shape_edge_id.h +97 -0
  361. package/third_party/s2geometry/src/s2/s2shapeutil_testing.cc +104 -0
  362. package/third_party/s2geometry/src/s2/s2shapeutil_testing.h +36 -0
  363. package/third_party/s2geometry/src/s2/s2shapeutil_visit_crossing_edge_pairs.cc +440 -0
  364. package/third_party/s2geometry/src/s2/s2shapeutil_visit_crossing_edge_pairs.h +72 -0
  365. package/third_party/s2geometry/src/s2/s2shapeutil_visit_crossing_edge_pairs_test.cc +184 -0
  366. package/third_party/s2geometry/src/s2/s2testing.cc +464 -0
  367. package/third_party/s2geometry/src/s2/s2testing.h +385 -0
  368. package/third_party/s2geometry/src/s2/s2testing_test.cc +166 -0
  369. package/third_party/s2geometry/src/s2/s2text_format.cc +506 -0
  370. package/third_party/s2geometry/src/s2/s2text_format.h +289 -0
  371. package/third_party/s2geometry/src/s2/s2text_format_test.cc +417 -0
  372. package/third_party/s2geometry/src/s2/s2wedge_relations.cc +80 -0
  373. package/third_party/s2geometry/src/s2/s2wedge_relations.h +64 -0
  374. package/third_party/s2geometry/src/s2/s2wedge_relations_test.cc +89 -0
  375. package/third_party/s2geometry/src/s2/sequence_lexicon.h +296 -0
  376. package/third_party/s2geometry/src/s2/sequence_lexicon_test.cc +113 -0
  377. package/third_party/s2geometry/src/s2/strings/ostringstream.cc +35 -0
  378. package/third_party/s2geometry/src/s2/strings/ostringstream.h +105 -0
  379. package/third_party/s2geometry/src/s2/strings/serialize.cc +46 -0
  380. package/third_party/s2geometry/src/s2/strings/serialize.h +40 -0
  381. package/third_party/s2geometry/src/s2/third_party/absl/algorithm/algorithm.h +187 -0
  382. package/third_party/s2geometry/src/s2/third_party/absl/base/attributes.h +666 -0
  383. package/third_party/s2geometry/src/s2/third_party/absl/base/casts.h +189 -0
  384. package/third_party/s2geometry/src/s2/third_party/absl/base/config.h +462 -0
  385. package/third_party/s2geometry/src/s2/third_party/absl/base/dynamic_annotations.cc +129 -0
  386. package/third_party/s2geometry/src/s2/third_party/absl/base/dynamic_annotations.h +394 -0
  387. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/atomic_hook.h +168 -0
  388. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/identity.h +33 -0
  389. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/inline_variable.h +117 -0
  390. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/invoke.h +188 -0
  391. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/raw_logging.cc +254 -0
  392. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/raw_logging.h +205 -0
  393. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/throw_delegate.cc +106 -0
  394. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/throw_delegate.h +71 -0
  395. package/third_party/s2geometry/src/s2/third_party/absl/base/internal/unaligned_access.h +322 -0
  396. package/third_party/s2geometry/src/s2/third_party/absl/base/log_severity.h +77 -0
  397. package/third_party/s2geometry/src/s2/third_party/absl/base/macros.h +236 -0
  398. package/third_party/s2geometry/src/s2/third_party/absl/base/optimization.h +177 -0
  399. package/third_party/s2geometry/src/s2/third_party/absl/base/policy_checks.h +124 -0
  400. package/third_party/s2geometry/src/s2/third_party/absl/base/port.h +97 -0
  401. package/third_party/s2geometry/src/s2/third_party/absl/base/thread_annotations.h +277 -0
  402. package/third_party/s2geometry/src/s2/third_party/absl/container/fixed_array.h +523 -0
  403. package/third_party/s2geometry/src/s2/third_party/absl/container/inlined_vector.h +1453 -0
  404. package/third_party/s2geometry/src/s2/third_party/absl/container/internal/compressed_tuple.h +191 -0
  405. package/third_party/s2geometry/src/s2/third_party/absl/container/internal/container_memory.h +424 -0
  406. package/third_party/s2geometry/src/s2/third_party/absl/container/internal/layout.h +739 -0
  407. package/third_party/s2geometry/src/s2/third_party/absl/memory/memory.h +755 -0
  408. package/third_party/s2geometry/src/s2/third_party/absl/meta/type_traits.h +436 -0
  409. package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128.cc +232 -0
  410. package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128.h +656 -0
  411. package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128_have_intrinsic.inc +3 -0
  412. package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128_no_intrinsic.inc +3 -0
  413. package/third_party/s2geometry/src/s2/third_party/absl/strings/ascii.cc +198 -0
  414. package/third_party/s2geometry/src/s2/third_party/absl/strings/ascii.h +239 -0
  415. package/third_party/s2geometry/src/s2/third_party/absl/strings/ascii_ctype.h +66 -0
  416. package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/bits.h +53 -0
  417. package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/memutil.cc +110 -0
  418. package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/memutil.h +146 -0
  419. package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/resize_uninitialized.h +72 -0
  420. package/third_party/s2geometry/src/s2/third_party/absl/strings/match.cc +38 -0
  421. package/third_party/s2geometry/src/s2/third_party/absl/strings/match.h +89 -0
  422. package/third_party/s2geometry/src/s2/third_party/absl/strings/numbers.cc +909 -0
  423. package/third_party/s2geometry/src/s2/third_party/absl/strings/numbers.h +187 -0
  424. package/third_party/s2geometry/src/s2/third_party/absl/strings/str_cat.cc +240 -0
  425. package/third_party/s2geometry/src/s2/third_party/absl/strings/str_cat.h +398 -0
  426. package/third_party/s2geometry/src/s2/third_party/absl/strings/str_join.h +22 -0
  427. package/third_party/s2geometry/src/s2/third_party/absl/strings/str_split.cc +47 -0
  428. package/third_party/s2geometry/src/s2/third_party/absl/strings/str_split.h +43 -0
  429. package/third_party/s2geometry/src/s2/third_party/absl/strings/string_view.cc +245 -0
  430. package/third_party/s2geometry/src/s2/third_party/absl/strings/string_view.h +602 -0
  431. package/third_party/s2geometry/src/s2/third_party/absl/strings/strip.cc +42 -0
  432. package/third_party/s2geometry/src/s2/third_party/absl/strings/strip.h +130 -0
  433. package/third_party/s2geometry/src/s2/third_party/absl/types/span.h +793 -0
  434. package/third_party/s2geometry/src/s2/third_party/absl/utility/utility.h +299 -0
  435. package/third_party/s2geometry/src/s2/util/bits/bit-interleave.cc +274 -0
  436. package/third_party/s2geometry/src/s2/util/bits/bit-interleave.h +53 -0
  437. package/third_party/s2geometry/src/s2/util/bits/bits.cc +155 -0
  438. package/third_party/s2geometry/src/s2/util/bits/bits.h +745 -0
  439. package/third_party/s2geometry/src/s2/util/coding/coder.cc +83 -0
  440. package/third_party/s2geometry/src/s2/util/coding/coder.h +553 -0
  441. package/third_party/s2geometry/src/s2/util/coding/nth-derivative.h +134 -0
  442. package/third_party/s2geometry/src/s2/util/coding/transforms.h +62 -0
  443. package/third_party/s2geometry/src/s2/util/coding/varint.cc +289 -0
  444. package/third_party/s2geometry/src/s2/util/coding/varint.h +476 -0
  445. package/third_party/s2geometry/src/s2/util/endian/endian.h +859 -0
  446. package/third_party/s2geometry/src/s2/util/gtl/btree.h +2471 -0
  447. package/third_party/s2geometry/src/s2/util/gtl/btree_container.h +411 -0
  448. package/third_party/s2geometry/src/s2/util/gtl/btree_map.h +79 -0
  449. package/third_party/s2geometry/src/s2/util/gtl/btree_set.h +73 -0
  450. package/third_party/s2geometry/src/s2/util/gtl/compact_array.h +653 -0
  451. package/third_party/s2geometry/src/s2/util/gtl/container_logging.h +291 -0
  452. package/third_party/s2geometry/src/s2/util/gtl/dense_hash_set.h +358 -0
  453. package/third_party/s2geometry/src/s2/util/gtl/densehashtable.h +1493 -0
  454. package/third_party/s2geometry/src/s2/util/gtl/hashtable_common.h +253 -0
  455. package/third_party/s2geometry/src/s2/util/gtl/layout.h +28 -0
  456. package/third_party/s2geometry/src/s2/util/gtl/legacy_random_shuffle.h +77 -0
  457. package/third_party/s2geometry/src/s2/util/hash/mix.h +76 -0
  458. package/third_party/s2geometry/src/s2/util/math/exactfloat/exactfloat.cc +832 -0
  459. package/third_party/s2geometry/src/s2/util/math/exactfloat/exactfloat.h +646 -0
  460. package/third_party/s2geometry/src/s2/util/math/mathutil.cc +75 -0
  461. package/third_party/s2geometry/src/s2/util/math/mathutil.h +189 -0
  462. package/third_party/s2geometry/src/s2/util/math/matrix3x3.h +574 -0
  463. package/third_party/s2geometry/src/s2/util/math/vector.h +569 -0
  464. package/third_party/s2geometry/src/s2/util/math/vector3_hash.h +54 -0
  465. package/third_party/s2geometry/src/s2/util/units/length-units.cc +21 -0
  466. package/third_party/s2geometry/src/s2/util/units/length-units.h +135 -0
  467. package/third_party/s2geometry/src/s2/util/units/physical-units.h +313 -0
  468. package/third_party/s2geometry/src/s2/value_lexicon.h +234 -0
  469. package/third_party/s2geometry/src/s2/value_lexicon_test.cc +121 -0
  470. package/third_party/s2geometry/third_party/cmake/FindGFlags.cmake +48 -0
  471. package/third_party/s2geometry/third_party/cmake/FindGlog.cmake +48 -0
@@ -0,0 +1,33 @@
1
+ // Copyright 2017 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+
16
+ #ifndef S2_THIRD_PARTY_ABSL_BASE_INTERNAL_IDENTITY_H_
17
+ #define S2_THIRD_PARTY_ABSL_BASE_INTERNAL_IDENTITY_H_
18
+
19
+ namespace absl {
20
+ namespace internal {
21
+
22
+ template <typename T>
23
+ struct identity {
24
+ typedef T type;
25
+ };
26
+
27
+ template <typename T>
28
+ using identity_t = typename identity<T>::type;
29
+
30
+ } // namespace internal
31
+ } // namespace absl
32
+
33
+ #endif // S2_THIRD_PARTY_ABSL_BASE_INTERNAL_IDENTITY_H_
@@ -0,0 +1,117 @@
1
+ // Copyright 2017 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #ifndef S2_THIRD_PARTY_ABSL_BASE_INTERNAL_INLINE_VARIABLE_EMULATION_H_
16
+ #define S2_THIRD_PARTY_ABSL_BASE_INTERNAL_INLINE_VARIABLE_EMULATION_H_
17
+
18
+ #include <type_traits>
19
+
20
+ #include "s2/third_party/absl/base/internal/identity.h"
21
+
22
+ // File:
23
+ // This file define a macro that allows the creation of or emulation of C++17
24
+ // inline variables based on whether or not the feature is supported.
25
+
26
+ ////////////////////////////////////////////////////////////////////////////////
27
+ // Macro: ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init)
28
+ //
29
+ // Description:
30
+ // Expands to the equivalent of an inline constexpr instance of the specified
31
+ // `type` and `name`, initialized to the value `init`. If the compiler being
32
+ // used is detected as supporting actual inline variables as a language
33
+ // feature, then the macro expands to an actual inline variable definition.
34
+ //
35
+ // Requires:
36
+ // `type` is a type that is usable in an extern variable declaration.
37
+ //
38
+ // Requires: `name` is a valid identifier
39
+ //
40
+ // Requires:
41
+ // `init` is an expression that can be used in the following definition:
42
+ // constexpr type name = init;
43
+ //
44
+ // Usage:
45
+ //
46
+ // // Equivalent to: `inline constexpr size_t variant_npos = -1;`
47
+ // ABSL_INTERNAL_INLINE_CONSTEXPR(size_t, variant_npos, -1);
48
+ //
49
+ // Differences in implementation:
50
+ // For a direct, language-level inline variable, decltype(name) will be the
51
+ // type that was specified along with const qualification, whereas for
52
+ // emulated inline variables, decltype(name) may be different (in practice
53
+ // it will likely be a reference type).
54
+ ////////////////////////////////////////////////////////////////////////////////
55
+
56
+ #ifdef __cpp_inline_variables
57
+
58
+ // Clang's -Wmissing-variable-declarations option erroneously warned that
59
+ // inline constexpr objects need to be pre-declared. This has now been fixed,
60
+ // but we will need to support this workaround for people building with older
61
+ // versions of clang.
62
+ //
63
+ // Bug: https://bugs.llvm.org/show_bug.cgi?id=35862
64
+ //
65
+ // Note:
66
+ // identity_t is used here so that the const and name are in the
67
+ // appropriate place for pointer types, reference types, function pointer
68
+ // types, etc..
69
+ #if defined(__clang__)
70
+ #define ABSL_INTERNAL_EXTERN_DECL(type, name) \
71
+ extern const ::absl::internal::identity_t<type> name;
72
+ #else // Otherwise, just define the macro to do nothing.
73
+ #define ABSL_INTERNAL_EXTERN_DECL(type, name)
74
+ #endif // defined(__clang__)
75
+
76
+ // See above comment at top of file for details.
77
+ #define ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init) \
78
+ ABSL_INTERNAL_EXTERN_DECL(type, name) \
79
+ inline constexpr ::absl::internal::identity_t<type> name = init
80
+
81
+ #ifdef __clang__
82
+ #undef ABSL_INTERNAL_INLINE_CONSTEXPR
83
+ #define ABSL_INTERNAL_INLINE_CONSTEXPR(type, name, init) \
84
+ ABSL_INTERNAL_EXTERN_DECL(type, name) \
85
+ _Pragma("clang diagnostic push") \
86
+ _Pragma("clang diagnostic ignored \"-Wc++98-c++11-c++14-compat\"") \
87
+ inline constexpr ::absl::internal::identity_t<type> name = init \
88
+ _Pragma("clang diagnostic pop")
89
+ #endif // __clang__
90
+
91
+ #else
92
+
93
+ // See above comment at top of file for details.
94
+ //
95
+ // Note:
96
+ // identity_t is used here so that the const and name are in the
97
+ // appropriate place for pointer types, reference types, function pointer
98
+ // types, etc..
99
+ #define ABSL_INTERNAL_INLINE_CONSTEXPR(var_type, name, init) \
100
+ template <class /*AbslInternalDummy*/ = void> \
101
+ struct AbslInternalInlineVariableHolder##name { \
102
+ static constexpr ::absl::internal::identity_t<var_type> kInstance = init; \
103
+ }; \
104
+ \
105
+ template <class AbslInternalDummy> \
106
+ constexpr ::absl::internal::identity_t<var_type> \
107
+ AbslInternalInlineVariableHolder##name<AbslInternalDummy>::kInstance; \
108
+ \
109
+ static constexpr const ::absl::internal::identity_t<var_type>& \
110
+ name = /* NOLINT */ \
111
+ AbslInternalInlineVariableHolder##name<>::kInstance; \
112
+ static_assert(sizeof(void (*)(decltype(name))) != 0, \
113
+ "Silence unused variable warnings.")
114
+
115
+ #endif // __cpp_inline_variables
116
+
117
+ #endif // S2_THIRD_PARTY_ABSL_BASE_INTERNAL_INLINE_VARIABLE_EMULATION_H_
@@ -0,0 +1,188 @@
1
+ // Copyright 2017 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+ //
15
+ // absl::base_internal::Invoke(f, args...) is an implementation of
16
+ // INVOKE(f, args...) from section [func.require] of the C++ standard.
17
+ //
18
+ // [func.require]
19
+ // Define INVOKE (f, t1, t2, ..., tN) as follows:
20
+ // 1. (t1.*f)(t2, ..., tN) when f is a pointer to a member function of a class T
21
+ // and t1 is an object of type T or a reference to an object of type T or a
22
+ // reference to an object of a type derived from T;
23
+ // 2. ((*t1).*f)(t2, ..., tN) when f is a pointer to a member function of a
24
+ // class T and t1 is not one of the types described in the previous item;
25
+ // 3. t1.*f when N == 1 and f is a pointer to member data of a class T and t1 is
26
+ // an object of type T or a reference to an object of type T or a reference
27
+ // to an object of a type derived from T;
28
+ // 4. (*t1).*f when N == 1 and f is a pointer to member data of a class T and t1
29
+ // is not one of the types described in the previous item;
30
+ // 5. f(t1, t2, ..., tN) in all other cases.
31
+ //
32
+ // The implementation is SFINAE-friendly: substitution failure within Invoke()
33
+ // isn't an error.
34
+
35
+ #ifndef S2_THIRD_PARTY_ABSL_BASE_INTERNAL_INVOKE_H_
36
+ #define S2_THIRD_PARTY_ABSL_BASE_INTERNAL_INVOKE_H_
37
+
38
+ #include <algorithm>
39
+ #include <type_traits>
40
+ #include <utility>
41
+
42
+ // The following code is internal implementation detail. See the comment at the
43
+ // top of this file for the API documentation.
44
+
45
+ namespace absl {
46
+ namespace base_internal {
47
+
48
+ // The five classes below each implement one of the clauses from the definition
49
+ // of INVOKE. The inner class template Accept<F, Args...> checks whether the
50
+ // clause is applicable; static function template Invoke(f, args...) does the
51
+ // invocation.
52
+ //
53
+ // By separating the clause selection logic from invocation we make sure that
54
+ // Invoke() does exactly what the standard says.
55
+
56
+ template <typename Derived>
57
+ struct StrippedAccept {
58
+ template <typename... Args>
59
+ struct Accept : Derived::template AcceptImpl<typename std::remove_cv<
60
+ typename std::remove_reference<Args>::type>::type...> {};
61
+ };
62
+
63
+ // (t1.*f)(t2, ..., tN) when f is a pointer to a member function of a class T
64
+ // and t1 is an object of type T or a reference to an object of type T or a
65
+ // reference to an object of a type derived from T.
66
+ struct MemFunAndRef : StrippedAccept<MemFunAndRef> {
67
+ template <typename... Args>
68
+ struct AcceptImpl : std::false_type {};
69
+
70
+ template <typename R, typename C, typename... Params, typename Obj,
71
+ typename... Args>
72
+ struct AcceptImpl<R (C::*)(Params...), Obj, Args...>
73
+ : std::is_base_of<C, Obj> {};
74
+
75
+ template <typename R, typename C, typename... Params, typename Obj,
76
+ typename... Args>
77
+ struct AcceptImpl<R (C::*)(Params...) const, Obj, Args...>
78
+ : std::is_base_of<C, Obj> {};
79
+
80
+ template <typename MemFun, typename Obj, typename... Args>
81
+ static decltype((std::declval<Obj>().*
82
+ std::declval<MemFun>())(std::declval<Args>()...))
83
+ Invoke(MemFun&& mem_fun, Obj&& obj, Args&&... args) {
84
+ return (std::forward<Obj>(obj).*
85
+ std::forward<MemFun>(mem_fun))(std::forward<Args>(args)...);
86
+ }
87
+ };
88
+
89
+ // ((*t1).*f)(t2, ..., tN) when f is a pointer to a member function of a
90
+ // class T and t1 is not one of the types described in the previous item.
91
+ struct MemFunAndPtr : StrippedAccept<MemFunAndPtr> {
92
+ template <typename... Args>
93
+ struct AcceptImpl : std::false_type {};
94
+
95
+ template <typename R, typename C, typename... Params, typename Ptr,
96
+ typename... Args>
97
+ struct AcceptImpl<R (C::*)(Params...), Ptr, Args...>
98
+ : std::integral_constant<bool, !std::is_base_of<C, Ptr>::value> {};
99
+
100
+ template <typename R, typename C, typename... Params, typename Ptr,
101
+ typename... Args>
102
+ struct AcceptImpl<R (C::*)(Params...) const, Ptr, Args...>
103
+ : std::integral_constant<bool, !std::is_base_of<C, Ptr>::value> {};
104
+
105
+ template <typename MemFun, typename Ptr, typename... Args>
106
+ static decltype(((*std::declval<Ptr>()).*
107
+ std::declval<MemFun>())(std::declval<Args>()...))
108
+ Invoke(MemFun&& mem_fun, Ptr&& ptr, Args&&... args) {
109
+ return ((*std::forward<Ptr>(ptr)).*
110
+ std::forward<MemFun>(mem_fun))(std::forward<Args>(args)...);
111
+ }
112
+ };
113
+
114
+ // t1.*f when N == 1 and f is a pointer to member data of a class T and t1 is
115
+ // an object of type T or a reference to an object of type T or a reference
116
+ // to an object of a type derived from T.
117
+ struct DataMemAndRef : StrippedAccept<DataMemAndRef> {
118
+ template <typename... Args>
119
+ struct AcceptImpl : std::false_type {};
120
+
121
+ template <typename R, typename C, typename Obj>
122
+ struct AcceptImpl<R C::*, Obj> : std::is_base_of<C, Obj> {};
123
+
124
+ template <typename DataMem, typename Ref>
125
+ static decltype(std::declval<Ref>().*std::declval<DataMem>()) Invoke(
126
+ DataMem&& data_mem, Ref&& ref) {
127
+ return std::forward<Ref>(ref).*std::forward<DataMem>(data_mem);
128
+ }
129
+ };
130
+
131
+ // (*t1).*f when N == 1 and f is a pointer to member data of a class T and t1
132
+ // is not one of the types described in the previous item.
133
+ struct DataMemAndPtr : StrippedAccept<DataMemAndPtr> {
134
+ template <typename... Args>
135
+ struct AcceptImpl : std::false_type {};
136
+
137
+ template <typename R, typename C, typename Ptr>
138
+ struct AcceptImpl<R C::*, Ptr>
139
+ : std::integral_constant<bool, !std::is_base_of<C, Ptr>::value> {};
140
+
141
+ template <typename DataMem, typename Ptr>
142
+ static decltype((*std::declval<Ptr>()).*std::declval<DataMem>()) Invoke(
143
+ DataMem&& data_mem, Ptr&& ptr) {
144
+ return (*std::forward<Ptr>(ptr)).*std::forward<DataMem>(data_mem);
145
+ }
146
+ };
147
+
148
+ // f(t1, t2, ..., tN) in all other cases.
149
+ struct Callable {
150
+ // Callable doesn't have Accept because it's the last clause that gets picked
151
+ // when none of the previous clauses are applicable.
152
+ template <typename F, typename... Args>
153
+ static decltype(std::declval<F>()(std::declval<Args>()...)) Invoke(
154
+ F&& f, Args&&... args) {
155
+ return std::forward<F>(f)(std::forward<Args>(args)...);
156
+ }
157
+ };
158
+
159
+ // Resolves to the first matching clause.
160
+ template <typename... Args>
161
+ struct Invoker {
162
+ typedef typename std::conditional<
163
+ MemFunAndRef::Accept<Args...>::value, MemFunAndRef,
164
+ typename std::conditional<
165
+ MemFunAndPtr::Accept<Args...>::value, MemFunAndPtr,
166
+ typename std::conditional<
167
+ DataMemAndRef::Accept<Args...>::value, DataMemAndRef,
168
+ typename std::conditional<DataMemAndPtr::Accept<Args...>::value,
169
+ DataMemAndPtr, Callable>::type>::type>::
170
+ type>::type type;
171
+ };
172
+
173
+ // The result type of Invoke<F, Args...>.
174
+ template <typename F, typename... Args>
175
+ using InvokeT = decltype(Invoker<F, Args...>::type::Invoke(
176
+ std::declval<F>(), std::declval<Args>()...));
177
+
178
+ // Invoke(f, args...) is an implementation of INVOKE(f, args...) from section
179
+ // [func.require] of the C++ standard.
180
+ template <typename F, typename... Args>
181
+ InvokeT<F, Args...> Invoke(F&& f, Args&&... args) {
182
+ return Invoker<F, Args...>::type::Invoke(std::forward<F>(f),
183
+ std::forward<Args>(args)...);
184
+ }
185
+ } // namespace base_internal
186
+ } // namespace absl
187
+
188
+ #endif // S2_THIRD_PARTY_ABSL_BASE_INTERNAL_INVOKE_H_
@@ -0,0 +1,254 @@
1
+ // Copyright 2017 The Abseil Authors.
2
+ //
3
+ // Licensed under the Apache License, Version 2.0 (the "License");
4
+ // you may not use this file except in compliance with the License.
5
+ // You may obtain a copy of the License at
6
+ //
7
+ // http://www.apache.org/licenses/LICENSE-2.0
8
+ //
9
+ // Unless required by applicable law or agreed to in writing, software
10
+ // distributed under the License is distributed on an "AS IS" BASIS,
11
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ // See the License for the specific language governing permissions and
13
+ // limitations under the License.
14
+
15
+ #include "s2/third_party/absl/base/internal/raw_logging.h"
16
+
17
+ #include <cstddef>
18
+ #include <cstdarg>
19
+ #include <cstdio>
20
+ #include <cstdlib>
21
+ #include <cstring>
22
+
23
+ #include "s2/third_party/absl/base/attributes.h"
24
+ #include "s2/third_party/absl/base/config.h"
25
+ #include "s2/third_party/absl/base/internal/atomic_hook.h"
26
+ #include "s2/third_party/absl/base/log_severity.h"
27
+
28
+ // We know how to perform low-level writes to stderr in POSIX and Windows. For
29
+ // these platforms, we define the token ABSL_LOW_LEVEL_WRITE_SUPPORTED.
30
+ // Much of raw_logging.cc becomes a no-op when we can't output messages,
31
+ // although a FATAL ABSL_RAW_LOG message will still abort the process.
32
+
33
+ // ABSL_HAVE_POSIX_WRITE is defined when the platform provides posix write()
34
+ // (as from unistd.h)
35
+ //
36
+ // This preprocessor token is also defined in raw_io.cc. If you need to copy
37
+ // this, consider moving both to config.h instead.
38
+ #if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__) || \
39
+ defined(__Fuchsia__) || defined(__native_client__) || defined(__ASYLO__)
40
+ #include <unistd.h>
41
+
42
+
43
+ #define ABSL_HAVE_POSIX_WRITE 1
44
+ #define ABSL_LOW_LEVEL_WRITE_SUPPORTED 1
45
+ #else
46
+ #undef ABSL_HAVE_POSIX_WRITE
47
+ #endif
48
+
49
+ // ABSL_HAVE_SYSCALL_WRITE is defined when the platform provides the syscall
50
+ // syscall(SYS_write, /*int*/ fd, /*char* */ buf, /*size_t*/ len);
51
+ // for low level operations that want to avoid libc.
52
+ #if (defined(__linux__) || defined(__FreeBSD__)) && !defined(__ANDROID__)
53
+ #include <sys/syscall.h>
54
+ #define ABSL_HAVE_SYSCALL_WRITE 1
55
+ #define ABSL_LOW_LEVEL_WRITE_SUPPORTED 1
56
+ #else
57
+ #undef ABSL_HAVE_SYSCALL_WRITE
58
+ #endif
59
+
60
+ #ifdef _WIN32
61
+ #include <io.h>
62
+
63
+ #define ABSL_HAVE_RAW_IO 1
64
+ #define ABSL_LOW_LEVEL_WRITE_SUPPORTED 1
65
+ #else
66
+ #undef ABSL_HAVE_RAW_IO
67
+ #endif
68
+
69
+ // TODO(user): We want raw-logging to work on as many platforms as possible.
70
+ // Explicitly #error out when not ABSL_LOW_LEVEL_WRITE_SUPPORTED, except for a
71
+ // whitelisted set of platforms for which we expect not to be able to raw log.
72
+
73
+ ABSL_CONST_INIT static absl::base_internal::AtomicHook<
74
+ absl::raw_logging_internal::LogPrefixHook> log_prefix_hook;
75
+ ABSL_CONST_INIT static absl::base_internal::AtomicHook<
76
+ absl::raw_logging_internal::AbortHook> abort_hook;
77
+
78
+ #ifdef ABSL_LOW_LEVEL_WRITE_SUPPORTED
79
+ static const char kTruncated[] = " ... (message truncated)\n";
80
+
81
+ // sprintf the format to the buffer, adjusting *buf and *size to reflect the
82
+ // consumed bytes, and return whether the message fit without truncation. If
83
+ // truncation occurred, if possible leave room in the buffer for the message
84
+ // kTruncated[].
85
+ inline static bool VADoRawLog(char** buf, int* size, const char* format,
86
+ va_list ap) ABSL_PRINTF_ATTRIBUTE(3, 0);
87
+ inline static bool VADoRawLog(char** buf, int* size,
88
+ const char* format, va_list ap) {
89
+ int n = vsnprintf(*buf, *size, format, ap);
90
+ bool result = true;
91
+ if (n < 0 || n > *size) {
92
+ result = false;
93
+ if (static_cast<size_t>(*size) > sizeof(kTruncated)) {
94
+ n = *size - sizeof(kTruncated); // room for truncation message
95
+ } else {
96
+ n = 0; // no room for truncation message
97
+ }
98
+ }
99
+ *size -= n;
100
+ *buf += n;
101
+ return result;
102
+ }
103
+ #endif // ABSL_LOW_LEVEL_WRITE_SUPPORTED
104
+
105
+ static constexpr int kLogBufSize = 3000;
106
+
107
+ namespace {
108
+
109
+ // CAVEAT: vsnprintf called from *DoRawLog below has some (exotic) code paths
110
+ // that invoke malloc() and getenv() that might acquire some locks.
111
+ // If this becomes a problem we should reimplement a subset of vsnprintf
112
+ // that does not need locks and malloc.
113
+ // E.g. //third_party/clearsilver/core/util/snprintf.c
114
+ // looks like such a reimplementation.
115
+
116
+ // Helper for RawLog below.
117
+ // *DoRawLog writes to *buf of *size and move them past the written portion.
118
+ // It returns true iff there was no overflow or error.
119
+ bool DoRawLog(char** buf, int* size, const char* format, ...)
120
+ ABSL_PRINTF_ATTRIBUTE(3, 4);
121
+ bool DoRawLog(char** buf, int* size, const char* format, ...) {
122
+ va_list ap;
123
+ va_start(ap, format);
124
+ int n = vsnprintf(*buf, *size, format, ap);
125
+ va_end(ap);
126
+ if (n < 0 || n > *size) return false;
127
+ *size -= n;
128
+ *buf += n;
129
+ return true;
130
+ }
131
+
132
+ void RawLogVA(absl::LogSeverity severity, const char* file, int line,
133
+ const char* format, va_list ap) ABSL_PRINTF_ATTRIBUTE(4, 0);
134
+ void RawLogVA(absl::LogSeverity severity, const char* file, int line,
135
+ const char* format, va_list ap) {
136
+ char buffer[kLogBufSize];
137
+ char* buf = buffer;
138
+ int size = sizeof(buffer);
139
+ #ifdef ABSL_LOW_LEVEL_WRITE_SUPPORTED
140
+ bool enabled = true;
141
+ #else
142
+ bool enabled = false;
143
+ #endif
144
+
145
+ #ifdef ABSL_MIN_LOG_LEVEL
146
+ if (static_cast<int>(severity) < ABSL_MIN_LOG_LEVEL &&
147
+ severity < absl::LogSeverity::kFatal) {
148
+ enabled = false;
149
+ }
150
+ #endif
151
+
152
+ auto log_prefix_hook_ptr = log_prefix_hook.Load();
153
+ if (log_prefix_hook_ptr) {
154
+ enabled = log_prefix_hook_ptr(severity, file, line, &buf, &size);
155
+ } else {
156
+ if (enabled) {
157
+ DoRawLog(&buf, &size, "[%s : %d] RAW: ", file, line);
158
+ }
159
+ }
160
+ const char* const prefix_end = buf;
161
+
162
+ #ifdef ABSL_LOW_LEVEL_WRITE_SUPPORTED
163
+ if (enabled) {
164
+ bool no_chop = VADoRawLog(&buf, &size, format, ap);
165
+ if (no_chop) {
166
+ DoRawLog(&buf, &size, "\n");
167
+ } else {
168
+ DoRawLog(&buf, &size, "%s", kTruncated);
169
+ }
170
+ absl::raw_logging_internal::SafeWriteToStderr(buffer, strlen(buffer));
171
+ }
172
+ #else
173
+ static_cast<void>(format);
174
+ static_cast<void>(ap);
175
+ #endif
176
+
177
+ // Abort the process after logging a FATAL message, even if the output itself
178
+ // was suppressed.
179
+ if (severity == absl::LogSeverity::kFatal) {
180
+ abort_hook(file, line, buffer, prefix_end, buffer + kLogBufSize);
181
+ abort();
182
+ }
183
+ }
184
+
185
+ } // namespace
186
+
187
+ namespace absl {
188
+ namespace raw_logging_internal {
189
+ void SafeWriteToStderr(const char *s, size_t len) {
190
+ #if defined(ABSL_HAVE_SYSCALL_WRITE)
191
+ syscall(SYS_write, STDERR_FILENO, s, len);
192
+ #elif defined(ABSL_HAVE_POSIX_WRITE)
193
+ write(STDERR_FILENO, s, len);
194
+ #elif defined(ABSL_HAVE_RAW_IO)
195
+ _write(/* stderr */ 2, s, len);
196
+ #else
197
+ // stderr logging unsupported on this platform
198
+ (void) s;
199
+ (void) len;
200
+ #endif
201
+ }
202
+
203
+ void RawLog(absl::LogSeverity severity, const char* file, int line,
204
+ const char* format, ...) ABSL_PRINTF_ATTRIBUTE(4, 5);
205
+ void RawLog(absl::LogSeverity severity, const char* file, int line,
206
+ const char* format, ...) {
207
+ va_list ap;
208
+ va_start(ap, format);
209
+ RawLogVA(severity, file, line, format, ap);
210
+ va_end(ap);
211
+ }
212
+ void RawLog(int severity, const char* file, int line, const char* format, ...) {
213
+ va_list ap;
214
+ va_start(ap, format);
215
+ RawLogVA(absl::NormalizeLogSeverity(severity), file, line, format, ap);
216
+ va_end(ap);
217
+ }
218
+
219
+ bool RawLoggingFullySupported() {
220
+ #ifdef ABSL_LOW_LEVEL_WRITE_SUPPORTED
221
+ return true;
222
+ #else // !ABSL_LOW_LEVEL_WRITE_SUPPORTED
223
+ return false;
224
+ #endif // !ABSL_LOW_LEVEL_WRITE_SUPPORTED
225
+ }
226
+
227
+ } // namespace raw_logging_internal
228
+ } // namespace absl
229
+
230
+ namespace base_raw_logging {
231
+
232
+ void RawLog(absl::LogSeverity severity, const char* file, int line,
233
+ const char* format, ...) {
234
+ va_list ap;
235
+ va_start(ap, format);
236
+ RawLogVA(severity, file, line, format, ap);
237
+ va_end(ap);
238
+ }
239
+ void RawLog(int severity, const char* file, int line, const char* format, ...) {
240
+ va_list ap;
241
+ va_start(ap, format);
242
+ RawLogVA(absl::NormalizeLogSeverity(severity), file, line, format, ap);
243
+ va_end(ap);
244
+ }
245
+
246
+ void RegisterLogPrefixHook(LogPrefixHook fn) {
247
+ log_prefix_hook.Store(fn);
248
+ }
249
+
250
+ void RegisterAbortHook(AbortHook fn) {
251
+ abort_hook.Store(fn);
252
+ }
253
+ } // namespace base_raw_logging
254
+