Skip to content

Proper libosrm API without aliasing header and external -> internal dependencies #2031

@daniel-j-h

Description

@daniel-j-h

Currently we provide aliasing header for our public API. This is ugly as it is confusing to the user, requires us to implement include path hack for the public API's headers to work at all (which by the way pollutes the users includes: when we're using osrm/X and there's a library called X we cause problems).

We do this since not only our internal headers depend on the external ones (which is fine), but in addition, our external headers also depend on our internal ones (which is ugly and nothing more than a hack). This requires us to e.g. chase down the base_parameters.hpp include headers and also install the hint.hpp header and its includes onto the user's system.

For a clean solution, the public libosrm headers must not know about the internal headers at all.
This requires us re-thinking and properly designing the API (e.g. how to break dependencies for the hints: context object, void*?) but would result in a clean and useful libosrm shared library.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions