@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.
- package/.circleci/config.yml +45 -0
- package/.dockerignore +1 -0
- package/.gitmodules +3 -0
- package/CHANGELOG.md +33 -0
- package/LICENSE +201 -0
- package/README.md +147 -0
- package/binding.gyp +170 -0
- package/docker/Dockerfile.node20.test +8 -0
- package/docker/Dockerfile.node22.test +8 -0
- package/docker/Dockerfile.node24.test +8 -0
- package/index.d.ts +117 -0
- package/index.js +6 -0
- package/jest.config.js +184 -0
- package/package.json +43 -0
- package/publish-linux.sh +18 -0
- package/publish-osx.sh +19 -0
- package/src/builder.cc +84 -0
- package/src/builder.h +29 -0
- package/src/cell.cc +71 -0
- package/src/cell.h +26 -0
- package/src/cell_id.cc +210 -0
- package/src/cell_id.h +44 -0
- package/src/cell_union.cc +237 -0
- package/src/cell_union.h +34 -0
- package/src/earth.cc +185 -0
- package/src/earth.h +33 -0
- package/src/latlng.cc +132 -0
- package/src/latlng.h +28 -0
- package/src/loop.cc +51 -0
- package/src/loop.h +21 -0
- package/src/point.cc +69 -0
- package/src/point.h +23 -0
- package/src/polygon.cc +36 -0
- package/src/polygon.h +20 -0
- package/src/polyline.cc +186 -0
- package/src/polyline.h +34 -0
- package/src/region_coverer.cc +450 -0
- package/src/region_coverer.h +56 -0
- package/src/s2.cc +27 -0
- package/test/Cell.test.js +37 -0
- package/test/CellId.test.js +135 -0
- package/test/CellUnion.test.js +150 -0
- package/test/Earth.test.js +62 -0
- package/test/LatLng.test.js +45 -0
- package/test/Point.test.js +14 -0
- package/test/Polyline.test.js +78 -0
- package/test/RegionCoverer.test.js +301 -0
- package/test.sh +16 -0
- package/third_party/s2geometry/.travis.yml +163 -0
- package/third_party/s2geometry/AUTHORS +13 -0
- package/third_party/s2geometry/CONTRIBUTING.md +65 -0
- package/third_party/s2geometry/CONTRIBUTORS +30 -0
- package/third_party/s2geometry/LICENSE +202 -0
- package/third_party/s2geometry/NOTICE +5 -0
- package/third_party/s2geometry/README.md +127 -0
- package/third_party/s2geometry/doc/examples/point_index.cc +44 -0
- package/third_party/s2geometry/doc/examples/term_index.cc +99 -0
- package/third_party/s2geometry/doc/examples/term_index.py +101 -0
- package/third_party/s2geometry/src/python/coder.i +125 -0
- package/third_party/s2geometry/src/python/pywraps2_test.py +786 -0
- package/third_party/s2geometry/src/python/s2.i +37 -0
- package/third_party/s2geometry/src/python/s2_common.i +756 -0
- package/third_party/s2geometry/src/s2/_fp_contract_off.h +60 -0
- package/third_party/s2geometry/src/s2/base/casts.h +318 -0
- package/third_party/s2geometry/src/s2/base/commandlineflags.h +67 -0
- package/third_party/s2geometry/src/s2/base/integral_types.h +31 -0
- package/third_party/s2geometry/src/s2/base/log_severity.h +40 -0
- package/third_party/s2geometry/src/s2/base/logging.h +173 -0
- package/third_party/s2geometry/src/s2/base/mutex.h +61 -0
- package/third_party/s2geometry/src/s2/base/port.h +999 -0
- package/third_party/s2geometry/src/s2/base/spinlock.h +60 -0
- package/third_party/s2geometry/src/s2/base/stringprintf.cc +107 -0
- package/third_party/s2geometry/src/s2/base/stringprintf.h +53 -0
- package/third_party/s2geometry/src/s2/base/strtoint.cc +65 -0
- package/third_party/s2geometry/src/s2/base/strtoint.h +106 -0
- package/third_party/s2geometry/src/s2/base/timer.h +50 -0
- package/third_party/s2geometry/src/s2/encoded_s2cell_id_vector.cc +164 -0
- package/third_party/s2geometry/src/s2/encoded_s2cell_id_vector.h +110 -0
- package/third_party/s2geometry/src/s2/encoded_s2cell_id_vector_test.cc +232 -0
- package/third_party/s2geometry/src/s2/encoded_s2point_vector.cc +838 -0
- package/third_party/s2geometry/src/s2/encoded_s2point_vector.h +140 -0
- package/third_party/s2geometry/src/s2/encoded_s2point_vector_test.cc +344 -0
- package/third_party/s2geometry/src/s2/encoded_s2shape_index.cc +181 -0
- package/third_party/s2geometry/src/s2/encoded_s2shape_index.h +276 -0
- package/third_party/s2geometry/src/s2/encoded_s2shape_index_test.cc +244 -0
- package/third_party/s2geometry/src/s2/encoded_string_vector.cc +66 -0
- package/third_party/s2geometry/src/s2/encoded_string_vector.h +164 -0
- package/third_party/s2geometry/src/s2/encoded_string_vector_test.cc +69 -0
- package/third_party/s2geometry/src/s2/encoded_uint_vector.h +299 -0
- package/third_party/s2geometry/src/s2/encoded_uint_vector_test.cc +124 -0
- package/third_party/s2geometry/src/s2/id_set_lexicon.cc +81 -0
- package/third_party/s2geometry/src/s2/id_set_lexicon.h +199 -0
- package/third_party/s2geometry/src/s2/id_set_lexicon_test.cc +70 -0
- package/third_party/s2geometry/src/s2/mutable_s2shape_index.cc +1585 -0
- package/third_party/s2geometry/src/s2/mutable_s2shape_index.h +600 -0
- package/third_party/s2geometry/src/s2/mutable_s2shape_index_test.cc +589 -0
- package/third_party/s2geometry/src/s2/r1interval.h +220 -0
- package/third_party/s2geometry/src/s2/r1interval_test.cc +185 -0
- package/third_party/s2geometry/src/s2/r2.h +26 -0
- package/third_party/s2geometry/src/s2/r2rect.cc +93 -0
- package/third_party/s2geometry/src/s2/r2rect.h +234 -0
- package/third_party/s2geometry/src/s2/r2rect_test.cc +228 -0
- package/third_party/s2geometry/src/s2/s1angle.cc +54 -0
- package/third_party/s2geometry/src/s2/s1angle.h +336 -0
- package/third_party/s2geometry/src/s2/s1angle_test.cc +185 -0
- package/third_party/s2geometry/src/s2/s1chord_angle.cc +159 -0
- package/third_party/s2geometry/src/s2/s1chord_angle.h +369 -0
- package/third_party/s2geometry/src/s2/s1chord_angle_test.cc +207 -0
- package/third_party/s2geometry/src/s2/s1interval.cc +296 -0
- package/third_party/s2geometry/src/s2/s1interval.h +266 -0
- package/third_party/s2geometry/src/s2/s1interval_test.cc +469 -0
- package/third_party/s2geometry/src/s2/s2boolean_operation.cc +2391 -0
- package/third_party/s2geometry/src/s2/s2boolean_operation.h +501 -0
- package/third_party/s2geometry/src/s2/s2boolean_operation_test.cc +1400 -0
- package/third_party/s2geometry/src/s2/s2builder.cc +1828 -0
- package/third_party/s2geometry/src/s2/s2builder.h +1057 -0
- package/third_party/s2geometry/src/s2/s2builder_graph.cc +1084 -0
- package/third_party/s2geometry/src/s2/s2builder_graph.h +799 -0
- package/third_party/s2geometry/src/s2/s2builder_graph_test.cc +462 -0
- package/third_party/s2geometry/src/s2/s2builder_layer.h +50 -0
- package/third_party/s2geometry/src/s2/s2builder_test.cc +1329 -0
- package/third_party/s2geometry/src/s2/s2builderutil_closed_set_normalizer.cc +313 -0
- package/third_party/s2geometry/src/s2/s2builderutil_closed_set_normalizer.h +221 -0
- package/third_party/s2geometry/src/s2/s2builderutil_closed_set_normalizer_test.cc +261 -0
- package/third_party/s2geometry/src/s2/s2builderutil_find_polygon_degeneracies.cc +392 -0
- package/third_party/s2geometry/src/s2/s2builderutil_find_polygon_degeneracies.h +86 -0
- package/third_party/s2geometry/src/s2/s2builderutil_find_polygon_degeneracies_test.cc +182 -0
- package/third_party/s2geometry/src/s2/s2builderutil_graph_shape.h +57 -0
- package/third_party/s2geometry/src/s2/s2builderutil_lax_polygon_layer.cc +212 -0
- package/third_party/s2geometry/src/s2/s2builderutil_lax_polygon_layer.h +218 -0
- package/third_party/s2geometry/src/s2/s2builderutil_lax_polygon_layer_test.cc +367 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2point_vector_layer.cc +74 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2point_vector_layer.h +122 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2point_vector_layer_test.cc +167 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polygon_layer.cc +191 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polygon_layer.h +211 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polygon_layer_test.cc +312 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_layer.cc +105 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_layer.h +174 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_layer_test.cc +220 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_vector_layer.cc +98 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_vector_layer.h +292 -0
- package/third_party/s2geometry/src/s2/s2builderutil_s2polyline_vector_layer_test.cc +233 -0
- package/third_party/s2geometry/src/s2/s2builderutil_snap_functions.cc +354 -0
- package/third_party/s2geometry/src/s2/s2builderutil_snap_functions.h +239 -0
- package/third_party/s2geometry/src/s2/s2builderutil_snap_functions_test.cc +716 -0
- package/third_party/s2geometry/src/s2/s2builderutil_testing.cc +37 -0
- package/third_party/s2geometry/src/s2/s2builderutil_testing.h +100 -0
- package/third_party/s2geometry/src/s2/s2builderutil_testing_test.cc +85 -0
- package/third_party/s2geometry/src/s2/s2cap.cc +347 -0
- package/third_party/s2geometry/src/s2/s2cap.h +286 -0
- package/third_party/s2geometry/src/s2/s2cap_test.cc +379 -0
- package/third_party/s2geometry/src/s2/s2cell.cc +552 -0
- package/third_party/s2geometry/src/s2/s2cell.h +249 -0
- package/third_party/s2geometry/src/s2/s2cell_id.cc +619 -0
- package/third_party/s2geometry/src/s2/s2cell_id.h +705 -0
- package/third_party/s2geometry/src/s2/s2cell_id_test.cc +633 -0
- package/third_party/s2geometry/src/s2/s2cell_index.cc +149 -0
- package/third_party/s2geometry/src/s2/s2cell_index.h +660 -0
- package/third_party/s2geometry/src/s2/s2cell_index_test.cc +411 -0
- package/third_party/s2geometry/src/s2/s2cell_test.cc +687 -0
- package/third_party/s2geometry/src/s2/s2cell_union.cc +515 -0
- package/third_party/s2geometry/src/s2/s2cell_union.h +399 -0
- package/third_party/s2geometry/src/s2/s2cell_union_test.cc +598 -0
- package/third_party/s2geometry/src/s2/s2centroids.cc +84 -0
- package/third_party/s2geometry/src/s2/s2centroids.h +87 -0
- package/third_party/s2geometry/src/s2/s2centroids_test.cc +82 -0
- package/third_party/s2geometry/src/s2/s2closest_cell_query.cc +123 -0
- package/third_party/s2geometry/src/s2/s2closest_cell_query.h +385 -0
- package/third_party/s2geometry/src/s2/s2closest_cell_query_base.h +841 -0
- package/third_party/s2geometry/src/s2/s2closest_cell_query_base_test.cc +63 -0
- package/third_party/s2geometry/src/s2/s2closest_cell_query_test.cc +412 -0
- package/third_party/s2geometry/src/s2/s2closest_edge_query.cc +106 -0
- package/third_party/s2geometry/src/s2/s2closest_edge_query.h +421 -0
- package/third_party/s2geometry/src/s2/s2closest_edge_query_base.h +946 -0
- package/third_party/s2geometry/src/s2/s2closest_edge_query_base_test.cc +59 -0
- package/third_party/s2geometry/src/s2/s2closest_edge_query_test.cc +505 -0
- package/third_party/s2geometry/src/s2/s2closest_edge_query_testing.h +91 -0
- package/third_party/s2geometry/src/s2/s2closest_point_query.cc +66 -0
- package/third_party/s2geometry/src/s2/s2closest_point_query.h +465 -0
- package/third_party/s2geometry/src/s2/s2closest_point_query_base.h +767 -0
- package/third_party/s2geometry/src/s2/s2closest_point_query_base_test.cc +63 -0
- package/third_party/s2geometry/src/s2/s2closest_point_query_test.cc +312 -0
- package/third_party/s2geometry/src/s2/s2contains_point_query.h +328 -0
- package/third_party/s2geometry/src/s2/s2contains_point_query_test.cc +159 -0
- package/third_party/s2geometry/src/s2/s2contains_vertex_query.cc +39 -0
- package/third_party/s2geometry/src/s2/s2contains_vertex_query.h +66 -0
- package/third_party/s2geometry/src/s2/s2contains_vertex_query_test.cc +67 -0
- package/third_party/s2geometry/src/s2/s2convex_hull_query.cc +198 -0
- package/third_party/s2geometry/src/s2/s2convex_hull_query.h +110 -0
- package/third_party/s2geometry/src/s2/s2convex_hull_query_test.cc +208 -0
- package/third_party/s2geometry/src/s2/s2coords.cc +146 -0
- package/third_party/s2geometry/src/s2/s2coords.h +459 -0
- package/third_party/s2geometry/src/s2/s2coords_internal.h +71 -0
- package/third_party/s2geometry/src/s2/s2coords_test.cc +218 -0
- package/third_party/s2geometry/src/s2/s2crossing_edge_query.cc +380 -0
- package/third_party/s2geometry/src/s2/s2crossing_edge_query.h +220 -0
- package/third_party/s2geometry/src/s2/s2crossing_edge_query_test.cc +382 -0
- package/third_party/s2geometry/src/s2/s2debug.cc +23 -0
- package/third_party/s2geometry/src/s2/s2debug.h +69 -0
- package/third_party/s2geometry/src/s2/s2distance_target.h +165 -0
- package/third_party/s2geometry/src/s2/s2earth.cc +52 -0
- package/third_party/s2geometry/src/s2/s2earth.h +268 -0
- package/third_party/s2geometry/src/s2/s2earth_test.cc +146 -0
- package/third_party/s2geometry/src/s2/s2edge_clipping.cc +462 -0
- package/third_party/s2geometry/src/s2/s2edge_clipping.h +183 -0
- package/third_party/s2geometry/src/s2/s2edge_clipping_test.cc +335 -0
- package/third_party/s2geometry/src/s2/s2edge_crosser.cc +85 -0
- package/third_party/s2geometry/src/s2/s2edge_crosser.h +343 -0
- package/third_party/s2geometry/src/s2/s2edge_crosser_test.cc +264 -0
- package/third_party/s2geometry/src/s2/s2edge_crossings.cc +515 -0
- package/third_party/s2geometry/src/s2/s2edge_crossings.h +138 -0
- package/third_party/s2geometry/src/s2/s2edge_crossings_internal.h +59 -0
- package/third_party/s2geometry/src/s2/s2edge_crossings_test.cc +246 -0
- package/third_party/s2geometry/src/s2/s2edge_distances.cc +419 -0
- package/third_party/s2geometry/src/s2/s2edge_distances.h +192 -0
- package/third_party/s2geometry/src/s2/s2edge_distances_test.cc +539 -0
- package/third_party/s2geometry/src/s2/s2edge_tessellator.cc +276 -0
- package/third_party/s2geometry/src/s2/s2edge_tessellator.h +101 -0
- package/third_party/s2geometry/src/s2/s2edge_tessellator_test.cc +492 -0
- package/third_party/s2geometry/src/s2/s2edge_vector_shape.h +85 -0
- package/third_party/s2geometry/src/s2/s2edge_vector_shape_test.cc +66 -0
- package/third_party/s2geometry/src/s2/s2error.cc +29 -0
- package/third_party/s2geometry/src/s2/s2error.h +147 -0
- package/third_party/s2geometry/src/s2/s2error_test.cc +31 -0
- package/third_party/s2geometry/src/s2/s2furthest_edge_query.cc +117 -0
- package/third_party/s2geometry/src/s2/s2furthest_edge_query.h +439 -0
- package/third_party/s2geometry/src/s2/s2furthest_edge_query_test.cc +487 -0
- package/third_party/s2geometry/src/s2/s2latlng.cc +90 -0
- package/third_party/s2geometry/src/s2/s2latlng.h +234 -0
- package/third_party/s2geometry/src/s2/s2latlng_rect.cc +727 -0
- package/third_party/s2geometry/src/s2/s2latlng_rect.h +434 -0
- package/third_party/s2geometry/src/s2/s2latlng_rect_bounder.cc +344 -0
- package/third_party/s2geometry/src/s2/s2latlng_rect_bounder.h +89 -0
- package/third_party/s2geometry/src/s2/s2latlng_rect_bounder_test.cc +306 -0
- package/third_party/s2geometry/src/s2/s2latlng_rect_test.cc +1030 -0
- package/third_party/s2geometry/src/s2/s2latlng_test.cc +165 -0
- package/third_party/s2geometry/src/s2/s2lax_loop_shape.cc +104 -0
- package/third_party/s2geometry/src/s2/s2lax_loop_shape.h +153 -0
- package/third_party/s2geometry/src/s2/s2lax_loop_shape_test.cc +101 -0
- package/third_party/s2geometry/src/s2/s2lax_polygon_shape.cc +348 -0
- package/third_party/s2geometry/src/s2/s2lax_polygon_shape.h +183 -0
- package/third_party/s2geometry/src/s2/s2lax_polygon_shape_test.cc +234 -0
- package/third_party/s2geometry/src/s2/s2lax_polyline_shape.cc +118 -0
- package/third_party/s2geometry/src/s2/s2lax_polyline_shape.h +124 -0
- package/third_party/s2geometry/src/s2/s2lax_polyline_shape_test.cc +62 -0
- package/third_party/s2geometry/src/s2/s2loop.cc +1509 -0
- package/third_party/s2geometry/src/s2/s2loop.h +711 -0
- package/third_party/s2geometry/src/s2/s2loop_measures.cc +313 -0
- package/third_party/s2geometry/src/s2/s2loop_measures.h +280 -0
- package/third_party/s2geometry/src/s2/s2loop_measures_test.cc +367 -0
- package/third_party/s2geometry/src/s2/s2loop_test.cc +1371 -0
- package/third_party/s2geometry/src/s2/s2max_distance_targets.cc +265 -0
- package/third_party/s2geometry/src/s2/s2max_distance_targets.h +241 -0
- package/third_party/s2geometry/src/s2/s2max_distance_targets_test.cc +367 -0
- package/third_party/s2geometry/src/s2/s2measures.cc +128 -0
- package/third_party/s2geometry/src/s2/s2measures.h +78 -0
- package/third_party/s2geometry/src/s2/s2measures_test.cc +135 -0
- package/third_party/s2geometry/src/s2/s2metrics.cc +122 -0
- package/third_party/s2geometry/src/s2/s2metrics.h +199 -0
- package/third_party/s2geometry/src/s2/s2metrics_test.cc +127 -0
- package/third_party/s2geometry/src/s2/s2min_distance_targets.cc +295 -0
- package/third_party/s2geometry/src/s2/s2min_distance_targets.h +273 -0
- package/third_party/s2geometry/src/s2/s2min_distance_targets_test.cc +239 -0
- package/third_party/s2geometry/src/s2/s2padded_cell.cc +162 -0
- package/third_party/s2geometry/src/s2/s2padded_cell.h +108 -0
- package/third_party/s2geometry/src/s2/s2padded_cell_test.cc +138 -0
- package/third_party/s2geometry/src/s2/s2point.h +38 -0
- package/third_party/s2geometry/src/s2/s2point_compression.cc +388 -0
- package/third_party/s2geometry/src/s2/s2point_compression.h +78 -0
- package/third_party/s2geometry/src/s2/s2point_compression_test.cc +305 -0
- package/third_party/s2geometry/src/s2/s2point_index.h +345 -0
- package/third_party/s2geometry/src/s2/s2point_index_test.cc +147 -0
- package/third_party/s2geometry/src/s2/s2point_region.cc +72 -0
- package/third_party/s2geometry/src/s2/s2point_region.h +76 -0
- package/third_party/s2geometry/src/s2/s2point_region_test.cc +100 -0
- package/third_party/s2geometry/src/s2/s2point_span.h +57 -0
- package/third_party/s2geometry/src/s2/s2point_test.cc +47 -0
- package/third_party/s2geometry/src/s2/s2point_vector_shape.h +127 -0
- package/third_party/s2geometry/src/s2/s2point_vector_shape_test.cc +59 -0
- package/third_party/s2geometry/src/s2/s2pointutil.cc +131 -0
- package/third_party/s2geometry/src/s2/s2pointutil.h +138 -0
- package/third_party/s2geometry/src/s2/s2pointutil_test.cc +157 -0
- package/third_party/s2geometry/src/s2/s2polygon.cc +1569 -0
- package/third_party/s2geometry/src/s2/s2polygon.h +934 -0
- package/third_party/s2geometry/src/s2/s2polygon_test.cc +3025 -0
- package/third_party/s2geometry/src/s2/s2polyline.cc +645 -0
- package/third_party/s2geometry/src/s2/s2polyline.h +379 -0
- package/third_party/s2geometry/src/s2/s2polyline_alignment.cc +414 -0
- package/third_party/s2geometry/src/s2/s2polyline_alignment.h +245 -0
- package/third_party/s2geometry/src/s2/s2polyline_alignment_internal.h +158 -0
- package/third_party/s2geometry/src/s2/s2polyline_alignment_test.cc +610 -0
- package/third_party/s2geometry/src/s2/s2polyline_measures.cc +42 -0
- package/third_party/s2geometry/src/s2/s2polyline_measures.h +53 -0
- package/third_party/s2geometry/src/s2/s2polyline_measures_test.cc +57 -0
- package/third_party/s2geometry/src/s2/s2polyline_simplifier.cc +187 -0
- package/third_party/s2geometry/src/s2/s2polyline_simplifier.h +109 -0
- package/third_party/s2geometry/src/s2/s2polyline_simplifier_test.cc +165 -0
- package/third_party/s2geometry/src/s2/s2polyline_test.cc +554 -0
- package/third_party/s2geometry/src/s2/s2predicates.cc +1486 -0
- package/third_party/s2geometry/src/s2/s2predicates.h +282 -0
- package/third_party/s2geometry/src/s2/s2predicates_internal.h +135 -0
- package/third_party/s2geometry/src/s2/s2predicates_test.cc +1427 -0
- package/third_party/s2geometry/src/s2/s2projections.cc +109 -0
- package/third_party/s2geometry/src/s2/s2projections.h +161 -0
- package/third_party/s2geometry/src/s2/s2projections_test.cc +78 -0
- package/third_party/s2geometry/src/s2/s2r2rect.cc +88 -0
- package/third_party/s2geometry/src/s2/s2r2rect.h +292 -0
- package/third_party/s2geometry/src/s2/s2r2rect_test.cc +312 -0
- package/third_party/s2geometry/src/s2/s2region.cc +26 -0
- package/third_party/s2geometry/src/s2/s2region.h +142 -0
- package/third_party/s2geometry/src/s2/s2region_coverer.cc +514 -0
- package/third_party/s2geometry/src/s2/s2region_coverer.h +356 -0
- package/third_party/s2geometry/src/s2/s2region_coverer_test.cc +509 -0
- package/third_party/s2geometry/src/s2/s2region_intersection.cc +84 -0
- package/third_party/s2geometry/src/s2/s2region_intersection.h +79 -0
- package/third_party/s2geometry/src/s2/s2region_term_indexer.cc +270 -0
- package/third_party/s2geometry/src/s2/s2region_term_indexer.h +299 -0
- package/third_party/s2geometry/src/s2/s2region_term_indexer_test.cc +209 -0
- package/third_party/s2geometry/src/s2/s2region_test.cc +370 -0
- package/third_party/s2geometry/src/s2/s2region_union.cc +90 -0
- package/third_party/s2geometry/src/s2/s2region_union.h +83 -0
- package/third_party/s2geometry/src/s2/s2region_union_test.cc +89 -0
- package/third_party/s2geometry/src/s2/s2shape.h +283 -0
- package/third_party/s2geometry/src/s2/s2shape_index.cc +321 -0
- package/third_party/s2geometry/src/s2/s2shape_index.h +781 -0
- package/third_party/s2geometry/src/s2/s2shape_index_buffered_region.cc +113 -0
- package/third_party/s2geometry/src/s2/s2shape_index_buffered_region.h +135 -0
- package/third_party/s2geometry/src/s2/s2shape_index_buffered_region_test.cc +162 -0
- package/third_party/s2geometry/src/s2/s2shape_index_measures.cc +92 -0
- package/third_party/s2geometry/src/s2/s2shape_index_measures.h +100 -0
- package/third_party/s2geometry/src/s2/s2shape_index_measures_test.cc +136 -0
- package/third_party/s2geometry/src/s2/s2shape_index_region.h +350 -0
- package/third_party/s2geometry/src/s2/s2shape_index_region_test.cc +161 -0
- package/third_party/s2geometry/src/s2/s2shape_index_test.cc +24 -0
- package/third_party/s2geometry/src/s2/s2shape_measures.cc +138 -0
- package/third_party/s2geometry/src/s2/s2shape_measures.h +95 -0
- package/third_party/s2geometry/src/s2/s2shape_measures_test.cc +139 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_build_polygon_boundaries.cc +120 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_build_polygon_boundaries.h +66 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_build_polygon_boundaries_test.cc +170 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_coding.cc +253 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_coding.h +283 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_coding_test.cc +54 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_contains_brute_force.cc +40 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_contains_brute_force.h +41 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_contains_brute_force_test.cc +55 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_count_edges.h +57 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_count_edges_test.cc +43 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_edge_iterator.cc +45 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_edge_iterator.h +72 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_edge_iterator_test.cc +116 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_get_reference_point.cc +107 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_get_reference_point.h +48 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_get_reference_point_test.cc +104 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_range_iterator.cc +58 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_range_iterator.h +65 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_range_iterator_test.cc +61 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_shape_edge.h +58 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_shape_edge_id.h +97 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_testing.cc +104 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_testing.h +36 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_visit_crossing_edge_pairs.cc +440 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_visit_crossing_edge_pairs.h +72 -0
- package/third_party/s2geometry/src/s2/s2shapeutil_visit_crossing_edge_pairs_test.cc +184 -0
- package/third_party/s2geometry/src/s2/s2testing.cc +464 -0
- package/third_party/s2geometry/src/s2/s2testing.h +385 -0
- package/third_party/s2geometry/src/s2/s2testing_test.cc +166 -0
- package/third_party/s2geometry/src/s2/s2text_format.cc +506 -0
- package/third_party/s2geometry/src/s2/s2text_format.h +289 -0
- package/third_party/s2geometry/src/s2/s2text_format_test.cc +417 -0
- package/third_party/s2geometry/src/s2/s2wedge_relations.cc +80 -0
- package/third_party/s2geometry/src/s2/s2wedge_relations.h +64 -0
- package/third_party/s2geometry/src/s2/s2wedge_relations_test.cc +89 -0
- package/third_party/s2geometry/src/s2/sequence_lexicon.h +296 -0
- package/third_party/s2geometry/src/s2/sequence_lexicon_test.cc +113 -0
- package/third_party/s2geometry/src/s2/strings/ostringstream.cc +35 -0
- package/third_party/s2geometry/src/s2/strings/ostringstream.h +105 -0
- package/third_party/s2geometry/src/s2/strings/serialize.cc +46 -0
- package/third_party/s2geometry/src/s2/strings/serialize.h +40 -0
- package/third_party/s2geometry/src/s2/third_party/absl/algorithm/algorithm.h +187 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/attributes.h +666 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/casts.h +189 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/config.h +462 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/dynamic_annotations.cc +129 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/dynamic_annotations.h +394 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/atomic_hook.h +168 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/identity.h +33 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/inline_variable.h +117 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/invoke.h +188 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/raw_logging.cc +254 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/raw_logging.h +205 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/throw_delegate.cc +106 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/throw_delegate.h +71 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/internal/unaligned_access.h +322 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/log_severity.h +77 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/macros.h +236 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/optimization.h +177 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/policy_checks.h +124 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/port.h +97 -0
- package/third_party/s2geometry/src/s2/third_party/absl/base/thread_annotations.h +277 -0
- package/third_party/s2geometry/src/s2/third_party/absl/container/fixed_array.h +523 -0
- package/third_party/s2geometry/src/s2/third_party/absl/container/inlined_vector.h +1453 -0
- package/third_party/s2geometry/src/s2/third_party/absl/container/internal/compressed_tuple.h +191 -0
- package/third_party/s2geometry/src/s2/third_party/absl/container/internal/container_memory.h +424 -0
- package/third_party/s2geometry/src/s2/third_party/absl/container/internal/layout.h +739 -0
- package/third_party/s2geometry/src/s2/third_party/absl/memory/memory.h +755 -0
- package/third_party/s2geometry/src/s2/third_party/absl/meta/type_traits.h +436 -0
- package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128.cc +232 -0
- package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128.h +656 -0
- package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128_have_intrinsic.inc +3 -0
- package/third_party/s2geometry/src/s2/third_party/absl/numeric/int128_no_intrinsic.inc +3 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/ascii.cc +198 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/ascii.h +239 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/ascii_ctype.h +66 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/bits.h +53 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/memutil.cc +110 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/memutil.h +146 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/internal/resize_uninitialized.h +72 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/match.cc +38 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/match.h +89 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/numbers.cc +909 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/numbers.h +187 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/str_cat.cc +240 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/str_cat.h +398 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/str_join.h +22 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/str_split.cc +47 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/str_split.h +43 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/string_view.cc +245 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/string_view.h +602 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/strip.cc +42 -0
- package/third_party/s2geometry/src/s2/third_party/absl/strings/strip.h +130 -0
- package/third_party/s2geometry/src/s2/third_party/absl/types/span.h +793 -0
- package/third_party/s2geometry/src/s2/third_party/absl/utility/utility.h +299 -0
- package/third_party/s2geometry/src/s2/util/bits/bit-interleave.cc +274 -0
- package/third_party/s2geometry/src/s2/util/bits/bit-interleave.h +53 -0
- package/third_party/s2geometry/src/s2/util/bits/bits.cc +155 -0
- package/third_party/s2geometry/src/s2/util/bits/bits.h +745 -0
- package/third_party/s2geometry/src/s2/util/coding/coder.cc +83 -0
- package/third_party/s2geometry/src/s2/util/coding/coder.h +553 -0
- package/third_party/s2geometry/src/s2/util/coding/nth-derivative.h +134 -0
- package/third_party/s2geometry/src/s2/util/coding/transforms.h +62 -0
- package/third_party/s2geometry/src/s2/util/coding/varint.cc +289 -0
- package/third_party/s2geometry/src/s2/util/coding/varint.h +476 -0
- package/third_party/s2geometry/src/s2/util/endian/endian.h +859 -0
- package/third_party/s2geometry/src/s2/util/gtl/btree.h +2471 -0
- package/third_party/s2geometry/src/s2/util/gtl/btree_container.h +411 -0
- package/third_party/s2geometry/src/s2/util/gtl/btree_map.h +79 -0
- package/third_party/s2geometry/src/s2/util/gtl/btree_set.h +73 -0
- package/third_party/s2geometry/src/s2/util/gtl/compact_array.h +653 -0
- package/third_party/s2geometry/src/s2/util/gtl/container_logging.h +291 -0
- package/third_party/s2geometry/src/s2/util/gtl/dense_hash_set.h +358 -0
- package/third_party/s2geometry/src/s2/util/gtl/densehashtable.h +1493 -0
- package/third_party/s2geometry/src/s2/util/gtl/hashtable_common.h +253 -0
- package/third_party/s2geometry/src/s2/util/gtl/layout.h +28 -0
- package/third_party/s2geometry/src/s2/util/gtl/legacy_random_shuffle.h +77 -0
- package/third_party/s2geometry/src/s2/util/hash/mix.h +76 -0
- package/third_party/s2geometry/src/s2/util/math/exactfloat/exactfloat.cc +832 -0
- package/third_party/s2geometry/src/s2/util/math/exactfloat/exactfloat.h +646 -0
- package/third_party/s2geometry/src/s2/util/math/mathutil.cc +75 -0
- package/third_party/s2geometry/src/s2/util/math/mathutil.h +189 -0
- package/third_party/s2geometry/src/s2/util/math/matrix3x3.h +574 -0
- package/third_party/s2geometry/src/s2/util/math/vector.h +569 -0
- package/third_party/s2geometry/src/s2/util/math/vector3_hash.h +54 -0
- package/third_party/s2geometry/src/s2/util/units/length-units.cc +21 -0
- package/third_party/s2geometry/src/s2/util/units/length-units.h +135 -0
- package/third_party/s2geometry/src/s2/util/units/physical-units.h +313 -0
- package/third_party/s2geometry/src/s2/value_lexicon.h +234 -0
- package/third_party/s2geometry/src/s2/value_lexicon_test.cc +121 -0
- package/third_party/s2geometry/third_party/cmake/FindGFlags.cmake +48 -0
- 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
|
+
|