public Func <RoadSegmentId, Func <AttributeId> > ProvidesNextRoadSegmentLaneAttributeId() { var provider = new NextAttributeIdProvider(_view.MaximumLaneAttributeId); return(id => { if (_view.SegmentReusableLaneAttributeIdentifiers.TryGetValue(id, out var reusableAttributeIdentifiers) && reusableAttributeIdentifiers.Count != 0) { return new NextReusableAttributeIdProvider(provider, reusableAttributeIdentifiers).Next; } return provider.Next; }); }
public NextReusableAttributeIdProvider(NextAttributeIdProvider provider, IReadOnlyList <AttributeId> reusableAttributeIdentifiers) { _provider = provider; _index = 0; _reusableAttributeIdentifiers = reusableAttributeIdentifiers; }