Context and usage of roundabout flag

I am currently trying to get familiar with GH 0.7 - my code is still based on GH pre-0.1 :slight_smile:

I noted that the roundabout flag is redundantly included into every FlagEncoder. (This is known and mentioned in a few posts).

The roundabout flag is added in the AbstractFlagEncoder class, so it is forced into every FlagEncoder. But roundabouts only apply to vehicles. That information is not required for foot, hiking, skating etc…So it is not only redundant, but superfluous for such FlagEncoders.

Why is the flag included into the abstract base class and not into the vehicle encoders?

How deeply embedded in the core is it? If I do not need turn instructions can I remove it from the base class in my fork or will this cause dependencies to fail?

Yes, I plan to get rid of it via the GenericFlagEncoder, see this pull request: initial work towards generic weighting&encoding ('more flexible' work) by karussell · Pull Request #730 · graphhopper/graphhopper · GitHub

The idea is (for the time being) to let other encoders depend on this ‘generic’ or ‘data’ FlagEncoder for several purposes and this encoder will be always present. This way we avoid redundancy for other stuff like when we want to store road type, surface, max speed etc

That information is not required for foot, hiking, skating etc

It also applies for foot/hiking IMO

How deeply embedded in the core is it? If I do not need turn instructions can I remove it from the base class in my fork or will this cause dependencies to fail?

The only class that uses it is currently the Path class so I think you can easily get rid of it. Just search for usages of FlagEncoder.K_ROUNDABOUT