Commit Graph

5253 Commits

Author SHA1 Message Date
Adam Wulkiewicz
1186dedeb8 [strategies] Add ctors, store substrategy and propagate radius in distance segment/box strategy. 2020-10-22 03:33:09 +02:00
Adam Wulkiewicz
6b74f7c8a3 Support umbrella strategies in relops, setops, index, buffer and more.
Also is_simple, is_valid and extensions like dissolve and nsphere relops.

Add umbrella strategies:
 - relate: used in setops, relops, buffer, is_xxx, dissolve, etc.
 - index: used in rtree
 - io: used in wkt read/write and extensions/shapefile

Replace `point_box_by_side` agnostic strategy with CS-specific strategies.

Fix passing of strategies (no defaults when user-defined strategy is
passed) in places like buffer and distance.

Alter tests accordingly.
2020-10-21 17:42:02 +02:00
Adam Wulkiewicz
3402c9101d Replace boost::tuple with std::tuple or custom classes.
Modernize tuple support.
2020-10-21 16:21:06 +02:00
Adam Wulkiewicz
54f141779b Include only necessary headers of Boost.Range. 2020-10-16 01:23:06 +02:00
Adam Wulkiewicz
7b8b3f694a Merge pull request #759 from awulkiew/feature/static_assert
Replace MPL_ASSERT with std static_assert.
2020-10-16 01:03:34 +02:00
Adam Wulkiewicz
aeb81ebfd6 Replace MPL_ASSERT with std static_assert.
Also include only necessary headers from Boost.Range.
2020-10-16 00:31:22 +02:00
Barend Gehrels
64c09d07f0 Merge pull request #761 from barendgehrels/remove-ttmath
Remove ttmath
2020-10-13 18:25:34 +02:00
Pranam Lashkari
055684bc41 resolve c2146 on vs15 with area_result declaration 2020-10-12 19:12:54 +05:30
Barend Gehrels
84e19aff1c [extensions] remove HAVE_TTMATH and other occurances of ttmath 2020-10-07 14:06:04 +02:00
Barend Gehrels
45d624af9b [cleanup] remove HAVE_TTMATH and other occurances of ttmath 2020-10-07 14:05:28 +02:00
Adam Wulkiewicz
ab9f1de1ad Merge pull request #748 from awulkiew/feature/type_traits
Remove direct usage of Boost.MPL and Boost.TypeTraits from the library.
2020-10-01 19:06:51 +02:00
Barend Gehrels
0fd961b595 [buffer] specify the correct types for monotonic sections and partitioning,
and re-introduce moving iterators to monotonic sections because it
performs around 25% better
2020-09-30 10:15:32 +02:00
Barend Gehrels
5eb1e809e9 [buffer][fix] Fix distance measure for use in multi precision types 2020-09-30 10:14:10 +02:00
Barend Gehrels
5fe26e45b4 Merge pull request #752 from barendgehrels/buffer/fix_type_conflicts
[buffer] Several changes necessary to handle different types
2020-09-13 22:06:09 +02:00
Adam Wulkiewicz
8763d3cae3 [algorithms] Replace mpl::vector_c with std::integer_sequence in sectionalize. 2020-09-11 13:50:04 +02:00
Adam Wulkiewicz
dd5ae391bd Move type_traits and sequence tools to util namespace. 2020-09-10 23:37:55 +02:00
Adam Wulkiewicz
9a248be454 [algorithms] Replace MPL sequences in relate(). 2020-09-10 01:26:39 +02:00
Adam Wulkiewicz
d967c8f08d [geometries] Replace MPL sequence with parameter pack in specialization of point_type for boost::variant. 2020-09-09 18:05:01 +02:00
Adam Wulkiewicz
22b2031dad [util][strategies] Add more sequence utilities, remove type_pair and integer_pair, use sequences instead. 2020-09-09 18:02:50 +02:00
Barend Gehrels
9e1a4373dc [buffer] Several changes necessary to handle different types (float, long double, boost MP) 2020-09-09 14:11:36 +02:00
Adam Wulkiewicz
b0b2fd6b86 [core][util] Deprecate core/is_areal.hpp 2020-09-05 21:56:01 +02:00
Adam Wulkiewicz
9c095f4d37 Implement compile-time sequence utilities and use them instead of MPL.
distance and length result types are reimplemented.

distance result can no longer be variant type. This might rarely occur
if in a variant type there were two geometries using different
coordinate types and one of them were of greater precision than double.

Deprecate combine_if, compress_variant and transform_variant utilities.
2020-09-05 17:44:11 +02:00
Adam Wulkiewicz
52af5408e2 [util] Replace Boost.MPL sequence in promote_integral with parameter pack. 2020-09-04 18:27:54 +02:00
Adam Wulkiewicz
30d9fbba66 Replace select_sequence_element with select_pack_element and use it in area_result. 2020-09-04 17:48:25 +02:00
Adam Wulkiewicz
cf9549d668 Replace boost integral constants with std. 2020-09-03 19:58:49 +02:00
Adam Wulkiewicz
9b09cd2efa Divide type_traits, replace bare_type with remove_cptrref.
Divide type_traits into two groups:
- util/type_traits_std.hpp - dependant only on std type_traits
- util/type_traits.hpp - dependant on geometry tags, also including the
above.

Add remove_cptrref and use it instead of bare_type.

For now keep bare_type, move it to util/type_traits_std.hpp.
2020-09-03 19:32:01 +02:00
Adam Wulkiewicz
00f00369cd Replace add_const_if_c with transcribe_const.
Move add_const_if_c to util/type_traits.hpp
Remove usage when not needed.
2020-09-03 16:26:06 +02:00
Adam Wulkiewicz
c63e7a8394 Move is_range util to range.hpp to avoid Boost.Range/MPL dependency in type_traits.hpp 2020-09-03 16:24:29 +02:00
Adam Wulkiewicz
d7619d11c2 Replace Boost.MPL/TypeTraits with std type_traits in various parts of the library. 2020-09-03 13:36:18 +02:00
Adam Wulkiewicz
b9a60636e0 [util] Add more type_traits. 2020-09-03 13:35:19 +02:00
Adam Wulkiewicz
6c0490a366 Merge branch 'develop' into feature/type_traits 2020-08-31 23:33:27 +02:00
Adam Wulkiewicz
3cd74503b1 [util] Use std type_traits instead of Boost type_traits/mpl in various utils. 2020-08-31 01:43:44 +02:00
Adam Wulkiewicz
8deda7466c [index] Replace deprecated header. 2020-08-30 04:18:14 +02:00
Adam Wulkiewicz
dda7e6b450 [index] Fix compilation error and warning in varray_detail.
Error with msvc-14.2: ambiguous call to destroy()
  - explicitly define namespace

Warning with gcc-8.1: memcpy called for non-trivially-copyable type
  - check correct type trait
2020-08-30 03:46:09 +02:00
Adam Wulkiewicz
9c4c884a4c [strategies] Use select_calculation_type in buffer::geographic_point_circle. 2020-08-29 17:43:09 +02:00
Adam Wulkiewicz
4b75d69937 Move various traits to util/type_traits.hpp and adapt the code using them. 2020-08-29 01:48:39 +02:00
Adam Wulkiewicz
786bc54c68 Add util/type_traits, polylinear_tag, simplify types in umbrella strategies. 2020-08-28 19:12:31 +02:00
Adam Wulkiewicz
5ca542fc4f Merge pull request #726 from awulkiew/feature/strategies
Umbrella strategies.
2020-08-28 16:16:25 +02:00
Adam Wulkiewicz
0166c8ea6e Merge pull request #743 from awulkiew/feature/for_each
Refactor for_each_x and implement new algorithms.
2020-08-24 12:37:23 +02:00
Adam Wulkiewicz
7ef3117f27 [for_each] Refactor for_each_x and implement new algorithms.
for_each_range now expects functors instead of structs with apply()
member function.

for_each_segment now calls functor also for degenerated ranges for
consistency with segment_iterator.

New algorithms based on std::all_of, std::any_of and std::none_of
- all_points_of, any_point_of, none_point_of
- all_segments_of, any_segment_of, none_segment_of
- all_ranges_of, any_range_of, none_range_of

New algorithms used in several places in the library.

This code requires C++14.
2020-08-24 12:28:43 +02:00
Adam Wulkiewicz
070480d97c Merge pull request #745 from awulkiew/feature/constexpr
Support constexpr in points, segment, box, get, dot and cross products.
2020-08-24 12:26:52 +02:00
Barend Gehrels
5813841757 Merge pull request #744 from barendgehrels/fix/remove_is_ii
[get_turn_info] Remove the recently added is_ii
2020-08-19 09:51:30 +02:00
Adam Wulkiewicz
0326eaf679 [arithmetic][core][geometries] Support constexpr in points, segment, box, get, dot and cross products. 2020-08-16 00:50:35 +02:00
Adam Wulkiewicz
99fe9fe6c6 [is_valid] Add TODO comments in is_valid for linestrings. 2020-08-13 19:19:32 +02:00
Barend Gehrels
7739109b3b [get_turn_info] Remove the recently added is_ii 2020-08-12 11:39:22 +02:00
Adam Wulkiewicz
734b6470af [strategies] Add missing #includes. 2020-08-10 21:06:46 +02:00
Barend Gehrels
8251f19331 Merge pull request #741 from barendgehrels/fix/handle_as_touch
Fix/handle as touch
2020-08-10 20:46:00 +02:00
Adam Wulkiewicz
98617679bb [algorithms] Fix dangling references for referring_segment and non-true references returned from ranges. 2020-08-10 12:40:55 +02:00
Adam Wulkiewicz
52cceae021 [strategies] Relocate area, envelope and expand strategies. 2020-08-05 22:59:13 +02:00
Barend Gehrels
adef6b24de [turns] handle ii-situation in touch,
which is a new situation which needs to be handled in the handle-as-touch,
in last commit.
2020-08-05 11:10:15 +02:00