BloombergLP::bdlt::Calendar

Runtime-efficient, value-semantic repository of weekend and holiday information.

Synopsis

Declared in <bdlt_calendar.h>

class Calendar;

Description

This class implements a runtime-efficient, value-semantic repository of weekend and holiday information over a valid range of dates. This valid range, [firstDate() .. lastDate()], spans the first and last dates of a calendar's accessible contents. A calendar can be "populated" with weekend and holiday information via a suite of "add" methods. Any subset of days of the week may be specified as weekend (i.e., recurring non-business) days starting from a specified date by adding a weekend-days transition; holidays within the valid range are specified individually. When adding a holiday, an arbitrary integer "holiday code" may be associated with that date. Additional holiday codes for that date may subsequently be added. Both the holidays and the set of unique holiday codes associated with each holiday date are maintained (internally) in order of increasing value. Note that the behavior of requesting any calendar information for a supplied date whose value is outside the current valid range for that calendar (unless otherwise noted, e.g., isWeekendDay) is undefined.

Type Aliases

NameDescription
BusinessDayConstIterator Constant iterator over business days in this calendar.
BusinessDayConstReverseIterator Constant reverse iterator over business days in this calendar.
HolidayCodeConstIterator Constant iterator over holiday codes in this calendar.
HolidayCodeConstReverseIterator Constant reverse iterator over holiday codes in this calendar.
HolidayConstIterator Constant iterator over holidays in this calendar.
HolidayConstReverseIterator Constant reverse iterator over holidays in this calendar.
WeekendDaysTransition Transition describing a change in weekend days.
WeekendDaysTransitionConstIterator Constant iterator over weekend-days transitions in this calendar.
WeekendDaysTransitionConstReverseIterator Constant reverse iterator over weekend-days transitions.

Member Functions

NameDescription
Calendar [constructor]Constructors
~Calendar [destructor]Destroy this object.
operator= Assignment operators
addDay Extend the valid range (if necessary) of this calendar to include the specified date value.
addHoliday Mark the specified date as a holiday in this calendar.
addHolidayCode Mark date as a holiday and add holidayCode for that date.
addHolidayCodeIfInRange Mark date as a holiday and add holidayCode if date is in range.
addHolidayIfInRange Mark date as a holiday if it is within the valid range.
addWeekendDay Add weekendDay to the weekend days at the January 1, 0001 transition.
addWeekendDays Add weekendDays to the weekend days at the January 1, 0001 transition.
addWeekendDaysTransition Add a weekend-days transition on startDate with weekendDays.
allocator Return the allocator used by this object to supply memory.
bdexStreamIn Assign to this object the value read from the specified input stream.
bdexStreamOut Write this value to the specified output stream using version.
beginBusinessDays beginBusinessDays overloads
beginHolidayCodes beginHolidayCodes overloads
beginHolidays beginHolidays overloads
beginWeekendDaysTransitions Return an iterator to the first weekend-days transition.
endBusinessDays endBusinessDays overloads
endHolidayCodes endHolidayCodes overloads
endHolidays endHolidays overloads
endWeekendDaysTransitions Return a past-the-end iterator for weekend-days transitions.
firstDate Return the earliest date in the valid range of this calendar.
getNextBusinessDay getNextBusinessDay overloads
holiday Return the holiday at the specified index in this calendar.
holidayCode Return the holiday code at index for the holiday at date.
intersectBusinessDays intersectBusinessDays overloads
intersectNonBusinessDays intersectNonBusinessDays overloads
isBusinessDay Return true if date is a business day in this calendar.
isHoliday Return true if date is a holiday in this calendar.
isInRange Return true if date is within the valid range of this calendar.
isNonBusinessDay Return true if date is not a business day in this calendar.
isWeekendDay isWeekendDay overloads
lastDate Return the latest date in the valid range of this calendar.
length Return the number of days in the valid range of this calendar, which is defined to be 0 if this calendar is empty, and lastDate() - firstDate() + 1 otherwise.
numBusinessDays numBusinessDays overloads
numHolidayCodes Return the number of holiday codes associated with date.
numHolidayCodesTotal Return the total number of holiday codes for all holidays.
numHolidays Return the number of holidays in the valid range of this calendar.
numNonBusinessDays Return the number of non-business days in the valid range.
numWeekendDaysInRange Return the number of days in the valid range of this calendar that are considered weekend days, irrespective of any designated holidays.
numWeekendDaysTransitions Return the number of weekend-days transitions maintained by this calendar.
packedCalendar Return a reference providing non-modifiable access to the underlying PackedCalendar, which represents the same (mathematical) value as this calendar.
print Format this object to the specified output stream.
rbeginBusinessDays rbeginBusinessDays overloads
rbeginHolidayCodes rbeginHolidayCodes overloads
rbeginHolidays rbeginHolidays overloads
rbeginWeekendDaysTransitions Return a reverse iterator to the last weekend-days transition.
removeAll Remove all information from this calendar, leaving it empty.
removeHoliday Remove the holiday at the specified date if it exists.
removeHolidayCode Remove holidayCode from the holiday at the specified date.
rendBusinessDays rendBusinessDays overloads
rendHolidayCodes rendHolidayCodes overloads
rendHolidays rendHolidays overloads
rendWeekendDaysTransitions Return a reverse past-the-end iterator for weekend-days transitions.
reserveHolidayCapacity Reserve capacity for at least the specified number of holidays.
reserveHolidayCodeCapacity Reserve capacity for at least the specified number of holiday codes.
setValidRange Set the valid range of this calendar to [firstDate .. lastDate].
swap Efficiently exchange the value of this object with that of other.
unionBusinessDays unionBusinessDays overloads
unionNonBusinessDays unionNonBusinessDays overloads
weekendDaysTransition Return the weekend-days transition at the specified index.

Static Member Functions

NameDescription
maxSupportedBdexVersion maxSupportedBdexVersion overloads

Friends

NameDescription
BloombergLP::bdlt::hashAppendPass the specified object to the specified hashAlg.
BloombergLP::bdlt::operator!=Return true if the specified lhs and rhs calendars differ in value.
BloombergLP::bdlt::operator==Return true if the specified lhs and rhs calendars have the same value.

Non-Member Functions

NameDescription
swapExchange the values of the specified a and b objects.