Quick Links:

bal | bbl | bdl | bsl

Public Types | Public Member Functions | Static Public Member Functions | Friends

bdlt::Calendar Class Reference

#include <bdlt_calendar.h>

List of all members.

Public Types

typedef
Calendar_BusinessDayConstIter 
BusinessDayConstIterator
typedef
PackedCalendar::HolidayConstIterator 
HolidayConstIterator
typedef
PackedCalendar::HolidayCodeConstIterator 
HolidayCodeConstIterator
typedef
CalendarReverseIteratorAdapter
< BusinessDayConstIterator
BusinessDayConstReverseIterator
typedef
PackedCalendar::HolidayConstReverseIterator 
HolidayConstReverseIterator
typedef
PackedCalendar::HolidayCodeConstReverseIterator 
HolidayCodeConstReverseIterator
typedef
PackedCalendar::WeekendDaysTransition 
WeekendDaysTransition
typedef
PackedCalendar::WeekendDaysTransitionConstIterator 
WeekendDaysTransitionConstIterator
typedef
PackedCalendar::WeekendDaysTransitionConstReverseIterator 
WeekendDaysTransitionConstReverseIterator

Public Member Functions

 Calendar (bslma::Allocator *basicAllocator=0)
 Calendar (const Date &firstDate, const Date &lastDate, bslma::Allocator *basicAllocator=0)
 Calendar (const bdlt::PackedCalendar &packedCalendar, bslma::Allocator *basicAllocator=0)
 Calendar (const Calendar &original, bslma::Allocator *basicAllocator=0)
 ~Calendar ()
Calendaroperator= (const Calendar &rhs)
Calendaroperator= (const PackedCalendar &rhs)
void addDay (const Date &date)
void addHoliday (const Date &date)
void addHolidayCode (const Date &date, int holidayCode)
int addHolidayCodeIfInRange (const Date &date, int holidayCode)
int addHolidayIfInRange (const Date &date)
void addWeekendDay (DayOfWeek::Enum weekendDay)
void addWeekendDays (const DayOfWeekSet &weekendDays)
void addWeekendDaysTransition (const Date &startDate, const DayOfWeekSet &weekendDays)
void intersectBusinessDays (const Calendar &other)
void intersectBusinessDays (const PackedCalendar &other)
void intersectNonBusinessDays (const Calendar &other)
void intersectNonBusinessDays (const PackedCalendar &other)
void removeAll ()
void removeHoliday (const Date &date)
void removeHolidayCode (const Date &date, int holidayCode)
void reserveHolidayCapacity (int numHolidays)
void reserveHolidayCodeCapacity (int numHolidayCodes)
void setValidRange (const Date &firstDate, const Date &lastDate)
void unionBusinessDays (const Calendar &other)
void unionBusinessDays (const PackedCalendar &other)
void unionNonBusinessDays (const Calendar &other)
void unionNonBusinessDays (const PackedCalendar &other)
template<class STREAM >
STREAM & bdexStreamIn (STREAM &stream, int version)
void swap (Calendar &other)
BusinessDayConstIterator beginBusinessDays () const
BusinessDayConstIterator beginBusinessDays (const Date &date) const
HolidayCodeConstIterator beginHolidayCodes (const Date &date) const
HolidayCodeConstIterator beginHolidayCodes (const HolidayConstIterator &iter) const
HolidayConstIterator beginHolidays () const
HolidayConstIterator beginHolidays (const Date &date) const
WeekendDaysTransitionConstIterator beginWeekendDaysTransitions () const
BusinessDayConstIterator endBusinessDays () const
BusinessDayConstIterator endBusinessDays (const Date &date) const
HolidayCodeConstIterator endHolidayCodes (const Date &date) const
HolidayCodeConstIterator endHolidayCodes (const HolidayConstIterator &iter) const
HolidayConstIterator endHolidays () const
HolidayConstIterator endHolidays (const Date &date) const
WeekendDaysTransitionConstIterator endWeekendDaysTransitions () const
const DatefirstDate () const
int getNextBusinessDay (Date *nextBusinessDay, const Date &date) const
int getNextBusinessDay (Date *nextBusinessDay, const Date &date, int nth) const
Date holiday (int index) const
int holidayCode (const Date &date, int index) const
bool isBusinessDay (const Date &date) const
bool isHoliday (const Date &date) const
bool isInRange (const Date &date) const
bool isNonBusinessDay (const Date &date) const
bool isWeekendDay (const Date &date) const
bool isWeekendDay (DayOfWeek::Enum dayOfWeek) const
const DatelastDate () const
int length () const
int numBusinessDays () const
int numBusinessDays (const Date &beginDate, const Date &endDate) const
int numHolidayCodes (const Date &date) const
int numHolidayCodesTotal () const
int numHolidays () const
int numNonBusinessDays () const
int numWeekendDaysInRange () const
int numWeekendDaysTransitions () const
const PackedCalendarpackedCalendar () const
BusinessDayConstReverseIterator rbeginBusinessDays () const
BusinessDayConstReverseIterator rbeginBusinessDays (const Date &date) const
HolidayCodeConstReverseIterator rbeginHolidayCodes (const Date &date) const
HolidayCodeConstReverseIterator rbeginHolidayCodes (const HolidayConstIterator &iter) const
HolidayConstReverseIterator rbeginHolidays () const
HolidayConstReverseIterator rbeginHolidays (const Date &date) const
WeekendDaysTransitionConstReverseIterator rbeginWeekendDaysTransitions () const
BusinessDayConstReverseIterator rendBusinessDays () const
BusinessDayConstReverseIterator rendBusinessDays (const Date &date) const
HolidayCodeConstReverseIterator rendHolidayCodes (const Date &date) const
HolidayCodeConstReverseIterator rendHolidayCodes (const HolidayConstIterator &iter) const
HolidayConstReverseIterator rendHolidays () const
HolidayConstReverseIterator rendHolidays (const Date &date) const
WeekendDaysTransitionConstReverseIterator rendWeekendDaysTransitions () const
WeekendDaysTransition weekendDaysTransition (int index) const
bslma::Allocatorallocator () const
template<class STREAM >
STREAM & bdexStreamOut (STREAM &stream, int version) const
bsl::ostream & print (bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
Date getNextBusinessDay (const Date &initialDate) const
Date getNextBusinessDay (const Date &initialDate, int nth) const

Static Public Member Functions

static int maxSupportedBdexVersion (int versionSelector)
static int maxSupportedBdexVersion ()

Friends

bool operator== (const Calendar &, const Calendar &)
bool operator!= (const Calendar &, const Calendar &)
template<class HASHALG >
void hashAppend (HASHALG &hashAlg, const Calendar &)

Detailed 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.

See Component bdlt_calendar


Member Typedef Documentation


Constructor & Destructor Documentation

bdlt::Calendar::Calendar ( bslma::Allocator basicAllocator = 0  )  [explicit]

Create an empty calendar, i.e., a calendar having an empty valid range. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used.

bdlt::Calendar::Calendar ( const Date firstDate,
const Date lastDate,
bslma::Allocator basicAllocator = 0 
)

Create a calendar having a valid range from the specified firstDate through the specified lastDate. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used. The behavior is undefined unless firstDate <= lastDate.

bdlt::Calendar::Calendar ( const bdlt::PackedCalendar packedCalendar,
bslma::Allocator basicAllocator = 0 
) [explicit]

Create a calendar having the same value as the specified packedCalendar. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used.

bdlt::Calendar::Calendar ( const Calendar original,
bslma::Allocator basicAllocator = 0 
)

Create a calendar having the value of the specified original calendar. Optionally specify a basicAllocator used to supply memory. If basicAllocator is 0, the currently installed default allocator is used.

bdlt::Calendar::~Calendar (  ) 

Destroy this object.


Member Function Documentation

static int bdlt::Calendar::maxSupportedBdexVersion ( int  versionSelector  )  [static]

Return the maximum valid BDEX format version, as indicated by the specified versionSelector, to be passed to the bdexStreamOut method. Note that it is highly recommended that versionSelector be formatted as "YYYYMMDD", a date representation. Also note that versionSelector should be a compile-time-chosen value that selects a format version supported by both externalizer and unexternalizer. See the bslx package-level documentation for more information on BDEX streaming of value-semantic types and containers.

Calendar& bdlt::Calendar::operator= ( const Calendar rhs  ) 
Calendar& bdlt::Calendar::operator= ( const PackedCalendar rhs  ) 

Assign to this calendar the value of the specified rhs calendar, and return a reference providing modifiable access to this calendar. See Iterator Invalidation for information regarding which iterators are affected by the use of these methods.

void bdlt::Calendar::addDay ( const Date date  ) 

Extend the valid range (if necessary) of this calendar to include the specified date value.

void bdlt::Calendar::addHoliday ( const Date date  ) 

Mark the specified date as a holiday (i.e., a non-business day) in this calendar. Extend the valid range of this calendar if necessary. If date is already marked as a holiday, this method has no effect. See Iterator Invalidation for information regarding which iterators are affected by the use of this method.

void bdlt::Calendar::addHolidayCode ( const Date date,
int  holidayCode 
)

Mark the specified date as a holiday (i.e., a non-business day) in this calendar and add the specified holidayCode (if not already present) to the ordered set of codes associated with date. Extend the valid range of this calendar if necessary. If holidayCode is already a code for date, this method has no effect. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. Note that this method may be called repeatedly with the same value for date to build up a set of holiday codes for that date.

int bdlt::Calendar::addHolidayCodeIfInRange ( const Date date,
int  holidayCode 
)

Mark the specified date as a holiday (i.e., a non-business day) in this calendar and add the specified holidayCode (if not already present) to the set of codes associated with date, if date is within the valid range of this calendar. Return 0 if date is in range, and a non-zero value otherwise. If holidayCode is already a code for date, or if date is not in the valid range, this method has no effect. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. Note that this method may, at the expense of verifying isInRange(date) for each invocation, be called repeatedly with the same value for date to build up a set of holiday codes for that date.

int bdlt::Calendar::addHolidayIfInRange ( const Date date  ) 

Mark the specified date as a holiday (i.e., a non-business day) in this calendar if date is within the valid range. Return 0 if date is in range, and a non-zero value otherwise. This method has no effect if date is already marked as a holiday or is not in the valid range. See Iterator Invalidation for information regarding which iterators are affected by the use of this method.

void bdlt::Calendar::addWeekendDay ( DayOfWeek::Enum  weekendDay  ) 

Add the specified weekendDay to the set of weekend days associated with the weekend-days transition at January 1, 0001 maintained by this calendar. Create a transition at January 1, 0001 if one does not exist. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. The behavior is undefined unless no weekend-days transitions were added to this calendar via the addWeekendDaysTransition method.

void bdlt::Calendar::addWeekendDays ( const DayOfWeekSet weekendDays  ) 

Add the specified weekendDays to the set of weekend days associated with the weekend-days transition at January 1, 0001 maintained by this calendar. Create a transition at January 1, 0001 if one does not exist. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. The behavior is undefined unless no weekend-days transitions were added to this calendar via the addWeekendDaysTransition method.

void bdlt::Calendar::addWeekendDaysTransition ( const Date startDate,
const DayOfWeekSet weekendDays 
)

Add to this calendar a weekend-days transition on the specified startDate having the specified weekendDays set. If a weekend-days transition already exists on startDate, replace the set of weekend days of that transition with weekendDays. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. Note that this method does not extend the valid range of the calendar.

void bdlt::Calendar::intersectBusinessDays ( const Calendar other  ) 
void bdlt::Calendar::intersectBusinessDays ( const PackedCalendar other  ) 

Merge the specified other calendar into this calendar such that the valid range of this calendar becomes the intersection of the two calendars' ranges, and the weekend days and holidays for this calendar become the union of those (non-business) days from the two calendars -- i.e., the valid business days of this calendar become the intersection of those of the two original calendar values over the intersection of their ranges. For each holiday that remains, the resulting holiday codes in this calendar will be the union of the corresponding original holiday codes. See Iterator Invalidation for information regarding which iterators are affected by the use of this method.

void bdlt::Calendar::intersectNonBusinessDays ( const Calendar other  ) 
void bdlt::Calendar::intersectNonBusinessDays ( const PackedCalendar other  ) 

Merge the specified other calendar into this calendar such that the valid range of this calendar becomes the intersection of the two calendars' ranges, the weekend days for this calendar become the intersection of those days from the two calendars, and the holidays for this calendar become the set of days that are a holiday in one of the calendars and a non-business day in the other calendar -- i.e., the valid business days of this calendar become the union of those of the two original calendars over the intersection of their ranges. For each holiday that remains, the resulting holiday codes in this calendar will be the union of the corresponding original holiday codes. See Iterator Invalidation for information regarding which iterators are affected by the use of this method.

void bdlt::Calendar::removeAll (  ) 

Remove all information from this calendar, leaving it with its default constructed "empty" value. See Iterator Invalidation for information regarding which iterators are affected by the use of this method.

void bdlt::Calendar::removeHoliday ( const Date date  ) 

Remove from this calendar the holiday having the specified date if such a holiday exists. This operation has no effect if date is not a holiday in this calendar. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. Note that this method is defined for all date values, not just those that fall within the valid range, and may be invoked even on an empty calendar (i.e., having 0 == length()).

void bdlt::Calendar::removeHolidayCode ( const Date date,
int  holidayCode 
)

Remove from this calendar the specified holidayCode for the holiday having the specified date if such a holiday having holidayCode exists. This operation has no effect if date is not a holiday in this calendar, or if the holiday at date does not have holidayCode associated with it. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. Note that this method is defined for all date values, not just those that fall within the valid range, and may be invoked even on an empty calendar (i.e., having 0 == length()).

void bdlt::Calendar::reserveHolidayCapacity ( int  numHolidays  ) 

Reserve enough space to store at least the specified numHolidays within this calendar. This method has no effect if numHolidays <= numHolidays().

void bdlt::Calendar::reserveHolidayCodeCapacity ( int  numHolidayCodes  ) 

Reserve enough space to store at least the specified numHolidayCodes within this calendar assuming no additional holidays are added to this calendar. This method has no effect if numHolidayCodes <= numHolidayCodesTotal().

void bdlt::Calendar::setValidRange ( const Date firstDate,
const Date lastDate 
)

Set the range of this calendar using the specified firstDate and lastDate as, respectively, the first date and the last date of the calendar. Any holiday that is outside the new range and its holiday codes are removed. See Iterator Invalidation for information regarding which iterators are affected by the use of this method. The behavior is undefined unless firstDate <= lastDate.

void bdlt::Calendar::unionBusinessDays ( const Calendar other  ) 
void bdlt::Calendar::unionBusinessDays ( const PackedCalendar other  ) 

Merge the specified other calendar into this calendar such that the valid range of this calendar becomes the union of the two calendars' ranges (or the minimal continuous range spanning the two ranges, if the ranges are non-overlapping), the weekend days for this calendar become the intersection of those days from the two calendars, and the holidays for this calendar become the set of days that are a holiday in one of the calendars and a non-business day in the other calendar -- i.e., the valid business days of this calendar become the union of those of the two original calendar values. For each holiday that remains, the resulting holiday codes in this calendar will be the union of the corresponding original holiday codes. See Iterator Invalidation for information regarding which iterators are affected by the use of this method.

void bdlt::Calendar::unionNonBusinessDays ( const Calendar other  ) 
void bdlt::Calendar::unionNonBusinessDays ( const PackedCalendar other  ) 

Merge the specified other calendar into this calendar such that the valid range of this calendar becomes the union of the two calendars' ranges (or the minimal continuous range spanning the two ranges, if the ranges are non-overlapping), and the weekend days and holidays for this calendar become the union of those (non-business) days from the two calendars -- i.e., the valid business days of this calendar become the intersection of those of the two calendars after each range is extended to cover the resulting one. For each holiday in either calendar, the resulting holiday codes in this calendar will be the union of the corresponding original holiday codes. See Iterator Invalidation for information regarding which iterators are affected by the use of this method.

template<class STREAM >
STREAM& bdlt::Calendar::bdexStreamIn ( STREAM &  stream,
int  version 
)

Assign to this object the value read from the specified input stream using the specified version format and return a reference to the modifiable stream. If stream is initially invalid, this operation has no effect. If stream becomes invalid during this operation or if version is not supported, this object is unaltered. Note that no version is read from stream. See the bslx package-level documentation for more information on BDEX streaming of value-semantic types and containers.

void bdlt::Calendar::swap ( Calendar other  ) 

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.

BusinessDayConstIterator bdlt::Calendar::beginBusinessDays (  )  const

Return an iterator providing non-modifiable access to the first business day in this calendar. If this calendar has no valid business days, the returned iterator has the same value as that returned by endBusinessDays().

BusinessDayConstIterator bdlt::Calendar::beginBusinessDays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first business day that occurs on or after the specified date in this calendar. If this calendar has no such business day, the returned iterator has the same value as that returned by endBusinessDays(date). The behavior is undefined unless date is within the valid range of this calendar.

HolidayCodeConstIterator bdlt::Calendar::beginHolidayCodes ( const Date date  )  const

Return an iterator providing non-modifiable access to the first holiday code for the specified date in this calendar. If there is no holiday code associated with date, the returned iterator has the same value as that returned by endHolidayCodes(date). The behavior is undefined unless date is marked as a holiday in this calendar.

HolidayCodeConstIterator bdlt::Calendar::beginHolidayCodes ( const HolidayConstIterator iter  )  const

Return an iterator providing non-modifiable access to the first holiday code for the holiday referenced by the specified iter. If there is no holiday code associated with the date referenced by iter, the returned iterator has the same value as that returned by endHolidayCodes(iter). The behavior is undefined unless iter refers to a valid holiday of this calendar.

HolidayConstIterator bdlt::Calendar::beginHolidays (  )  const

Return an iterator providing non-modifiable access to the first holiday in this calendar. If this calendar has no holidays, the returned iterator has the same value as that returned by endHolidays().

HolidayConstIterator bdlt::Calendar::beginHolidays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first holiday that occurs on or after the specified date in this calendar. If this calendar has no such holiday, the returned iterator has the same value as that returned by endHolidays(date). The behavior is undefined unless date is within the valid range of this calendar.

WeekendDaysTransitionConstIterator bdlt::Calendar::beginWeekendDaysTransitions (  )  const

Return an iterator providing non-modifiable access to the first weekend-days transition in the chronological sequence of weekend-days transitions maintained by this calendar. If this calendar has no weekend-days transitions, the returned iterator has the same value as that returned by endWeekendDaysTransitions().

BusinessDayConstIterator bdlt::Calendar::endBusinessDays (  )  const

Return an iterator providing non-modifiable access to the past-the-end business day in this calendar.

BusinessDayConstIterator bdlt::Calendar::endBusinessDays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first business day that occurs after the specified date in this calendar. If this calendar has no such business day, the returned iterator has the same value as that returned by endBusinessDays(). The behavior is undefined unless date is within the valid range of this calendar.

HolidayCodeConstIterator bdlt::Calendar::endHolidayCodes ( const Date date  )  const

Return an iterator providing non-modifiable access to the past-the-end holiday code associated with the specified date. The behavior is undefined unless date is marked as a holiday in this calendar.

HolidayCodeConstIterator bdlt::Calendar::endHolidayCodes ( const HolidayConstIterator iter  )  const

Return an iterator providing non-modifiable access to the past-the-end holiday code associated with the date referenced by the specified iter. The behavior is undefined unless iter references a valid holiday in this calendar.

HolidayConstIterator bdlt::Calendar::endHolidays (  )  const

Return an iterator providing non-modifiable access to the past-the-end holiday in the chronological sequence of holidays maintained by this calendar.

HolidayConstIterator bdlt::Calendar::endHolidays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first holiday that occurs after the specified date in this calendar. If this calendar has no such holiday, the returned iterator has the same value as that returned by endHolidays(). The behavior is undefined unless date is within the valid range of this calendar.

WeekendDaysTransitionConstIterator bdlt::Calendar::endWeekendDaysTransitions (  )  const

Return an iterator providing non-modifiable access to the past-the-end weekend-days transition in the chronological sequence of weekend-days transitions maintained by this calendar.

const Date& bdlt::Calendar::firstDate (  )  const

Return a reference providing non-modifiable access to the earliest date in the valid range of this calendar. The behavior is undefined unless this calendar is non-empty -- i.e., unless 1 <= length().

int bdlt::Calendar::getNextBusinessDay ( Date nextBusinessDay,
const Date date 
) const

Load, into the specified nextBusinessDay, the date of the first business day in this calendar following the specified date. Return 0 on success -- i.e., if such a business day exists, and a non-zero value (with no effect on nextBusinessDay) otherwise. The behavior is undefined unless date + 1 is both a valid bdlt::Date and within the valid range of this calendar.

int bdlt::Calendar::getNextBusinessDay ( Date nextBusinessDay,
const Date date,
int  nth 
) const

Load, into the specified nextBusinessDay, the date of the specified nth business day in this calendar following the specified date. Return 0 on success -- i.e., if such a business day exists, and a non-zero value (with no effect on nextBusinessDay) otherwise. The behavior is undefined unless date + 1 is both a valid bdlt::Date and within the valid range of this calendar, and 0 < nth.

Date bdlt::Calendar::holiday ( int  index  )  const

Return the holiday at the specified index in this calendar. For all index values from 0 to numHolidays() - 1 (inclusive), a unique holiday is returned. The mapping of index to holiday is invalidated when the set of holidays is modified by an invocation of addHoliday, addHolidayIfInRange, intersectBusinessDays, intersectNonBusinessDays, removeAll, removeHoliday, setValidRange, unionBusinessDays, or unionNonBusinessDays. The behavior is undefined unless 0 <= index < numHolidays().

int bdlt::Calendar::holidayCode ( const Date date,
int  index 
) const

Return, for the holiday at the specified date in this calendar, the holiday code at the specified index. For all index values from 0 to numHolidayCodes(date) - 1 (inclusive), a unique holiday code is returned. The mapping of index to holiday code is invalidated when the set of holidays or holiday codes is modified by an invocation of addHoliday, addHolidayCode, addHolidayCodeIfInRange, addHolidayIfInRange, intersectBusinessDays, intersectNonBusinessDays, removeAll, removeHoliday, removeHolidayCode, setValidRange, unionBusinessDays, or unionNonBusinessDays. The behavior is undefined unless date is a holiday in this calendar and 0 <= index < numHolidayCodes(date). Note that this method facilitates testing and generally should not be used by clients; in particular, using this method to iterate over the holiday codes for date is less efficient than using a HolidayCodeConstIterator.

bool bdlt::Calendar::isBusinessDay ( const Date date  )  const

Return true if the specified date is a business day (i.e., not a holiday or weekend day) in this calendar, and false otherwise. The behavior is undefined unless date is within the valid range of this calendar.

bool bdlt::Calendar::isHoliday ( const Date date  )  const

Return true if the specified date is a holiday in this calendar, and false otherwise. The behavior is undefined unless date is within the valid range of this calendar.

bool bdlt::Calendar::isInRange ( const Date date  )  const

Return true if the specified date is within the valid range of this calendar (i.e., firstDate() <= date <= lastDate()), and false otherwise. Note that the valid range for a Calendar is empty if its length is 0.

bool bdlt::Calendar::isNonBusinessDay ( const Date date  )  const

Return true if the specified date is not a business day (i.e., is either a holiday or weekend day) in this calendar, and false otherwise. The behavior is undefined unless date is within the valid range of this calendar. Note that:

          !isBusinessDay(date)

returns the same result.

bool bdlt::Calendar::isWeekendDay ( const Date date  )  const

Return true if the specified date falls on a day of the week that is considered a weekend day in this calendar, and false otherwise. Note that this method is defined for all date values, not just those that fall within the valid range, and may be invoked even on an empty calendar (i.e., having 0 == length()).

bool bdlt::Calendar::isWeekendDay ( DayOfWeek::Enum  dayOfWeek  )  const

Return true if the specified dayOfWeek is a weekend day in this calendar, and false otherwise. The behavior is undefined unless no weekend-days transitions were added to this calendar via the addWeekendDaysTransition method.

const Date& bdlt::Calendar::lastDate (  )  const

Return a reference providing non-modifiable access to the latest date in the valid range of this calendar. The behavior is undefined unless this calendar is non-empty -- i.e., unless 1 <= length().

int bdlt::Calendar::length (  )  const

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.

int bdlt::Calendar::numBusinessDays (  )  const

Return the number of days in the valid range of this calendar that are considered business days -- i.e., are neither holidays nor weekend days. Note that numBusinessDays() == length() - numNonBusinessDays().

int bdlt::Calendar::numBusinessDays ( const Date beginDate,
const Date endDate 
) const

Return the number of days in the specified range [beginDate .. endDate] of this calendar that are considered business days -- i.e., are neither holidays nor weekend days. The behavior is undefined unless beginDate and endDate are within the valid range of this calendar, and beginDate <= endDate.

int bdlt::Calendar::numHolidayCodes ( const Date date  )  const

Return the number of (unique) holiday codes associated with the specified date in this calendar if date is a holiday in this calendar, and 0 otherwise. The behavior is undefined unless date is within the valid range of this calendar.

int bdlt::Calendar::numHolidayCodesTotal (  )  const

Return the total number of holiday codes for all holidays in this calendar. Note that this function is used primarily in conjunction with reserveHolidayCodeCapacity.

int bdlt::Calendar::numHolidays (  )  const

Return the number of days in the valid range of this calendar that are individually marked as holidays, irrespective of whether or not the date is also considered a weekend day.

int bdlt::Calendar::numNonBusinessDays (  )  const

Return the number of days in the valid range of this calendar that are not considered business days -- i.e., are either holidays, weekend days, or both. Note that numNonBusinessDays() == length() - numBusinessDays().

int bdlt::Calendar::numWeekendDaysInRange (  )  const

Return the number of days in the valid range of this calendar that are considered weekend days, irrespective of any designated holidays.

int bdlt::Calendar::numWeekendDaysTransitions (  )  const

Return the number of weekend-days transitions maintained by this calendar.

const PackedCalendar& bdlt::Calendar::packedCalendar (  )  const

Return a reference providing non-modifiable access to the underlying PackedCalendar, which represents the same (mathematical) value as this calendar.

BusinessDayConstReverseIterator bdlt::Calendar::rbeginBusinessDays (  )  const

Return an iterator providing non-modifiable access to the last business day in this calendar. If this calendar has no valid business days, the returned iterator has the same value as that returned by rendBusinessDays().

BusinessDayConstReverseIterator bdlt::Calendar::rbeginBusinessDays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first business day that occurs on or before the specified date in this calendar. If this calendar has no such business day, the returned iterator has the same value as that returned by rendBusinessDays(date). The behavior is undefined unless date is within the valid range of this calendar.

HolidayCodeConstReverseIterator bdlt::Calendar::rbeginHolidayCodes ( const Date date  )  const

Return an iterator providing non-modifiable access to the last holiday code associated with the specified date in this calendar. If there are no holiday codes associated with date, the returned iterator has the same value as that returned by rendHolidayCodes(date). The behavior is undefined unless date is marked as a holiday in this calendar.

HolidayCodeConstReverseIterator bdlt::Calendar::rbeginHolidayCodes ( const HolidayConstIterator iter  )  const

Return an iterator providing non-modifiable access to the last holiday code associated with the holiday referenced by the specified iter. If there are no holiday codes associated with the date referenced by iter, the returned iterator has the same value as that returned by rendHolidayCodes(iter). The behavior is undefined unless iter refers to a valid holiday of this calendar.

HolidayConstReverseIterator bdlt::Calendar::rbeginHolidays (  )  const

Return an iterator providing non-modifiable access to the last holiday in this calendar. If this calendar has no holidays, the returned iterator has the same value as that returned by rendHolidays().

HolidayConstReverseIterator bdlt::Calendar::rbeginHolidays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first holiday that occurs on or before the specified date in this calendar. If this calendar has no such holiday, the returned iterator has the same value as that returned by rendHolidays(date). The behavior is undefined unless date is within the valid range of this calendar.

WeekendDaysTransitionConstReverseIterator bdlt::Calendar::rbeginWeekendDaysTransitions (  )  const

Return an iterator providing non-modifiable access to the last weekend-days transition in the chronological sequence of weekend-days transitions maintained by this calendar. If this calendar has no weekend-days transitions, the returned iterator has the same value as that returned by rendWeekendDaysTransitions().

BusinessDayConstReverseIterator bdlt::Calendar::rendBusinessDays (  )  const

Return an iterator providing non-modifiable access to the element one before the first business day in this calendar.

BusinessDayConstReverseIterator bdlt::Calendar::rendBusinessDays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first business day that occurs before the specified date in this calendar. If this calendar has no such business day, the returned iterator has the same value as that returned by rendBusinessDays(). The behavior is undefined unless date is within the valid range of this calendar.

HolidayCodeConstReverseIterator bdlt::Calendar::rendHolidayCodes ( const Date date  )  const

Return an iterator providing non-modifiable access to the element one before the first holiday code associated with the specified date. The behavior is undefined unless date is marked as a holiday in this calendar.

HolidayCodeConstReverseIterator bdlt::Calendar::rendHolidayCodes ( const HolidayConstIterator iter  )  const

Return an iterator providing non-modifiable access to the element one before the first holiday code associated with the holiday referenced by the specified iter. The behavior is undefined unless iter references a valid holiday in this calendar.

HolidayConstReverseIterator bdlt::Calendar::rendHolidays (  )  const

Return an iterator providing non-modifiable access to the element one before the first holiday in this calendar.

HolidayConstReverseIterator bdlt::Calendar::rendHolidays ( const Date date  )  const

Return an iterator providing non-modifiable access to the first holiday that occurs before the specified date in this calendar. If this calendar has no such holiday, the returned iterator has the same value as that returned by rendHolidays(). The behavior is undefined unless date is within the valid range of this calendar.

WeekendDaysTransitionConstReverseIterator bdlt::Calendar::rendWeekendDaysTransitions (  )  const

Return an iterator providing non-modifiable access to the element one before the first weekend-days transition in the chronological sequence of weekend-days transitions maintained by this calendar.

WeekendDaysTransition bdlt::Calendar::weekendDaysTransition ( int  index  )  const

Return the weekend-days transition at the specified index in this calendar. For all index values from 0 to numWeekendDaysTransitions() - 1 (inclusive), a unique weekend-days transition is returned. The mapping of index to weekend-days transition is invalidated when the set of weekend-days transitions is modified by an invocation of addWeekendDay, addWeekendDays, addWeekendDaysTransition, intersectBusinessDays, intersectNonBusinessDays, removeAll, unionBusinessDays, or unionNonBusinessDays. The behavior is undefined unless 0 <= index < numWeekendDaysTransitions().

bslma::Allocator* bdlt::Calendar::allocator (  )  const

Return the allocator used by this object to supply memory.

template<class STREAM >
STREAM& bdlt::Calendar::bdexStreamOut ( STREAM &  stream,
int  version 
) const

Write this value to the specified output stream using the specified version format and return a reference to the modifiable stream. If version is not supported, stream is unmodified. Note that version is not written to stream. See the bslx package-level documentation for more information on BDEX streaming of value-semantic types and containers.

bsl::ostream& bdlt::Calendar::print ( bsl::ostream &  stream,
int  level = 0,
int  spacesPerLevel = 4 
) const

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.

static int bdlt::Calendar::maxSupportedBdexVersion (  )  [static]

DEPRECATED: Use maxSupportedBdexVersion(int) instead.

Return the most current BDEX streaming version number supported by this class.

Date bdlt::Calendar::getNextBusinessDay ( const Date initialDate  )  const

Return the date of the first business day following the specified initialDate. For dates outside of the range of this calendar, only weekend days are considered non-business days. The behavior is undefined if every day of the week is a weekend day, or if the resulting date would otherwise exceed the value Date(9999, 12, 31).

Date bdlt::Calendar::getNextBusinessDay ( const Date initialDate,
int  nth 
) const

Return the date of the specified nth business day following the specified initialDate. For dates outside of the range of this calendar, only weekend days are considered non-business days. The behavior is undefined unless initialDate is within the valid range and 1 <= nth (or if every day of the week is a weekend day, or if the resulting date would otherwise exceed the value Date(9999, 12, 31)).


Friends And Related Function Documentation

bool operator== ( const Calendar ,
const Calendar  
) [friend]

Return true if the specified lhs and rhs calendars have the same value, and false otherwise. Two calendars have the same value if they have the same valid range (or are both empty), the same weekend days, the same holidays, and each corresponding pair of holidays has the same (ordered) set of associated holiday codes.

bool operator!= ( const Calendar ,
const Calendar  
) [friend]

Return true if the specified lhs and rhs calendars do not have the same value, and false otherwise. Two calendars do not have the same value if they do not have the same valid range (and are not both empty), do not have the same weekend days, do not have the same holidays, or, for at least one corresponding pair of holidays, do not have the same (ordered) set of associated holiday codes.

template<class HASHALG >
void hashAppend ( HASHALG &  hashAlg,
const Calendar  
) [friend]

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 Calendar.


The documentation for this class was generated from the following file: