Struct std.datetime.interval.IntervalRange
A range over an Interval.
						
					
				IntervalRange is only ever constructed by Interval. However, when
    it is constructed, it is given a function, func, which is used to
    generate the time points which are iterated over. func takes a time
    point and returns a time point of the same type. For instance,
    to iterate over all of the days in
    the interval Interval!Date, pass a function to Interval's
    fwdRange where that function took a Date and
    returned a Date which was one day later. That
    function would then be used by IntervalRange's popFront to iterate
    over the Dates in the interval.
    If dir == Direction, then a range iterates forward in time, whereas
    if dir == Direction, then it iterates backwards in time. So, if
    dir == Direction then front == interval, whereas if
    dir == Direction then front == interval. func must
    generate a time point going in the proper direction of iteration, or a
    DateTimeException will be thrown. So, to iterate
    forward in time, the time point that func generates must be later in
    time than the one passed to it. If it's either identical or earlier in time,
    then a DateTimeException will be thrown. To
    iterate backwards, then the generated time point must be before the time
    point which was passed in.
    If the generated time point is ever passed the edge of the range in the
    proper direction, then the edge of that range will be used instead. So, if
    iterating forward, and the generated time point is past the interval's
    end, then front becomes end. If iterating backwards, and the
    generated time point is before begin, then front becomes
    begin. In either case, the range would then be empty.
    Also note that while normally the begin of an interval is included in
    it and its end is excluded from it, if dir == Direction, then
    begin is treated as excluded and end is treated as included. This
    allows for the same behavior in both directions. This works because none of
    Interval's functions which care about whether begin or end
    is included or excluded are ever called by IntervalRange. interval
    returns a normal interval, regardless of whether dir == Direction
    or if dir == Direction, so any Interval functions which are
    called on it which care about whether begin or end are included or
    excluded will treat begin as included and end as excluded.
Properties
| Name | Type | Description | 
|---|---|---|
| direction[get] | Direction | The Directionthat this range iterates in. | 
| empty[get] | bool | Whether this IntervalRangeis empty. | 
| front[get] | TP | The first time point in the range. | 
| func[get] | TP delegate(scope const TP) | The function used to generate the next time point in the range. | 
| interval[get] | Interval!TP | The interval that this IntervalRangecurrently covers. | 
| save[get] | IntervalRange | Returns a copy of this. | 
Methods
| Name | Description | 
|---|---|
| opAssign(rhs) | |
| popFront() | Pops frontfrom the range, usingfuncto generate the next
        time point in the range. If the generated time point is beyond the edge
        of the range, thenfrontis set to that edge, and the range is then
        empty. So, if iterating forwards, and the generated time point is
        greater than the interval'send, thenfrontis set toend. If iterating backwards, and the generated time point is less
        than the interval'sbegin, thenfrontis set tobegin. |