Patrick Niklaus
ba2a2ff5e8
Remove RemoveIterator because its dangerous
2017-10-16 13:40:02 +01:00
Patrick Niklaus
9b87b8b7b1
Replace deallocation vector with std::vector and different merge algorithm
2017-10-16 13:40:02 +01:00
Patrick Niklaus
69db219423
Remove unused definition in contractor
2017-10-16 13:40:02 +01:00
Denis Koronchik
4b8daac104
Fix formatting
2017-10-16 12:15:12 +01:00
Denis Koronchik
c42e247d87
Work on relation extract refactoring to support recursive relations (superrelations)
2017-10-16 12:15:12 +01:00
vng
c718f140fa
Fixed c/p typo.
2017-10-14 15:05:26 +02:00
karenzshea
e385f6352e
restore libosrm interface for corech, fallback to ch
2017-10-13 14:53:49 +01:00
karenzshea
4f3414c4cc
remove core factor opt from exclude graph
2017-10-13 14:53:49 +01:00
karenzshea
df79b5b4cc
deprecation notices
2017-10-13 14:53:49 +01:00
karenzshea
2a13f9d10b
fallback to CH, when coreCH used
2017-10-13 14:53:49 +01:00
Denis Koronchik
031ce72db1
Fix issue #4214
2017-10-12 18:00:38 +01:00
Michael Krasnyk
40d9aec71f
Show MLD cell IDs via node ID text background color
2017-10-12 14:27:55 +01:00
Michael Krasnyk
8300a6c57e
Prepare phantom nodes indices in ManyToManySearch search
2017-10-11 16:28:16 +01:00
Michael Krasnyk
29d4bca9ba
Split algorithm-specific manyToMany implementations
2017-10-11 16:28:16 +01:00
Moritz Kobitzsch
fd52c80573
remove workaround, reduce memory consumption in lcs computation
2017-10-11 14:07:35 +02:00
Moritz Kobitzsch
884ce4025b
fix detection of suffix/prefix changes for name-changes
2017-10-11 14:07:35 +02:00
Moritz Kobitzsch
2ddd98ee6d
simplify passing annotation data through OSRM pipeline using the node-based datastore
...
- separates node-based graph creation and compression from edge-based graph creation
- moves usage of edge-based node data-container to pre-processing as well, unifying access to node-based data
- single struct instead of separate vectors for annotation data in engine (single place of modification)
2017-10-09 18:44:43 +02:00
karenzshea
7923fdcaef
error when mld files or data are missing, compability -> compatibility
2017-10-09 16:36:38 +02:00
Michael Krasnyk
fbb2970044
Merge unused 3 bits of PhantomNode into bearing
...
to prevent memcheck reports
==23434== Use of uninitialised value of size 8
==23434== at 0x15CAFB5: boost::archive::iterators::detail::from_6_bit<char>::operator()(char) const (base64_from_binary.hpp:50)
==23434== by 0x15CB6BE: boost::iterators::transform_iterator<boost::archive::iterators::detail::from_6_bit<char>, boost::archive::iterators::transform_width<char const*, 6, 8, char>, boost::iterators::use_default, boost::iterators::use_default>::dereference() const (transform_iterator.hpp:126)
==23434== by 0x15CB6CE: boost::iterators::transform_iterator<boost::archive::iterators::detail::from_6_bit<char>, boost::archive::iterators::transform_width<char const*, 6, 8, char>, boost::iterators::use_default, boost::iterators::use_default>::reference boost::iterators::iterator_core_access::dereference<boost::iterators::transform_iterator<boost::archive::iterators::detail::from_6_bit<char>, boost::archive::iterators::transform_width<char const*, 6, 8, char>, boost::iterators::use_default, boost::iterators::use_default> >(boost::iterators::transform_iterator<boost::archive::iterators::detail::from_6_bit<char>, boost::archive::iterators::transform_width<char const*, 6, 8, char>, boost::iterators::use_default, boost::iterators::use_default> const&) (iterator_facade.hpp:550)
==23434== by 0x15CB6E2: boost::iterators::detail::iterator_facade_base<boost::iterators::transform_iterator<boost::archive::iterators::detail::from_6_bit<char>, boost::archive::iterators::transform_width<char const*, 6, 8, char>, boost::iterators::use_default, boost::iterators::use_default>, char, boost::iterators::single_pass_traversal_tag, char, long, false, false>::operator*() const (iterator_facade.hpp:656)
==23434== by 0x15CB7F4: void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char> >(boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, std::input_iterator_tag) (basic_string.tcc:190)
==23434== by 0x15CB89F: void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct_aux<boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char> >(boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, std::__false_type) (basic_string.h:196)
==23434== by 0x15CB91B: void std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_construct<boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char> >(boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>) (basic_string.h:215)
==23434== by 0x15CB9AA: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string<boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, void>(boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, boost::archive::iterators::base64_from_binary<boost::archive::iterators::transform_width<char const*, 6, 8, char>, char>, std::allocator<char> const&) (basic_string.h:552)
==23434== by 0x15CBB0F: osrm::engine::encodeBase64[abi:cxx11](unsigned char const*, unsigned long) (base64.hpp:65)
==23434== by 0x15CBC01: std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > osrm::engine::encodeBase64Bytewise<osrm::engine::Hint>(osrm::engine::Hint const&) (base64.hpp:94)
==23434== by 0x15CBC45: osrm::engine::Hint::ToBase64[abi:cxx11]() const (hint.cpp:30)
==23434== by 0x16596DC: osrm::engine::api::json::makeWaypoint(osrm::util::Coordinate, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, osrm::engine::Hint const&) (json_factory.cpp:359)
2017-10-09 15:31:59 +01:00
Michael Krasnyk
11e7b6e911
Add last location memoization in Lua context
2017-10-04 10:03:42 +02:00
Michael Krasnyk
545097cf06
Don't use location cache if not needed
2017-10-04 10:03:42 +02:00
Michael Krasnyk
476bc347b4
Allow multiple GeoJSON files with locations data
2017-10-04 10:03:42 +02:00
Michael Krasnyk
095b345713
Change location data method to way:get_location_tags(key)
2017-10-04 10:03:42 +02:00
Michael Krasnyk
0f498d13f5
Access to location dependent data in Lua via way:get_location_tags()
2017-10-04 10:03:42 +02:00
Michael Krasnyk
20ff138f08
Remove polygon copying overhead
2017-10-04 10:03:42 +02:00
Michael Krasnyk
421115200b
Port osmium point-in-polygon function
2017-10-04 10:03:42 +02:00
Michael Krasnyk
b15288e0ea
Add location_dependent_data unit tests
2017-10-04 10:03:42 +02:00
Michael Krasnyk
4eac861eae
Left-hand driving flag review updates
2017-10-04 10:03:42 +02:00
Michael Krasnyk
7ad9e13f1e
Add MultiPolygon support
2017-10-04 10:03:42 +02:00
Michael Krasnyk
fc39e0ce1a
Allow multiple GeoJSON files
2017-10-04 10:03:42 +02:00
Michael Krasnyk
fb02a4c674
Added bit packing for serialization of vector<bool>
2017-10-04 10:03:42 +02:00
Michael Krasnyk
6468f55627
Make class_names default initialized
2017-10-04 10:03:42 +02:00
Michael Krasnyk
3c399e5c28
Propagate is_left_hand_driving from profile to data facade
2017-10-04 10:03:42 +02:00
Michael Krasnyk
de942155bf
Add local left_hand_driving flag in API version 2
2017-10-04 10:03:42 +02:00
Michael Krasnyk
af3f0a4782
Use driving_side tag of location-dependent data and OSM ways
2017-10-04 10:03:42 +02:00
Michael Krasnyk
c9673741de
Added location dependent data
2017-10-04 10:03:42 +02:00
Michael Krasnyk
d0936dc7fd
Don't force loops in MLD
...
Related commit 0972ec9115
2017-10-03 12:56:50 +02:00
Jack Danger
79d07ef45c
Updating year on all 'Project OSRM' copyrights
2017-10-03 12:03:26 +02:00
Michael Krasnyk
f2333eb31a
Break tie for equal weights but different durations
...
There is no possibility until multiple-weights are implemented
to break tie in the contraction and the direct shortest path plugin
as duration is not computed during contraction.
This must be fixed after multiple-weights implementation
by using `std::tie(weight, duration)` pairs everywhere.
2017-09-29 13:38:52 +02:00
Michael Krasnyk
2715e5758b
Split MLD many-to-many method
2017-09-29 13:38:52 +02:00
Michael Krasnyk
454487dd41
Refactor to reuse relaxOutgoingEdges in many-to-many plugin
2017-09-29 13:38:52 +02:00
Michael Krasnyk
2532d56b85
Turn angle calculation needs to respect initial road order, #4331
2017-09-18 21:33:00 +02:00
Michael Krasnyk
e32b8bae00
Make unbuffered log verbosity aware
2017-09-15 15:01:17 +02:00
Michael Krasnyk
ee19383f4d
Link TBB task_scheduler lifetime with Engine scope
2017-09-15 10:55:13 +02:00
Michael Krasnyk
67c85ffa4c
Restructure manyToManySearch for parallelization
2017-09-15 10:55:13 +02:00
Michael Krasnyk
5ca38eee3a
Remove RelationMemberWrap and avoid data copying
2017-09-14 20:00:05 +02:00
Denis Koronchik
ff3b398e23
Review fixes
2017-09-14 20:00:05 +02:00
Denis Koronchik
75bdf114be
Review fixes
2017-09-14 20:00:05 +02:00
Denis Koronchik
c2fd64d3cc
Apply clang format
2017-09-14 20:00:05 +02:00
Denis Koronchik
f79bcc6b8d
Pass relation data to way and node functions
2017-09-14 20:00:05 +02:00
Denis Koronchik
f2b63ba0aa
LUA binding for a relation processing
2017-09-14 20:00:05 +02:00
Denis Koronchik
a253111cbe
Add ExtractionRelation class
2017-09-14 20:00:05 +02:00
Moritz Kobitzsch
c2dc7e9cd0
use enter + exit for roundabout instructions ( #4358 )
...
* Expose roundabout/rotary exit instructions as a new instruction type.
2017-09-05 12:30:34 -07:00
Daniel Patterson
0fc1aa2711
Adds turn instructions to the turns layer in debug tiles. ( #4460 )
...
Add turn types and modifiers to turn points in debug tiles. Also refactor some of the tile code to reduce some repetition.
2017-09-01 15:08:22 -07:00
Patrick Niklaus
61c430c098
Implement exclude flags on CH using shared core
...
The core is fully contracted for each exclude flag
and stored in a merged graph data structure.
2017-09-01 21:26:00 +02:00
Patrick Niklaus
4b75cb8b0e
Make DynamicGraph copyable
2017-09-01 21:26:00 +02:00
Patrick Niklaus
53f87c08b5
Rename GraphView -> BisectionGraphView to avoid name conflicts
2017-09-01 21:26:00 +02:00
Patrick Niklaus
e23dc8977f
Refactor contract to be a stateless function
2017-09-01 21:26:00 +02:00
Patrick Niklaus
421dc5b6ec
Don't return edge list in contractor but modify graph in-place
2017-09-01 21:26:00 +02:00
Patrick Niklaus
247f1c120f
Make renumbering transparent to contraction
2017-09-01 21:26:00 +02:00
Patrick Niklaus
e011c60e12
Replace flush in contract with in-place renumbering
2017-09-01 21:26:00 +02:00
Patrick Niklaus
26c909b64b
Refactor contractor to pass in graph directly
2017-09-01 21:26:00 +02:00
Daniel Patterson
b17f40862c
If traffic CSV has an empty 4th column, preserve the weight on an edge while updating the duration.
2017-09-01 08:34:58 -07:00
Lev Dragunov
cf2573157f
clang-format with older version
2017-08-31 11:11:05 +02:00
Lev Dragunov
80c55119d2
Add bearing for the phantom node
2017-08-31 11:11:05 +02:00
Mateusz Loskot
7323221e3b
Add --verbosity,-l command line option
...
Allow to fine-control logging verbosity via command line
and LogPolicy setting (useful when OSRM used as library).
Closes #4299
2017-08-31 00:35:23 +02:00
Mateusz Loskot
2385602500
Switch to reliable non-existent handle for QueryHeap items.
...
Default-constructed objects of (boost::heap) handle_type are singular,
including the wrapped handle_type::iterator.
Apparently, MSVC iterator debug facilities strictly require that
one singular instance is compared to another singular instance.
It is not possible to get check-comparabe iterators of non-singular
and singular instances as owning container will always mismatch.
2017-08-30 10:59:43 +02:00
Denis Koronchik
e7abe37b10
Prevent linkage errors when load/write extracted graph from external app
2017-08-22 15:46:06 +02:00
Patrick Niklaus
bc8617a9f4
Fix remaining PR comments
2017-08-21 13:00:12 +02:00
Patrick Niklaus
00e243b23b
Refactor CustomizeCell::RelaxNode to move level check inside function
2017-08-21 13:00:12 +02:00
Patrick Niklaus
27324d0270
Add more tests for exclude validation
2017-08-21 13:00:12 +02:00
Patrick Niklaus
da252c7597
Add node binding integration
2017-08-21 13:00:12 +02:00
Patrick Niklaus
d09f5c0e3a
Avoid -> Exclude
2017-08-21 13:00:12 +02:00
Patrick Niklaus
45140ca9f7
Fix off-by-one in avoid search
2017-08-21 13:00:12 +02:00
Patrick Niklaus
c6be2e768a
Throw an error for invalid classes
2017-08-21 13:00:12 +02:00
Patrick Niklaus
6339395cba
Fix clang format
2017-08-21 13:00:12 +02:00
Patrick Niklaus
bd6492bb38
Fix compilation after rebase
2017-08-21 13:00:12 +02:00
Patrick Niklaus
f93b331817
Add error handling for avoid not implemented
2017-08-21 13:00:12 +02:00
Patrick Niklaus
20e4096c4b
Fix stupid vector size bug
2017-08-21 13:00:12 +02:00
Patrick Niklaus
97952a9289
Don't snap to avoided streets
2017-08-21 13:00:12 +02:00
Patrick Niklaus
a3c94ef632
Avoid nodes that are disabled by an avoid flag
2017-08-21 13:00:12 +02:00
Patrick Niklaus
84fd38ac9c
Add tests for avoid flags
2017-08-21 13:00:12 +02:00
Patrick Niklaus
303a8fae32
Refactor cell weights and durations to own file and allow for multiple metrics
2017-08-21 13:00:12 +02:00
Patrick Niklaus
21686ee8a9
Add datafacade factory to select avoid flags
2017-08-21 13:00:12 +02:00
Patrick Niklaus
c8b142a676
Add placeholders for up to 8 weights
2017-08-21 13:00:12 +02:00
Patrick Niklaus
58061a68c4
Add avoid parameter to the API
2017-08-21 13:00:12 +02:00
Patrick Niklaus
9c11197768
Extract avoidable combinations from profiles into ProfileProperties
2017-08-21 13:00:12 +02:00
Moritz Kobitzsch
f347efb006
detect turning onto oneways at the end of the road as non obvious
2017-08-18 16:33:11 +02:00
Michael Krasnyk
b1358de9bb
Use TBB parallel sort of CSV entries, #4418
2017-08-18 14:37:42 +02:00
Michael Krasnyk
2e404c60f4
Remove references to external sources
2017-08-14 16:18:36 +02:00
vng
40857aae61
Inject offline compressed data facade with OSRM_EXTERNAL_MEMORY option.
2017-08-14 16:18:36 +02:00
vng
a64145b712
Fixed mld algorithm to use template data facade.
2017-08-14 16:18:36 +02:00
vng
945f6da85e
Removed useless include.
2017-08-14 16:18:36 +02:00
vng
76d5d054cb
Compilation fix.
2017-08-14 16:18:36 +02:00
Moritz Kobitzsch
e9c9c87bbc
adjust geojson logger to changes in extractor
2017-08-11 12:03:40 +02:00
Moritz Kobitzsch
93299d6651
handle conditional via-way restrictions
...
- refactor conditional restriction handling to not use external data (first OSM nodes on ways)
- BREAKING: changes internal file format of osrm.restrictions
- add support for general conditional penalties based on edge-based nodes (requires unique edges between nodes)
2017-08-11 11:53:25 +02:00
Mateusz Loskot
80b705e997
Add workaround for Visual C++ issue with std::array in debug
...
If Visual C++ _ITERATOR_DEBUG_LEVEL > 0, then
accessing std::array<char[N], M> elements via reference to const
causes compilation error:
...\msvc\14.10.25017\include\array(181): error C2440: 'return': cannot convert from 'const char *' to 'const char (&)[256]'
Alternative workaround is to remove const qualifier from the GetClassName method.
2017-08-10 12:21:42 +02:00
Moritz Kobitzsch
15426975b6
deduplicate geometry
2017-08-04 11:19:32 +02:00
Moritz Kobitzsch
bbcf343e40
compress traffic signals
...
- handle penalties within edges (not phantom nodes)
- changes model from providing penalties on turns to using additional segments
2017-08-04 11:19:32 +02:00
Moritz Kobitzsch
7620d419c6
fix serialisation of conditional turn restrictions
2017-08-01 12:27:29 +02:00
Michael Krasnyk
c1ad4f6b45
Fix a single weekday grammar callback
2017-07-31 14:56:08 +02:00
Moritz Kobitzsch
8135f08958
restructure for review remarks
2017-07-31 09:36:25 +02:00
Moritz Kobitzsch
8d0202d240
Add data structure to allow identification of via-way turns during creation of edge-based-graph
...
initial version of handling via-way turn restrictions (this is dirty)
- requires update of data structures
- requires clean-up
- requires optimisation
2017-07-31 09:36:25 +02:00
Moritz Kobitzsch
b1809d1667
pre-filter turn restrictions for validity
2017-07-31 09:36:25 +02:00
Moritz Kobitzsch
2e9a7d9c1a
refactor restriction parsing / extraction to actual types
...
Makes turn restrictions into dedicated structures and diferentiates between them via a variant.
Ensures that we do not accidentally mess up ID types within our application.
In addition this improves the restriction performance by only parsing all edges
once at the cost of (at the time of writing) 22MB in terms of main memory usage.
2017-07-31 09:36:25 +02:00
Daniel Patterson
be5fc50136
Save both forward and reverse datasources.
2017-07-27 14:45:28 -07:00
Daniel Patterson
dac6bb27aa
Don't include turn costs when calculation weight/duration/speed annotations.
2017-07-25 15:14:45 -06:00
Pepijn Schoen
8da40419ee
Maintain storage_config exposed API
2017-07-20 12:01:05 +02:00
Pepijn Schoen
0b5c7a97a7
Addressed comments
2017-07-20 12:01:05 +02:00
Pepijn Schoen
d9e8caf369
Use GetPath with file names over accessing member variables
2017-07-20 12:01:05 +02:00
Pepijn Schoen
e208485c17
expose mandatory / optional / output files in io_config; config files to use new io_config constructor
2017-07-20 12:01:05 +02:00
Pepijn Schoen
5a6dee80ac
Fix rebase problems
2017-07-20 12:01:05 +02:00
Pepijn Schoen
67fae1d1f0
rename osrm_input_path to osrm_path, clang-format
2017-07-20 12:01:05 +02:00
Pepijn Schoen
1b31099f73
superclass extractor_config with io_config
2017-07-20 12:01:05 +02:00
Pepijn Schoen
897518a297
superclass customizer_config with io_config
2017-07-20 12:01:05 +02:00
Pepijn Schoen
a9b6686725
superclass partition_config with io_config
2017-07-20 12:01:05 +02:00
Pepijn Schoen
2c7cb5baba
superclass contractor_config with io_config
2017-07-20 12:01:05 +02:00
Pepijn Schoen
29160eec9c
superclass updater_config with io_config
2017-07-20 12:01:05 +02:00
Pepijn Schoen
fe00a8a0ca
superclass storage_config with io_config
2017-07-20 12:01:05 +02:00
Patrick Niklaus
440dccb81b
Move classes to intersection object and don't emit notifications
2017-07-18 16:48:22 +00:00
Emil Tin
e413b25cd9
profiles api v2
2017-07-18 10:09:22 +00:00
Daniel J. Hofmann
5ece65cade
Trigger lane anticipation based on distance, see discussion in #4260
2017-07-18 11:23:46 +02:00
Moritz Kobitzsch
f2f00b99e0
remove usage of use-lane completely
2017-07-18 11:23:46 +02:00
Moritz Kobitzsch
7b755d6f8b
deprecate use-lane -- the information can be found in the intersections array
2017-07-18 11:23:46 +02:00
Patrick Niklaus
49f0b1eb59
Add abstraction to change the data facade at compile time
2017-07-17 11:40:55 +00:00
Michael Krasnyk
b2ed46efb5
Check activation index of EntryClass and warn if activation failed
2017-07-13 22:14:41 +00:00
Daniel J. Hofmann
58b61c68a3
Exposes EngineConfig system-wide limits in Node.js bindings, resolves #4226
2017-07-13 21:48:48 +00:00
Michael Krasnyk
924a8a7e38
Remove STXXL from OSM parsing and enable in CMake by default
2017-07-11 08:23:26 +00:00
Michael Krasnyk
960f9ba29a
Don't use stxxl vector in contractor
2017-07-11 08:23:26 +00:00
Michael Krasnyk
3940cc1641
Switch from stxxl::vector to std::vector in extractor
2017-07-11 08:23:26 +00:00
Michael Krasnyk
a498ba6537
Removed external_to_internal_node_id_map container
2017-07-11 08:23:26 +00:00
Daniel J. Hofmann
c1cb3ebff7
Fixes Node.js bindings always enabling alternatives when using boolean overload
2017-07-10 10:44:15 +02:00
Daniel J. Hofmann
54ceb05420
Implements Alternatives for MLD
2017-07-07 16:12:46 +00:00
Patrick Niklaus
fef0344be0
Don't use bool flags on ExternalMemoryNode because they blow up the struct
2017-07-07 13:24:34 +00:00
Patrick Niklaus
44739f2dc3
Allow users to specify a class for each way
...
This adds the ability to mark ways with a user-defined
class in the profile. This class information will be included
in the response as property of the RouteStep object.
2017-07-06 09:17:49 +00:00
Moritz Kobitzsch
3073f4c0d1
don't announce something if we loose exit numbers while on the ramp
2017-07-04 20:58:19 +00:00
Daniel J. Hofmann
7d900e3b5a
Implements Exit Numbers + Names (junction:ref
way tag for now)
2017-07-04 20:58:19 +00:00
Michael Krasnyk
359ab2b56e
Use highest different level with source but not parent node
2017-07-03 14:57:52 +00:00
Michael Krasnyk
aa736dbe3a
Generalize directShortestPathSearch interface
2017-07-03 14:57:52 +00:00
Michael Krasnyk
3534203083
Generalize manyToManySearch and remove duplications
2017-07-03 14:57:52 +00:00
Michael Krasnyk
517cb5f094
Matrix plugin with MLD overlay
2017-07-03 14:57:52 +00:00
Michael Krasnyk
b910ab9bcb
Add duration values to overlay graph
2017-07-03 14:57:52 +00:00
Michael Krasnyk
0fd71260d3
Enable ManyToManySearch in MLD
2017-07-03 14:57:52 +00:00
Michael Krasnyk
c914afdbf1
Fix missing-field-initializers warnings in PackedVector
2017-06-30 14:27:43 +02:00
Michael Krasnyk
929e5a4de6
Review adjustments for driveway handler, #4151
2017-06-29 15:07:32 +00:00
Michael Krasnyk
df4f0d043a
Added driveway handler
2017-06-29 15:07:32 +00:00
Michael Krasnyk
c8b75c9046
Use thread-safe lock-free assignment in PackedVector::set_value
...
PR uses TBB internal atomic's for atomic CAS on non-atomic data
Corresponding PR https://github.com/Project-OSRM/osrm-backend/pull/4199
Other options:
* use sequential update
* use an internal packed vector lock -> makes packed vector non-movable
* use boost.interprocess atomics implementation -> outdated and only 32 bit version
* use glib atomic's -> requires new dependency
* wait for https://isocpp.org/blog/2014/05/n4013 as_atomic
* use c11 _Atomic and atomic_compare_exchange_weak -> not possible to mix c++11 and c11
* use builtin functions gcc __sync_bool_compare_and_swap and msvc _InterlockedCompareExchange64 -> possible, but requires proper testing
boolean CompareAndSwapPointer(volatile * void * ptr,
void * new_value,
void * old_value) {
if defined(_MSC_VER)
if (InterlockedCompareExchange(ptr, new_value, old_value) == old_value) return false;
else return true;
elif (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) > 40100
return __sync_bool_compare_and_swap(ptr, old_value, new_value);
else
error No implementation
endif
}
* use Boost.Atomic -> requires new dependency
WordT local_lower_word = lower_word, new_lower_word;
do
{
new_lower_word = set_lower_value<WordT, T>(local_lower_word,
lower_mask[internal_index.element],
lower_offset[internal_index.element],
value);
} while (!boost::atomics::detail::operations<sizeof(WordT), false>::compare_exchange_weak(
lower_word,
local_lower_word,
new_lower_word,
boost::memory_order_release,
boost::memory_order_relaxed));
2017-06-27 13:02:53 +02:00
Patrick Niklaus
dd8f5ac01d
Make EMPTY_ENTRY_CLASS constexpr
2017-06-27 09:58:19 +00:00
Patrick Niklaus
22479ff5d8
Avoid dead-lock if other = this
2017-06-27 09:58:19 +00:00
Patrick Niklaus
e5464526c8
Port isc file
2017-06-27 09:58:19 +00:00