This class implements a value‐semantic repository of datetime‐indexed state transitions over a valid range of dates. This valid range, [firstDate() .. lastDate()], spans the first and last dates of a timetable's accessible contents. A timetable can be "populated" with state transitions via a suite of "add" methods. Note that the behavior of requesting any timetable information for a supplied date whose value is outside the current valid range for that timetable is undefined.

Synopsis

Declared in <bdlt_timetable.h>

class Timetable;

Type Aliases

Enums

Member Functions

Name

Description

Timetable [constructor]

Constructors

operator=

Assign to this timetable the value of the specified rhs timetable, and return a reference providing modifiable access to this timetable. This operation invalidates all iterators.

addTransition

addTransition overloads

addTransitions

Add transitions to this timetable that occur at the specified time, having the specified code, on all dates that are of the specified dayOfWeek within the closed interval of dates from the specified firstDate to the specified lastDate. For every date on which this transition will occur, if time is already a transition point, replace the existing code with code. The addition of a transition, but not the replacement of the code of an existing transition, invalidates all iterators. The behavior is undefined unless 24 > time.hour(), firstDate <= lastDate, firstDate and lastDate are within the valid range of this timetable, and 0 <= code || k_UNSET_TRANSITION_CODE == code.

allocator

Return the allocator used by this object to supply memory.

begin

Return an iterator referring to the first transition in this timetable, or the past‐the‐end iterator if this timetable is empty. The iterator remains valid as long as this timetable exists, and the number of transitions within this timetable does not change.

end

Return the past‐the‐end iterator for this timetable. The iterator remains valid as long as this timetable exists, and the number of transitions within this timetable does not change.

firstDate

Return a const reference to the earliest date in the valid range of this timetable. The behavior is undefined if this timetable does not have a valid range (i.e., it is in the default constructed (empty) state).

initialTransitionCode

Return the transition code that is in effect at the start of this timetable (see setInitialTransitionCode).

isInRange

Return true if the specified date is within the valid range of this timetable, and false otherwise.

lastDate

Return a const reference to the latest date in the valid range of this timetable. The behavior is undefined if this timetable does not have a valid range (i.e., it is in the default constructed (empty) state).

length

Return the number of days in the valid range of this timetable, which is defined to be 0 if this timetable is empty, and lastDate() ‐ firstDate() + 1 otherwise.

print

Format this object to the specified output stream at the (absolute value of) the optionally specified indentation level and return a reference to the modifiable stream. If level is specified, optionally specify spacesPerLevel, the number of spaces per indentation level for this and all of its nested objects. If level is negative, suppress indentation of the first line. If spacesPerLevel is negative, format the entire output on one line, suppressing all but the initial indentation (as governed by level). If stream is not valid on entry, this operation has no effect.

removeAllTransitions

Remove all transitions from this timetable. The removal of a transition invalidates all iterators.

removeTransition

removeTransition overloads

removeTransitions

removeTransitions overloads

reset

Reset this timetable to the default constructed (empty) state. All associated iterators are invalidated.

setInitialTransitionCode

Set the transition code in effect at the start of this timetable to the specified code. The behavior is undefined unless 0 <= code || k_UNSET_TRANSITION_CODE == code.

setValidRange

Set the range of this timetable using the specified firstDate and lastDate as, respectively, the first date and the last date of the timetable. Any transitions, and associated transition codes, that are outside of the new range are removed. The removal of a transition invalidates all iterators. The behavior is undefined unless firstDate <= lastDate.

swap

Efficiently exchange the value of this object with the value of the specified other object. This method provides the no‐throw exception‐safety guarantee. The behavior is undefined unless this object was created with the same allocator as other.

transitionCodeInEffect

transitionCodeInEffect overloads

Friends

Name

Description

BloombergLP::bdlt::hashAppend

Pass the specified object to the specified hashAlg. This function integrates with the bslh modular hashing system and effectively provides a bsl::hash specialization for Timetable.

BloombergLP::bdlt::operator!=

Return true if the specified lhs and rhs timetables do not have the same value, and false otherwise. Two timetables do not have the same value if they do not have the same initial transition code, do not have the same valid range (and are not both empty), do not have the same number of transitions, or, for at least one corresponding pair of transitions, do not have the same value.

BloombergLP::bdlt::operator==

Return true if the specified lhs and rhs timetables have the same value, and false otherwise. Two timetables have the same value if they have the same initial transition code, the same valid range (or are both empty), the same number of transitions, and each corresponding pair of transitions have the same value.

BloombergLP::bdlt::Timetable_ConstIterator

Provide read‐only, sequential access in increasing (chronological) order to the transitions in a Timetable object.

Non-Member Functions

Name

Description

swap

Exchange the values of the specified a and b objects. This function provides the no‐throw exception‐safety guarantee if the two objects were created with the same allocator and the basic guarantee otherwise.

Created with MrDocs