@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,756 @@
1
+ // Copyright 2006 Google Inc. All Rights Reserved.
2
+
3
+ // These SWIG definitions are shared between the internal Google and external
4
+ // open source releases of s2.
5
+
6
+ %{
7
+ #include <sstream>
8
+ #include <string>
9
+
10
+ #include "s2/s2cell_id.h"
11
+ #include "s2/s2region.h"
12
+ #include "s2/s2cap.h"
13
+ #include "s2/s2edge_crossings.h"
14
+ #include "s2/s2earth.h"
15
+ #include "s2/s2latlng.h"
16
+ #include "s2/s2latlng_rect.h"
17
+ #include "s2/s2loop.h"
18
+ #include "s2/s2measures.h"
19
+ #include "s2/s2pointutil.h"
20
+ #include "s2/s2polygon.h"
21
+ #include "s2/s2polyline.h"
22
+ #include "s2/s2region_coverer.h"
23
+ #include "s2/s2region_term_indexer.h"
24
+ #include "s2/s2cell.h"
25
+ #include "s2/s2cell_union.h"
26
+ %}
27
+
28
+ %inline %{
29
+ static PyObject *FromS2CellId(const S2CellId &cell_id) {
30
+ return SWIG_NewPointerObj(new S2CellId(cell_id), SWIGTYPE_p_S2CellId,
31
+ SWIG_POINTER_OWN);
32
+ }
33
+ %}
34
+
35
+ %apply std::vector<S2CellId> *OUTPUT {std::vector<S2CellId> *covering};
36
+ %apply std::vector<S2CellId> *OUTPUT {std::vector<S2CellId> *interior};
37
+ %apply std::vector<S2CellId> *OUTPUT {std::vector<S2CellId> *output};
38
+
39
+ %typemap(in) absl::string_view {
40
+ if (PyUnicode_Check($input)) {
41
+ $1 = absl::string_view(PyUnicode_AsUTF8($input));
42
+ } else {
43
+ SWIG_exception(SWIG_TypeError, "string expected");
44
+ }
45
+ }
46
+ %typemap(typecheck) absl::string_view = char *;
47
+
48
+
49
+ %typemap(in, numinputs=0) S2CellId *OUTPUT_ARRAY_4(S2CellId temp[4]) {
50
+ $1 = temp;
51
+ }
52
+
53
+ // For S2Polygon::GetOverlapFractions
54
+ %typemap(out) std::pair<double, double> {
55
+ $result = Py_BuildValue("dd", $1.first, $1.second);
56
+ }
57
+
58
+ %typemap(argout) S2CellId *OUTPUT_ARRAY_4 {
59
+ $result = PyList_New(4);
60
+ if ($result == nullptr) return nullptr;
61
+
62
+ for (int i = 0; i < 4; i++) {
63
+ PyObject *const o = FromS2CellId($1[i]);
64
+ if (!o) {
65
+ Py_DECREF($result);
66
+ return nullptr;
67
+ }
68
+ PyList_SET_ITEM($result, i, o);
69
+ }
70
+ }
71
+
72
+ %apply S2CellId *OUTPUT_ARRAY_4 {S2CellId neighbors[4]};
73
+
74
+ // This overload shadows the one the takes vector<uint64>&, and it
75
+ // does not work anyway.
76
+ %ignore S2CellUnion::Init(std::vector<S2CellId> const& cell_ids);
77
+
78
+ // The SWIG code which picks between overloaded methods doesn't work
79
+ // when given a list parameter. SWIG_Python_ConvertPtrAndOwn calls
80
+ // SWIG_Python_GetSwigThis, doesn't find the 'this' attribute and gives up.
81
+ // To avoid this problem rename the Polyline::Init methods so they aren't
82
+ // overloaded.
83
+ %rename(InitFromS2LatLngs) S2Polyline::Init(std::vector<S2LatLng> const& vertices);
84
+ %rename(InitFromS2Points) S2Polyline::Init(std::vector<S2Point> const& vertices);
85
+ // And similarly for the overloaded S2CellUnion::Normalize method.
86
+ %rename(NormalizeS2CellUnion) S2CellUnion::Normalize();
87
+
88
+ %apply int *OUTPUT {int *next_vertex};
89
+ %apply int *OUTPUT {int *psi};
90
+ %apply int *OUTPUT {int *pti};
91
+ %apply int *OUTPUT {int *pi};
92
+ %apply int *OUTPUT {int *pj};
93
+ %apply int *OUTPUT {int *orientation};
94
+ %apply SWIGTYPE *DISOWN {S2Loop *loop_disown};
95
+
96
+ %typemap(in) std::vector<S2Loop *> * (std::vector<S2Loop *> loops){
97
+ PyObject *element(nullptr);
98
+ PyObject *iterator(PyObject_GetIter($input));
99
+ if (!iterator) {
100
+ SWIG_fail;
101
+ }
102
+ int i(0);
103
+ while ((element = PyIter_Next(iterator))) {
104
+ i++;
105
+ S2Loop *loop(nullptr);
106
+ int res(SWIG_ConvertPtr(element, (void **)&loop, $descriptor(S2Loop *), 0));
107
+ if (SWIG_IsOK(res)) {
108
+ loops.push_back(loop->Clone());
109
+ } else {
110
+ SWIG_Python_TypeError(SWIG_TypePrettyName($descriptor(S2Loop *)), element);
111
+ SWIG_Python_ArgFail(i);
112
+ Py_DECREF(element);
113
+ Py_DECREF(iterator);
114
+ SWIG_fail;
115
+ }
116
+ Py_DECREF(element);
117
+ }
118
+ Py_DECREF(iterator);
119
+ $1 = &loops;
120
+ }
121
+
122
+ %typemap(in, numinputs=0)
123
+ std::vector<S2Polyline *> *out(std::vector<S2Polyline *> temp) {
124
+ $1 = &temp;
125
+ }
126
+
127
+ %typemap(argout) std::vector<S2Polyline *> *out {
128
+ $result = PyList_New($1->size());
129
+ if ($result == nullptr) return nullptr;
130
+
131
+ for (int i = 0; i < $1->size(); i++) {
132
+ PyObject *const o =
133
+ SWIG_NewPointerObj((*$1)[i], $descriptor(S2Polyline *), SWIG_POINTER_OWN);
134
+ if (!o) {
135
+ Py_DECREF($result);
136
+ return nullptr;
137
+ }
138
+ PyList_SET_ITEM($result, i, o);
139
+ }
140
+ }
141
+
142
+ %inline %{
143
+ // This isn't a constructor because it clashes with the SWIG-redefinition
144
+ // below and the actual S2Point (a Vector_3d).
145
+ static PyObject *S2Point_FromRaw(double x, double y, double z) {
146
+ // Creates an S2Point directly, mostly useful for testing.
147
+ return SWIG_NewPointerObj(new S2Point(x, y, z), SWIGTYPE_p_S2Point,
148
+ SWIG_POINTER_OWN);
149
+ }
150
+ %}
151
+
152
+ // We provide our own definition of S2Point, because the real one is too
153
+ // difficult to wrap correctly.
154
+ class S2Point {
155
+ public:
156
+ double Norm();
157
+ S2Point Normalize();
158
+ ~S2Point();
159
+ };
160
+
161
+ // The extensions below exist because of the difficulty swigging S2Point.
162
+
163
+ // This alternate method of S2Loop::vertex() returns a S2LatLng instead.
164
+ %extend S2Loop {
165
+ public:
166
+ S2LatLng GetS2LatLngVertex(int i) {
167
+ return S2LatLng($self->vertex(i));
168
+ }
169
+ };
170
+
171
+ // This alternate method of S2Cell::GetVertex() returns a S2LatLng instead.
172
+ %extend S2Cell {
173
+ public:
174
+ S2LatLng GetS2LatLngVertex(int k) {
175
+ return S2LatLng($self->GetVertex(k));
176
+ }
177
+ };
178
+
179
+ // This alternate method of S2Cell::GetEdge() returns a S2LatLng instead.
180
+ %extend S2Cell {
181
+ public:
182
+ S2LatLng GetS2LatLngEdge(int k) {
183
+ return S2LatLng($self->GetEdge(k));
184
+ }
185
+ };
186
+
187
+ // Add raw pointer versions of these functions because SWIG doesn't
188
+ // understand unique_ptr and when std::move() must be used.
189
+ // TODO(user): Make swig understand unique_ptr and vector<unique_ptr>.
190
+ %extend S2Polygon {
191
+ public:
192
+ // Takes ownership of the loop. The _disown suffix is used to tell SWIG
193
+ // that S2Polygon takes ownership of the loop.
194
+ explicit S2Polygon(S2Loop* loop_disown) {
195
+ // SWIG recognizes this as a constructor, but implements this
196
+ // as a free function, so write it that way.
197
+ return new S2Polygon(std::unique_ptr<S2Loop>(loop_disown));
198
+ }
199
+
200
+ void InitNested(std::vector<S2Loop*>* loops) {
201
+ std::vector<std::unique_ptr<S2Loop>> unique_loops(loops->size());
202
+ for (int i = 0; i < loops->size(); ++i) {
203
+ unique_loops[i].reset((*loops)[i]);
204
+ }
205
+ loops->clear();
206
+ $self->InitNested(std::move(unique_loops));
207
+ }
208
+
209
+ void IntersectWithPolyline(S2Polyline const* in,
210
+ std::vector<S2Polyline*>* out) const {
211
+ std::vector<std::unique_ptr<S2Polyline>> polylines =
212
+ $self->IntersectWithPolyline(*in);
213
+ S2_DCHECK(out->empty());
214
+ out->reserve(polylines.size());
215
+ for (auto& polyline : polylines) {
216
+ out->push_back(polyline.release());
217
+ }
218
+ }
219
+ }
220
+
221
+ // Expose Options functions on S2RegionCoverer until we figure out
222
+ // nested classes in SWIG.
223
+ %extend S2RegionCoverer {
224
+ int max_cells() const { return $self->options().max_cells(); }
225
+ void set_max_cells(int max_cells) {
226
+ $self->mutable_options()->set_max_cells(max_cells);
227
+ }
228
+
229
+ int min_level() const { return $self->options().min_level(); }
230
+ void set_min_level(int min_level) {
231
+ $self->mutable_options()->set_min_level(min_level);
232
+ }
233
+
234
+ int max_level() const { return $self->options().max_level(); }
235
+ void set_max_level(int max_level) {
236
+ $self->mutable_options()->set_max_level(max_level);
237
+ }
238
+
239
+ void set_fixed_level(int fixed_level) {
240
+ $self->mutable_options()->set_fixed_level(fixed_level);
241
+ }
242
+
243
+ int level_mod() const { return $self->options().level_mod(); }
244
+ void set_level_mod(int level_mod) {
245
+ $self->mutable_options()->set_level_mod(level_mod);
246
+ }
247
+
248
+ int true_max_level() const { return $self->options().true_max_level(); }
249
+ }
250
+
251
+ // Expose Options functions on S2RegionTermIndexer until we figure out
252
+ // nested classes in SWIG.
253
+ %extend S2RegionTermIndexer {
254
+ int max_cells() const { return $self->options().max_cells(); }
255
+ void set_max_cells(int max_cells) {
256
+ $self->mutable_options()->set_max_cells(max_cells);
257
+ }
258
+
259
+ int min_level() const { return $self->options().min_level(); }
260
+ void set_min_level(int min_level) {
261
+ $self->mutable_options()->set_min_level(min_level);
262
+ }
263
+
264
+ int max_level() const { return $self->options().max_level(); }
265
+ void set_max_level(int max_level) {
266
+ $self->mutable_options()->set_max_level(max_level);
267
+ }
268
+
269
+ void set_fixed_level(int fixed_level) {
270
+ $self->mutable_options()->set_fixed_level(fixed_level);
271
+ }
272
+
273
+ int level_mod() const { return $self->options().level_mod(); }
274
+ void set_level_mod(int level_mod) {
275
+ $self->mutable_options()->set_level_mod(level_mod);
276
+ }
277
+
278
+ int true_max_level() const { return $self->options().true_max_level(); }
279
+
280
+ bool index_contains_points_only() const {
281
+ return $self->options().index_contains_points_only();
282
+ }
283
+ void set_index_contains_points_only(bool value) {
284
+ $self->mutable_options()->set_index_contains_points_only(value);
285
+ }
286
+
287
+ bool optimize_for_space() const {
288
+ return $self->options().optimize_for_space();
289
+ }
290
+ void set_optimize_for_space(bool value) {
291
+ $self->mutable_options()->set_optimize_for_space(value);
292
+ }
293
+
294
+ char marker_character() const { return $self->options().marker_character(); }
295
+ void set_marker_character(char ch) {
296
+ $self->mutable_options()->set_marker_character(ch);
297
+ }
298
+ }
299
+
300
+ %ignoreall
301
+
302
+ %unignore R1Interval;
303
+ %ignore R1Interval::operator[];
304
+ %unignore R1Interval::GetLength;
305
+ %unignore S1Angle;
306
+ %unignore S1Angle::S1Angle;
307
+ %unignore S1Angle::~S1Angle;
308
+ %unignore S1Angle::Degrees;
309
+ %unignore S1Angle::E5;
310
+ %unignore S1Angle::E6;
311
+ %unignore S1Angle::E7;
312
+ %unignore S1Angle::Normalize;
313
+ %unignore S1Angle::Normalized;
314
+ %unignore S1Angle::Radians;
315
+ %unignore S1Angle::UnsignedE6;
316
+ %unignore S1Angle::abs;
317
+ %unignore S1Angle::degrees;
318
+ %unignore S1Angle::e6;
319
+ %unignore S1Angle::e7;
320
+ %unignore S1Angle::radians;
321
+ %unignore S1ChordAngle;
322
+ %unignore S1ChordAngle::ToAngle;
323
+ %unignore S1Interval;
324
+ %ignore S1Interval::operator[];
325
+ %unignore S1Interval::GetLength;
326
+ %unignore S2;
327
+ %unignore S2::CrossingSign;
328
+ %unignore S2::GetIntersection;
329
+ %unignore S2::Rotate;
330
+ %unignore S2::TurnAngle;
331
+ %unignore S2Cap;
332
+ %unignore S2Cap::S2Cap;
333
+ %unignore S2Cap::~S2Cap;
334
+ %unignore S2Cap::AddPoint;
335
+ %unignore S2Cap::ApproxEquals;
336
+ %unignore S2Cap::Clone;
337
+ %unignore S2Cap::Contains;
338
+ %unignore S2Cap::Decode;
339
+ %unignore S2Cap::Empty;
340
+ %unignore S2Cap::Encode;
341
+ %unignore S2Cap::Expanded;
342
+ %unignore S2Cap::FromCenterArea(const S2Point&, double);
343
+ %unignore S2Cap::FromCenterHeight(const S2Point&, double);
344
+ %unignore S2Cap::FromPoint;
345
+ %unignore S2Cap::Full;
346
+ %unignore S2Cap::GetCapBound() const;
347
+ %unignore S2Cap::GetCentroid;
348
+ %unignore S2Cap::GetRectBound;
349
+ %unignore S2Cap::Intersects;
350
+ %unignore S2Cap::MayIntersect(const S2Cell&) const;
351
+ %unignore S2Cap::Union;
352
+ %unignore S2Cap::center;
353
+ %unignore S2Cap::height;
354
+ %unignore S2Cap::is_empty;
355
+ %unignore S2Cap::is_valid;
356
+ %unignore S2Cell;
357
+ %unignore S2Cell::S2Cell;
358
+ %unignore S2Cell::~S2Cell;
359
+ %unignore S2Cell::ApproxArea;
360
+ %unignore S2Cell::AverageArea;
361
+ %unignore S2Cell::Clone;
362
+ %unignore S2Cell::Contains;
363
+ %unignore S2Cell::Decode;
364
+ %unignore S2Cell::Encode;
365
+ %unignore S2Cell::ExactArea;
366
+ %unignore S2Cell::GetBoundaryDistance;
367
+ %unignore S2Cell::GetCapBound() const;
368
+ %unignore S2Cell::GetCenter;
369
+ %unignore S2Cell::GetDistance;
370
+ %unignore S2Cell::GetRectBound;
371
+ %unignore S2Cell::GetS2LatLngEdge;
372
+ %unignore S2Cell::GetS2LatLngVertex;
373
+ %unignore S2Cell::GetVertex;
374
+ %unignore S2Cell::MayIntersect(const S2Cell&) const;
375
+ %unignore S2Cell::face;
376
+ %unignore S2Cell::id;
377
+ %unignore S2Cell::level;
378
+ %unignore S2CellId;
379
+ %unignore S2CellId::S2CellId;
380
+ %unignore S2CellId::~S2CellId;
381
+ %unignore S2CellId::AppendAllNeighbors(int, std::vector<S2CellId>*) const;
382
+ %rename(GetAllNeighbors) S2CellId::AppendAllNeighbors(int level, std::vector<S2CellId>* output) const;
383
+ %unignore S2CellId::Begin;
384
+ %unignore S2CellId::End;
385
+ %unignore S2CellId::FromFaceIJ(int, int, int);
386
+ %unignore S2CellId::FromFacePosLevel(int, uint64, int);
387
+ %unignore S2CellId::FromLatLng;
388
+ %unignore S2CellId::FromPoint;
389
+ %unignore S2CellId::FromToken(const std::string&);
390
+ %unignore S2CellId::GetCenterSiTi(int*, int*) const;
391
+ %unignore S2CellId::GetEdgeNeighbors;
392
+ %unignore S2CellId::ToFaceIJOrientation(int*, int*, int*) const;
393
+ %unignore S2CellId::ToLatLng;
394
+ %unignore S2CellId::ToPoint;
395
+ %unignore S2CellId::ToString;
396
+ %unignore S2CellId::ToToken;
397
+ %unignore S2CellId::child;
398
+ %unignore S2CellId::child_begin;
399
+ %unignore S2CellId::child_end;
400
+ %unignore S2CellId::contains;
401
+ %unignore S2CellId::face;
402
+ %unignore S2CellId::id;
403
+ %unignore S2CellId::intersects;
404
+ %unignore S2CellId::is_face;
405
+ %unignore S2CellId::is_valid;
406
+ %unignore S2CellId::kMaxLevel;
407
+ %unignore S2CellId::level;
408
+ %unignore S2CellId::next;
409
+ %unignore S2CellId::parent;
410
+ %unignore S2CellId::pos;
411
+ %unignore S2CellId::prev;
412
+ %unignore S2CellId::range_max;
413
+ %unignore S2CellId::range_min;
414
+ %unignore S2CellUnion;
415
+ %ignore S2CellUnion::operator[]; // Silence the SWIG warning.
416
+ %unignore S2CellUnion::S2CellUnion;
417
+ %unignore S2CellUnion::~S2CellUnion;
418
+ %unignore S2CellUnion::ApproxArea;
419
+ %unignore S2CellUnion::Clone;
420
+ %unignore S2CellUnion::Contains;
421
+ %unignore S2CellUnion::Decode;
422
+ %unignore S2CellUnion::Denormalize(int, int, std::vector<S2CellId>*) const;
423
+ %unignore S2CellUnion::Encode;
424
+ %unignore S2CellUnion::ExactArea;
425
+ %unignore S2CellUnion::FromNormalized(std::vector<S2CellId>);
426
+ %unignore S2CellUnion::GetCapBound() const;
427
+ %unignore S2CellUnion::GetDifference;
428
+ %unignore S2CellUnion::GetRectBound;
429
+ %unignore S2CellUnion::Init(std::vector<uint64> const &);
430
+ %unignore S2CellUnion::Intersection;
431
+ %unignore S2CellUnion::Intersects;
432
+ %unignore S2CellUnion::IsNormalized;
433
+ %unignore S2CellUnion::MayIntersect(const S2Cell&) const;
434
+ // SWIG doesn't handle disambiguation of the overloaded Normalize methods, so
435
+ // the Normalize() instance method is renamed to NormalizeS2CellUnion.
436
+ %unignore S2CellUnion::Normalize(std::vector<S2CellId>*);
437
+ %unignore S2CellUnion::cell_id;
438
+ %unignore S2CellUnion::cell_ids;
439
+ %unignore S2CellUnion::empty;
440
+ %unignore S2CellUnion::num_cells;
441
+ %unignore S2Earth;
442
+ %unignore S2Earth::GetDistance(const S2LatLng&, const S2LatLng&);
443
+ %unignore S2Earth::GetDistance(const S2Point&, const S2Point&);
444
+ %unignore S2Earth::GetDistanceKm(const S2LatLng&, const S2LatLng&);
445
+ %unignore S2Earth::GetDistanceKm(const S2Point&, const S2Point&);
446
+ %unignore S2Earth::GetDistanceMeters(const S2LatLng&, const S2LatLng&);
447
+ %unignore S2Earth::GetDistanceMeters(const S2Point&, const S2Point&);
448
+ %unignore S2Earth::GetInitialBearing(const S2LatLng&, const S2LatLng&);
449
+ %unignore S2Earth::HighestAltitude();
450
+ %unignore S2Earth::HighestAltitudeKm();
451
+ %unignore S2Earth::HighestAltitudeMeters();
452
+ %unignore S2Earth::KmToRadians(double);
453
+ %unignore S2Earth::LowestAltitude();
454
+ %unignore S2Earth::LowestAltitudeKm();
455
+ %unignore S2Earth::LowestAltitudeMeters();
456
+ %unignore S2Earth::MetersToRadians(double);
457
+ %unignore S2Earth::RadiansToKm(double);
458
+ %unignore S2Earth::RadiansToMeters(double);
459
+ %unignore S2Earth::Radius();
460
+ %unignore S2Earth::RadiusKm();
461
+ %unignore S2Earth::RadiusMeters();
462
+ %unignore S2Earth::SquareKmToSteradians(double);
463
+ %unignore S2Earth::SquareMetersToSteradians(double);
464
+ %unignore S2Earth::SteradiansToSquareKm(double);
465
+ %unignore S2Earth::SteradiansToSquareMeters(double);
466
+ %unignore S2Earth::ToAngle(const util::units::Meters&);
467
+ %unignore S2Earth::ToChordAngle(const util::units::Meters&);
468
+ %unignore S2Earth::ToDistance(const S1Angle&);
469
+ %unignore S2Earth::ToDistance(const S1ChordAngle&);
470
+ %unignore S2Earth::ToKm(const S1Angle&);
471
+ %unignore S2Earth::ToKm(const S1ChordAngle&);
472
+ %unignore S2Earth::ToLongitudeRadians(const util::units::Meters&, double);
473
+ %unignore S2Earth::ToMeters(const S1Angle&);
474
+ %unignore S2Earth::ToMeters(const S1ChordAngle&);
475
+ %unignore S2Earth::ToRadians(const util::units::Meters&);
476
+ %unignore S2LatLng;
477
+ %unignore S2LatLng::S2LatLng;
478
+ %unignore S2LatLng::~S2LatLng;
479
+ %unignore S2LatLng::ApproxEquals;
480
+ %unignore S2LatLng::FromDegrees;
481
+ %unignore S2LatLng::FromE6;
482
+ %unignore S2LatLng::FromE7;
483
+ %unignore S2LatLng::FromRadians;
484
+ %unignore S2LatLng::FromUnsignedE6;
485
+ %unignore S2LatLng::FromUnsignedE7;
486
+ %unignore S2LatLng::GetDistance;
487
+ %unignore S2LatLng::Normalized;
488
+ %unignore S2LatLng::ToPoint;
489
+ %unignore S2LatLng::ToStringInDegrees;
490
+ %unignore S2LatLng::coords;
491
+ %unignore S2LatLng::is_valid;
492
+ %unignore S2LatLng::lat;
493
+ %unignore S2LatLng::lng;
494
+ %unignore S2LatLngRect;
495
+ %unignore S2LatLngRect::S2LatLngRect;
496
+ %unignore S2LatLngRect::~S2LatLngRect;
497
+ %unignore S2LatLngRect::AddPoint;
498
+ %unignore S2LatLngRect::ApproxEquals;
499
+ %unignore S2LatLngRect::Area;
500
+ %unignore S2LatLngRect::Clone;
501
+ %unignore S2LatLngRect::Contains;
502
+ %unignore S2LatLngRect::Decode;
503
+ %unignore S2LatLngRect::Empty;
504
+ %unignore S2LatLngRect::Encode;
505
+ %unignore S2LatLngRect::ExpandedByDistance;
506
+ %unignore S2LatLngRect::FromCenterSize;
507
+ %unignore S2LatLngRect::FromPoint;
508
+ %unignore S2LatLngRect::FromPointPair;
509
+ %unignore S2LatLngRect::Full;
510
+ %unignore S2LatLngRect::GetCapBound() const;
511
+ %unignore S2LatLngRect::GetCenter;
512
+ %unignore S2LatLngRect::GetCentroid;
513
+ %unignore S2LatLngRect::GetDistance;
514
+ %unignore S2LatLngRect::GetRectBound;
515
+ %unignore S2LatLngRect::GetSize;
516
+ %unignore S2LatLngRect::GetVertex;
517
+ %unignore S2LatLngRect::Intersection;
518
+ %unignore S2LatLngRect::Intersects;
519
+ %unignore S2LatLngRect::MayIntersect(const S2Cell&) const;
520
+ %unignore S2LatLngRect::Union;
521
+ %unignore S2LatLngRect::hi;
522
+ %unignore S2LatLngRect::is_empty;
523
+ %unignore S2LatLngRect::is_point;
524
+ %unignore S2LatLngRect::is_valid;
525
+ %unignore S2LatLngRect::lat;
526
+ %unignore S2LatLngRect::lat_hi;
527
+ %unignore S2LatLngRect::lat_lo;
528
+ %unignore S2LatLngRect::lng;
529
+ %unignore S2LatLngRect::lng_hi;
530
+ %unignore S2LatLngRect::lng_lo;
531
+ %unignore S2LatLngRect::lo;
532
+ %unignore S2Loop;
533
+ %unignore S2Loop::S2Loop;
534
+ %unignore S2Loop::~S2Loop;
535
+ %unignore S2Loop::Clone;
536
+ %unignore S2Loop::Contains;
537
+ %unignore S2Loop::Decode;
538
+ %unignore S2Loop::Encode;
539
+ %unignore S2Loop::Equals;
540
+ %unignore S2Loop::GetCapBound() const;
541
+ %unignore S2Loop::GetCentroid;
542
+ %unignore S2Loop::GetDistance;
543
+ %unignore S2Loop::GetRectBound;
544
+ %unignore S2Loop::GetS2LatLngVertex;
545
+ %unignore S2Loop::Init;
546
+ %unignore S2Loop::Intersects;
547
+ %unignore S2Loop::IsNormalized() const;
548
+ %unignore S2Loop::IsValid;
549
+ %unignore S2Loop::MayIntersect(const S2Cell&) const;
550
+ %unignore S2Loop::Normalize;
551
+ %unignore S2Loop::Project;
552
+ %unignore S2Loop::depth;
553
+ %unignore S2Loop::is_empty;
554
+ %unignore S2Loop::is_hole;
555
+ %unignore S2Loop::num_vertices;
556
+ %unignore S2Loop::sign;
557
+ %unignore S2Loop::vertex;
558
+ %unignore S2Polygon;
559
+ %unignore S2Polygon::S2Polygon;
560
+ %unignore S2Polygon::~S2Polygon;
561
+ %unignore S2Polygon::Clone;
562
+ %unignore S2Polygon::Contains;
563
+ %unignore S2Polygon::Copy;
564
+ %unignore S2Polygon::Decode;
565
+ %unignore S2Polygon::Encode;
566
+ %unignore S2Polygon::Equals;
567
+ %unignore S2Polygon::GetArea;
568
+ %unignore S2Polygon::GetCapBound() const;
569
+ %unignore S2Polygon::GetCentroid;
570
+ %unignore S2Polygon::GetDistance;
571
+ %unignore S2Polygon::GetOverlapFractions(const S2Polygon*, const S2Polygon*);
572
+ %unignore S2Polygon::GetRectBound;
573
+ %unignore S2Polygon::Init;
574
+ %unignore S2Polygon::InitNested;
575
+ %unignore S2Polygon::Intersects;
576
+ %unignore S2Polygon::IntersectWithPolyline;
577
+ %unignore S2Polygon::IsValid;
578
+ %unignore S2Polygon::MayIntersect(const S2Cell&) const;
579
+ %unignore S2Polygon::Project;
580
+ %unignore S2Polygon::is_empty;
581
+ %unignore S2Polygon::loop;
582
+ %unignore S2Polygon::num_loops;
583
+ %unignore S2Polygon::num_vertices;
584
+ %unignore S2Polyline;
585
+ %unignore S2Polyline::S2Polyline();
586
+ %unignore S2Polyline::S2Polyline(std::vector<S2LatLng> const &);
587
+ %ignore S2Polyline::S2Polyline(std::vector<S2Point> const &);
588
+ %ignore S2Polyline::S2Polyline(std::vector<S2Point> const &, S2Debug);
589
+ %unignore S2Polyline::~S2Polyline;
590
+ %unignore S2Polyline::ApproxEquals;
591
+ %unignore S2Polyline::Clone;
592
+ %unignore S2Polyline::Contains;
593
+ %unignore S2Polyline::Decode;
594
+ %unignore S2Polyline::Encode;
595
+ %unignore S2Polyline::GetCapBound() const;
596
+ %unignore S2Polyline::GetCentroid;
597
+ %unignore S2Polyline::GetLength;
598
+ %unignore S2Polyline::GetRectBound;
599
+ %unignore S2Polyline::GetSuffix;
600
+ %unignore S2Polyline::InitFromS2LatLngs;
601
+ %unignore S2Polyline::InitFromS2Points;
602
+ %unignore S2Polyline::Interpolate;
603
+ %unignore S2Polyline::Intersects;
604
+ %unignore S2Polyline::IsOnRight;
605
+ %unignore S2Polyline::IsValid;
606
+ %unignore S2Polyline::MayIntersect(const S2Cell&) const;
607
+ %unignore S2Polyline::Project;
608
+ %unignore S2Polyline::Reverse;
609
+ %unignore S2Polyline::UnInterpolate;
610
+ %unignore S2Polyline::num_vertices;
611
+ %unignore S2Polyline::vertex;
612
+ %unignore S2RegionCoverer;
613
+ %unignore S2RegionCoverer::S2RegionCoverer;
614
+ %unignore S2RegionCoverer::~S2RegionCoverer;
615
+ %unignore S2RegionCoverer::GetCovering(const S2Region&, std::vector<S2CellId>*);
616
+ %unignore S2RegionCoverer::GetInteriorCovering(const S2Region&,
617
+ std::vector<S2CellId>*);
618
+ %unignore S2RegionTermIndexer;
619
+ %unignore S2RegionTermIndexer::S2RegionTermIndexer;
620
+ %unignore S2RegionTermIndexer::~S2RegionTermIndexer;
621
+ %unignore S2RegionTermIndexer::GetIndexTerms(const S2Point&, absl::string_view);
622
+ %unignore S2RegionTermIndexer::GetIndexTerms(const S2Region&,
623
+ absl::string_view);
624
+ %unignore S2RegionTermIndexer::GetIndexTermsForCanonicalCovering(
625
+ const S2CellUnion&, absl::string_view);
626
+ %unignore S2RegionTermIndexer::GetQueryTerms(const S2Point&, absl::string_view);
627
+ %unignore S2RegionTermIndexer::GetQueryTerms(const S2Region&,
628
+ absl::string_view);
629
+ %unignore S2RegionTermIndexer::GetQueryTermsForCanonicalCovering(
630
+ const S2CellUnion&, absl::string_view);
631
+
632
+ %include "s2/r1interval.h"
633
+ %include "s2/s1angle.h"
634
+ %include "s2/s1chord_angle.h"
635
+ %include "s2/s1interval.h"
636
+ %include "s2/s2cell_id.h"
637
+ %include "s2/s2edge_crossings.h"
638
+ %include "s2/s2earth.h"
639
+ %include "s2/s2region.h"
640
+ %include "s2/s2cap.h"
641
+ %include "s2/s2latlng.h"
642
+ %include "s2/s2latlng_rect.h"
643
+ %include "s2/s2loop.h"
644
+ %include "s2/s2measures.h"
645
+ %include "s2/s2pointutil.h"
646
+ %include "s2/s2polygon.h"
647
+ %include "s2/s2polyline.h"
648
+ %include "s2/s2region_coverer.h"
649
+ %include "s2/s2region_term_indexer.h"
650
+ %include "s2/s2cell.h"
651
+ %include "s2/s2cell_union.h"
652
+
653
+ %unignoreall
654
+
655
+ %define USE_STREAM_INSERTOR_FOR_STR(type)
656
+ %extend type {
657
+ string __str__() {
658
+ std::ostringstream output;
659
+ output << *self << std::ends;
660
+ return output.str();
661
+ }
662
+ }
663
+ %enddef
664
+
665
+ %define USE_EQUALS_FN_FOR_EQ_AND_NE(type)
666
+ %extend type {
667
+ bool __eq__(const type& other) {
668
+ return $self->Equals(&other);
669
+ }
670
+
671
+ bool __ne__(const type& other) {
672
+ return !$self->Equals(&other);
673
+ }
674
+ }
675
+ %enddef
676
+
677
+ %define USE_EQUALS_FOR_EQ_AND_NE(type)
678
+ %extend type {
679
+ bool __eq__(const type& other) {
680
+ return *self == other;
681
+ }
682
+
683
+ bool __ne__(const type& other) {
684
+ return *self != other;
685
+ }
686
+ }
687
+ %enddef
688
+
689
+ %define USE_COMPARISON_FOR_LT_AND_GT(type)
690
+ %extend type {
691
+ bool __lt__(const type& other) {
692
+ return *self < other;
693
+ }
694
+
695
+ bool __gt__(const type& other) {
696
+ return *self > other;
697
+ }
698
+ }
699
+ %enddef
700
+
701
+ %define USE_HASH_FOR_TYPE(type, hash_type)
702
+ %extend type {
703
+ size_t __hash__() {
704
+ return hash_type()(*self);
705
+ }
706
+ }
707
+ %enddef
708
+
709
+ USE_STREAM_INSERTOR_FOR_STR(S1Angle)
710
+ USE_STREAM_INSERTOR_FOR_STR(S1Interval)
711
+ USE_STREAM_INSERTOR_FOR_STR(S2CellId)
712
+ USE_STREAM_INSERTOR_FOR_STR(S2Cap)
713
+ USE_STREAM_INSERTOR_FOR_STR(S2LatLng)
714
+ USE_STREAM_INSERTOR_FOR_STR(S2LatLngRect)
715
+
716
+ USE_EQUALS_FOR_EQ_AND_NE(S2CellId)
717
+ USE_COMPARISON_FOR_LT_AND_GT(S2CellId)
718
+ USE_HASH_FOR_TYPE(S2CellId, S2CellIdHash)
719
+
720
+ USE_EQUALS_FOR_EQ_AND_NE(S1Angle)
721
+ USE_COMPARISON_FOR_LT_AND_GT(S1Angle)
722
+
723
+ USE_EQUALS_FN_FOR_EQ_AND_NE(S2Loop)
724
+ USE_EQUALS_FN_FOR_EQ_AND_NE(S2Polygon)
725
+ USE_EQUALS_FN_FOR_EQ_AND_NE(S2Polyline)
726
+
727
+ // Simple implementation of key S2Testing methods
728
+ %pythoncode %{
729
+ import random
730
+
731
+ class S2Testing(object):
732
+ """ Simple implementation of key S2Testing methods. """
733
+ _rnd = random.Random(1)
734
+
735
+ @classmethod
736
+ def RandomPoint(cls):
737
+ """ Return a random unit-length vector. """
738
+ x = cls._rnd.uniform(-1, 1)
739
+ y = cls._rnd.uniform(-1, 1)
740
+ z = cls._rnd.uniform(-1, 1)
741
+ return S2Point_FromRaw(x, y, z).Normalize()
742
+
743
+ @classmethod
744
+ def GetRandomCap(cls, min_area, max_area):
745
+ """
746
+ Return a cap with a random axis such that the log of its area is
747
+ uniformly distributed between the logs of the two given values.
748
+ (The log of the cap angle is also approximately uniformly distributed.)
749
+ """
750
+ cap_area = max_area * pow(min_area / max_area, cls._rnd.random())
751
+ assert cap_area >= min_area
752
+ assert cap_area <= max_area
753
+
754
+ # The surface area of a cap is 2*Pi times its height.
755
+ return S2Cap.FromCenterArea(cls.RandomPoint(), cap_area)
756
+ %}