예제 #1
0
        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;
            });
        }
예제 #2
0
 public NextReusableAttributeIdProvider(NextAttributeIdProvider provider, IReadOnlyList <AttributeId> reusableAttributeIdentifiers)
 {
     _provider = provider;
     _index    = 0;
     _reusableAttributeIdentifiers = reusableAttributeIdentifiers;
 }