Open Source Routing Machine - C++ backend
Go to file
Daniel J. Hofmann 5a257416ca Completely rip out Boost's Spirit / Karma for casting.
This rips out the Bost Spirit / Karma conversion code, using the stdlib
and lightweight alternatives instead.

The main benefit is an immense decrease in compilation times, for every
translation unit that requires the `util/cast.hpp` header.

Note: compared to the version before, there is a minor change in
behavior: the double `-0` was printed as `0` before and is now printed
as `-0`. This comes from the IEE754 standard, specifying signed zeros,
that is `+0` and `-0`. Interesting for us: JavaScript uses IEE754,
resulting in no breakage if used in arithmetic.

Small test case, left hand side was before, right hand side is now:

    $ ./a.out
    -1.123457 vs -1.123457
    -1 vs -1
    -1.3 vs -1.3
    0 vs -0
    0 vs 0
    0 vs 0
    1.3 vs 1.3
    1.123457 vs 1.123457

References:

- https://en.wikipedia.org/wiki/Signed_zero
- http://www.boost.org/doc/libs/1_59_0/doc/html/boost/algorithm/trim_right_if.html
- http://www.boost.org/doc/libs/1_59_0/doc/html/boost/algorithm/is_any_of.html
2015-09-29 16:15:54 +02:00
algorithms Revert parallelization on server part. Let node do this. 2015-09-28 20:26:03 +02:00
benchmarks Remove Boost.Filesystem v3 fix for Boost < 1.48, refactor call sites. 2015-09-29 16:15:54 +02:00
cmake Only replace fingerprint file when MD5 changes. Avoids rebuilding several things if nothing has actually changes, as cmake is only looking at timestamps. 2015-09-04 14:07:40 +02:00
config new cucumber profile for Jenkins that doesn't fail because of an old Gherkin bug 2014-03-24 14:29:19 +01:00
contractor Remove TBB usage from hot code paths 2015-09-28 20:37:09 +02:00
data_structures Revert the usage of TBB's iterator pair taking overloads. 2015-09-28 20:37:09 +02:00
descriptors Remove hand written conversion code and replace with stdlib features. 2015-09-29 16:15:54 +02:00
docker Remove protobuf dependencies from docker setup 2015-08-31 16:48:27 +02:00
extractor Remove hand written conversion code and replace with stdlib features. 2015-09-29 16:15:54 +02:00
features Refactor alternative route test 2015-09-23 15:54:23 +02:00
include/osrm Don't pass by const-value for a read-only view. 2015-09-08 23:34:20 +02:00
library fix some small issues: 2015-09-01 15:20:35 +02:00
plugins Remove hand written conversion code and replace with stdlib features. 2015-09-29 16:15:54 +02:00
profiles Add switch for handling fallback name 2015-09-10 14:11:18 +02:00
routing_algorithms Revert parallelization on algorithms that are used in the server. Let node do this. 2015-09-28 20:26:29 +02:00
scripts Static analysis: integration with the Static Analyzer. 2015-09-22 17:32:32 +02:00
server Remove hand written conversion code and replace with stdlib features. 2015-09-29 16:15:54 +02:00
test Implement raster source feature to read data from third-party sources, to be used in lua profiles. 2015-09-03 22:28:18 -07:00
third_party Merge commit '788bc67faa7738cf7c6b2a192ecf3e3567d1c20e' into develop 2015-08-28 12:42:03 +02:00
tools Revert the usage of TBB's iterator pair taking overloads. 2015-09-28 20:37:09 +02:00
unit_tests Remove template-heavy Boost.MPL headers where not needed. 2015-09-28 15:00:20 +02:00
util Completely rip out Boost's Spirit / Karma for casting. 2015-09-29 16:15:54 +02:00
.clang-format don't binpack parameters on 100 column width 2014-04-21 17:40:05 +02:00
.clang-tidy Integration scripts for Clang's Modernize and Tidy tool. 2015-09-22 17:32:32 +02:00
.gitignore make AppVeyor green again 2015-06-18 18:16:51 +02:00
.gitmodules Removing Docs submodule 2012-12-26 18:29:16 +01:00
.travis.yml Remove protobuf dependencies from travis config 2015-08-31 16:57:42 +02:00
appveyor-build.bat AppVeyor: make tests pass again 2015-09-07 19:45:54 +02:00
appveyor.yml AppVeyor: include osrm.lib in artifact. don't stick to AppVeyor directory structure in build scripts. 2015-09-07 14:26:47 +00:00
build-local.bat AppVeyor: make tests pass again 2015-09-07 19:45:54 +02:00
CMakeLists.txt Exclude unit tests and benchmarks from doxygen and make it more robust. 2015-09-22 16:26:21 +02:00
datastore.cpp Remove Boost.Filesystem v3 fix for Boost < 1.48, refactor call sites. 2015-09-29 16:15:54 +02:00
Doxyfile.in Use Readme.md as mainpage untill we have something better. 2015-09-22 16:26:21 +02:00
extract.cpp Move option parsing to own class 2015-05-28 15:18:48 +02:00
Gemfile change copyright line from personal names to project 2015-02-19 09:19:51 +01:00
Gemfile.lock upgrade to cucumber 2.0 2015-04-30 18:15:46 +02:00
LICENCE.TXT change copyright line from personal names to project 2015-02-19 09:19:51 +01:00
prepare.cpp Move option parsing to own class 2015-05-28 15:18:48 +02:00
profile.lua readding profile.lua 2013-07-02 22:51:21 +02:00
Rakefile add raketask for clearing test cache files 2014-10-17 15:13:06 +02:00
README.md Squashed 'third_party/libosmium/' changes from 8bcd4ea..c43f8db 2015-08-28 12:42:03 +02:00
routed.cpp Modernize the code base to C++11 standards and beyond. 2015-08-18 12:56:34 +02:00
taginfo.json Add object_types to some tags. 2014-09-07 20:39:56 +02:00
typedefs.h Find components on edge-expanded graph 2015-08-06 11:13:25 +02:00

About

The Open Source Routing Machine is a high performance routing engine written in C++11 designed to run on OpenStreetMap data.

Current build status

build config branch status
Linux  master Build Status
Linux  develop Build Status
Windows master/develop Build status
LUAbind fork  master Build Status

Building

For instructions on how to build and run OSRM, please consult the Wiki.

To quickly try OSRM use our free and daily updated online service

Documentation

See the Wiki's server API documentation as well as the library API documentation

References in publications

When using the code in a (scientific) publication, please cite

@inproceedings{luxen-vetter-2011,
 author = {Luxen, Dennis and Vetter, Christian},
 title = {Real-time routing with OpenStreetMap data},
 booktitle = {Proceedings of the 19th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems},
 series = {GIS '11},
 year = {2011},
 isbn = {978-1-4503-1031-4},
 location = {Chicago, Illinois},
 pages = {513--516},
 numpages = {4},
 url = {http://doi.acm.org/10.1145/2093973.2094062},
 doi = {10.1145/2093973.2094062},
 acmid = {2094062},
 publisher = {ACM},
 address = {New York, NY, USA},
}