8#ifndef INCLUDED_BDLT_PACKEDCALENDAR
9#define INCLUDED_BDLT_PACKEDCALENDAR
528#include <bdlscm_version.h>
551#include <bsl_cstddef.h>
552#include <bsl_iosfwd.h>
553#include <bsl_iterator.h>
554#include <bsl_utility.h>
555#include <bsl_vector.h>
557#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
560#include <bsl_algorithm.h>
566class PackedCalendar_BusinessDayConstIterator;
567class PackedCalendar_HolidayCodeConstIterator;
568class PackedCalendar_HolidayConstIterator;
604 WeekendDaysTransitionSequence;
611 struct WeekendDaysTransitionLess {
621 bool operator()(
const WeekendDaysTransitionPrivate& lhs,
622 const WeekendDaysTransitionPrivate& rhs)
const
624 return lhs.first < rhs.first;
647 typedef WeekendDaysTransitionSequence::const_iterator
651 bsl::reverse_iterator<WeekendDaysTransitionSequence::const_iterator>
665 d_weekendDaysTransitions;
701 template <
class HASHALG>
714 static void intersectHolidays(
746 int addHolidayImp(
int offset);
1009 template <
class STREAM>
1416 template <
class STREAM>
1429 bsl::ostream&
print(bsl::ostream& stream,
1431 int spacesPerLevel = 4)
const;
1433#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1473template <
class HASHALG>
1588 const Date firstDate);
1599#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1724#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1828 int d_currentOffset;
1860 const Date& startDate,
1868 void nextBusinessDay();
1873 void previousBusinessDay();
1884#ifndef BDE_OMIT_INTERNAL_DEPRECATED
1990: d_date(original.d_date)
2037PackedCalendar_HolidayConstIterator::
2038 PackedCalendar_HolidayConstIterator(
const OffsetsConstIterator& iter,
2039 const Date firstDate)
2041, d_firstDate(firstDate)
2047PackedCalendar_HolidayConstIterator::PackedCalendar_HolidayConstIterator(
2049: d_iterator(original.d_iterator)
2050, d_firstDate(original.d_firstDate)
2064 d_iterator = rhs.d_iterator;
2065 d_firstDate = rhs.d_firstDate;
2104 const PackedCalendar_HolidayConstIterator& rhs)
2106 return lhs.d_iterator == rhs.d_iterator;
2111 const PackedCalendar_HolidayConstIterator& rhs)
2113 return lhs.d_iterator !=
rhs.d_iterator;
2120 PackedCalendar_HolidayConstIterator tmp(iterator);
2129 PackedCalendar_HolidayConstIterator tmp(iterator);
2142PackedCalendar_HolidayCodeConstIterator::
2143 PackedCalendar_HolidayCodeConstIterator(
const CodesConstIterator& iter)
2150PackedCalendar_HolidayCodeConstIterator::
2151PackedCalendar_HolidayCodeConstIterator(
2153: d_iterator(original.d_iterator)
2169 d_iterator = rhs.d_iterator;
2201 const PackedCalendar_HolidayCodeConstIterator& rhs)
2203 return lhs.d_iterator == rhs.d_iterator;
2208 const PackedCalendar_HolidayCodeConstIterator& rhs)
2210 return lhs.d_iterator !=
rhs.d_iterator;
2226 PackedCalendar_HolidayCodeConstIterator tmp(iterator);
2234 const PackedCalendar_HolidayCodeConstIterator& rhs)
2236 return lhs.d_iterator -
rhs.d_iterator;
2247PackedCalendar_BusinessDayConstIterator::
2248PackedCalendar_BusinessDayConstIterator(
2250: d_offsetIter(original.d_offsetIter)
2251, d_calendar_p(original.d_calendar_p)
2252, d_currentOffset(original.d_currentOffset)
2253, d_endFlag(original.d_endFlag)
2280 previousBusinessDay();
2304 const PackedCalendar_BusinessDayConstIterator& rhs)
2308 return lhs.d_endFlag == rhs.d_endFlag
2309 && lhs.d_currentOffset == rhs.d_currentOffset;
2314 const PackedCalendar_BusinessDayConstIterator& rhs)
2318 return lhs.d_endFlag !=
rhs.d_endFlag
2319 ||
lhs.d_currentOffset !=
rhs.d_currentOffset;
2324 PackedCalendar_BusinessDayConstIterator& iterator,
int)
2326 PackedCalendar_BusinessDayConstIterator tmp(iterator);
2333 PackedCalendar_BusinessDayConstIterator& iterator,
int)
2335 PackedCalendar_BusinessDayConstIterator tmp(iterator);
2348PackedCalendar::CodesConstIterator
2349 PackedCalendar::beginHolidayCodes(
const OffsetsConstIterator& iter)
const
2353 const int indexOffset =
static_cast<int>(iter - d_holidayOffsets.
begin());
2355 const bsl::size_t codeOffset = d_holidayCodesIndex[indexOffset];
2357 return d_holidayCodes.
begin() + codeOffset;
2361PackedCalendar::CodesConstIterator
2362 PackedCalendar::endHolidayCodes(
const OffsetsConstIterator& iter)
const
2366 const bsl::size_t endIndexOffset = iter - d_holidayOffsets.
begin() + 1;
2368 const bsl::size_t iterIndex = endIndexOffset ==
2369 d_holidayCodesIndex.
length()
2370 ? d_holidayCodes.
length()
2371 : d_holidayCodesIndex[endIndexOffset];
2372 return d_holidayCodes.
begin() + iterIndex;
2382 if (versionSelector >= 20150612) {
2428template <
class STREAM>
2448 stream.invalidate();
2454 int transitionsLength = 0;
2455 stream.getLength(transitionsLength);
2457 if (!stream || transitionsLength < 0) {
2458 stream.invalidate();
2463 weekendDaysTransitions(transitionsLength, d_allocator_p);
2464 for (
int i = 0; i < transitionsLength; ++i) {
2467 wdt.first.bdexStreamIn(stream, 1);
2475 if (i && wdt.first <= weekendDaysTransitions[i - 1].first) {
2476 stream.invalidate();
2480 wdt.second.bdexStreamIn(stream, 1);
2495 && (holidayOffsets[0] < 0
2496 || holidayOffsets[0] >
length))))) {
2497 stream.invalidate();
2504 for (bsl::size_t i = 1; i < holidayOffsets.
length(); ++i) {
2505 if (holidayOffsets[i - 1] >= holidayOffsets[i]
2506 || holidayOffsets[i] >
length) {
2507 stream.invalidate();
2516 || holidayCodesIndex.
length() != holidayOffsets.
length()
2517 || (!holidayCodesIndex.
isEmpty() && holidayCodesIndex[0] != 0)) {
2518 stream.invalidate();
2525 for (bsl::size_t i = 1; i < holidayCodesIndex.
length(); ++i) {
2526 if (holidayCodesIndex[i - 1] > holidayCodesIndex[i]) {
2527 stream.invalidate();
2537 stream.invalidate();
2544 bsl::size_t index = 0;
2545 for (
int i = 0; i < static_cast<int>(holidayCodes.
length()); ++i) {
2546 if (index < holidayCodesIndex.
length()
2547 && i == holidayCodesIndex[index]) {
2549 while (index < holidayCodesIndex.
length()
2550 && i == holidayCodesIndex[index]) {
2554 else if (holidayCodes[i - 1] >= holidayCodes[i]) {
2555 stream.invalidate();
2563 &weekendDaysTransitions);
2577 || (inCal.d_firstDate > inCal.d_lastDate
2578 && (inCal.d_firstDate !=
Date(9999,12,31)
2579 || inCal.d_lastDate !=
Date(1,1,1)))) {
2580 stream.invalidate();
2583 int length = inCal.d_lastDate - inCal.d_firstDate + 1;
2585 int transitionsLength = 0;
2586 stream.getLength(transitionsLength);
2587 if (!stream || transitionsLength < 0)
2589 stream.invalidate();
2593 int offsetsLength = 0;
2594 stream.getLength(offsetsLength);
2596 || (inCal.d_firstDate > inCal.d_lastDate
2597 && offsetsLength != 0)
2598 || (inCal.d_firstDate <= inCal.d_lastDate
2599 && (offsetsLength < 0 || offsetsLength >
length))) {
2600 stream.invalidate();
2605 int codesLength = 0;
2606 stream.getLength(codesLength);
2607 if (!stream || (0 == offsetsLength && codesLength != 0)) {
2608 stream.invalidate();
2612 inCal.d_weekendDaysTransitions.resize(transitionsLength);
2624 inCal.d_holidayOffsets.
resize(offsetsLength);
2625 inCal.d_holidayCodesIndex.
resize(offsetsLength);
2626 inCal.d_holidayCodes.
resize(codesLength);
2628 for (WeekendDaysTransitionSequence::iterator it =
2629 inCal.d_weekendDaysTransitions.begin();
2630 it != inCal.d_weekendDaysTransitions.end();
2632 it->first.bdexStreamIn(stream, 1);
2637 if (it != inCal.d_weekendDaysTransitions.begin()
2638 && it->first <= (it - 1)->first) {
2639 stream.invalidate();
2643 it->second.bdexStreamIn(stream, 1);
2649 int previousValue = -1;
2650 for (
int i = 0; i < offsetsLength; ++i) {
2652 stream.getInt32(tmp);
2656 || tmp <= previousValue) {
2657 stream.invalidate();
2660 inCal.d_holidayOffsets.
replace(i, tmp);
2661 previousValue = tmp;
2665 for (
int i = 0; i < offsetsLength; ++i) {
2667 stream.getInt32(tmp);
2674 || tmp < previousValue
2675 || tmp > codesLength
2676 || (0 == i && 0 != tmp)) {
2684 stream.invalidate();
2687 inCal.d_holidayCodesIndex.
replace(i, tmp);
2688 previousValue = tmp;
2696 while (it != end && 0 == *it) {
2703 bool previousValueFlag =
false;
2710 for (
int i = 0; i < codesLength; ++i) {
2712 stream.getInt32(tmp);
2714 || (previousValueFlag && tmp <= previousValue)) {
2715 stream.invalidate();
2718 inCal.d_holidayCodes.
replace(i, tmp);
2724 if (it != end && i == (*it - 1)) {
2725 previousValueFlag =
false;
2727 while (it != end && i == (*it - 1)) {
2732 previousValueFlag =
true;
2734 previousValue = tmp;
2749 || (inCal.d_firstDate > inCal.d_lastDate
2750 && (inCal.d_firstDate !=
Date(9999, 12, 31)
2751 || inCal.d_lastDate !=
Date(1, 1, 1)))) {
2752 stream.invalidate();
2755 int length = inCal.d_lastDate - inCal.d_firstDate + 1;
2763 if (weekendDays.
length() > 0) {
2767 int offsetsLength = 0;
2768 stream.getLength(offsetsLength);
2770 || (inCal.d_firstDate > inCal.d_lastDate
2771 && offsetsLength != 0)
2772 || (inCal.d_firstDate <= inCal.d_lastDate
2773 && (offsetsLength < 0 || offsetsLength >
length))) {
2774 stream.invalidate();
2779 int codesLength = 0;
2780 stream.getLength(codesLength);
2781 if (!stream || (0 == offsetsLength && codesLength != 0)) {
2782 stream.invalidate();
2796 inCal.d_holidayOffsets.
resize(offsetsLength);
2797 inCal.d_holidayCodesIndex.
resize(offsetsLength);
2798 inCal.d_holidayCodes.
resize(codesLength);
2800 int previousValue = -1;
2801 for (
int i = 0; i < offsetsLength; ++i) {
2803 stream.getInt32(tmp);
2807 || tmp <= previousValue) {
2808 stream.invalidate();
2811 inCal.d_holidayOffsets.
replace(i, tmp);
2812 previousValue = tmp;
2816 for (
int i = 0; i < offsetsLength; ++i) {
2818 stream.getInt32(tmp);
2825 || tmp < previousValue
2826 || tmp > codesLength
2827 || (0 == i && 0 != tmp)) {
2835 stream.invalidate();
2838 inCal.d_holidayCodesIndex.
replace(i, tmp);
2839 previousValue = tmp;
2847 while (it != end && 0 == *it) {
2854 bool previousValueFlag =
false;
2861 for (
int i = 0; i < codesLength; ++i) {
2863 stream.getInt32(tmp);
2865 || (previousValueFlag && tmp <= previousValue)) {
2866 stream.invalidate();
2869 inCal.d_holidayCodes.
replace(i, tmp);
2875 if (it != end && i == (*it - 1)) {
2876 previousValueFlag =
false;
2878 while (it != end && i == (*it - 1)) {
2883 previousValueFlag =
true;
2885 previousValue = tmp;
2892 stream.invalidate();
2938 d_holidayOffsets.
begin(),
2939 d_holidayOffsets.
end(),
2940 date - d_firstDate);
2948 return d_weekendDaysTransitions.begin();
2973 return endHolidayCodes(iter.d_iterator);
2989 d_holidayOffsets.
begin(),
2990 d_holidayOffsets.
end(),
2991 date - d_firstDate);
2999 return d_weekendDaysTransitions.end();
3012 const Date& date)
const
3018 enum { e_SUCCESS = 0, e_FAILURE = 1 };
3024 *nextBusinessDay = *iter;
3034 return d_firstDate + d_holidayOffsets[index];
3045 const int offset = date - d_firstDate;
3052 return d_holidayCodes[d_holidayCodesIndex[i - offsetBegin] + index];
3068 const int offset = date - d_firstDate;
3071 d_holidayOffsets.
begin(),
3075 return i != offsetEnd && *i == offset;
3081 return d_firstDate <= date && date <= d_lastDate;
3099 if (d_weekendDaysTransitions.empty()) {
3105 return d_weekendDaysTransitions[0].second.isMember(dayOfWeek);
3119 return d_firstDate <= d_lastDate ? d_lastDate - d_firstDate + 1 : 0;
3131 return static_cast<int>(d_holidayCodes.
length());
3137 return static_cast<int>(d_holidayOffsets.
length());
3143 return static_cast<int>(d_weekendDaysTransitions.size());
3201 d_weekendDaysTransitions.end());
3259 d_weekendDaysTransitions.begin());
3269 return d_weekendDaysTransitions[index];
3277 return d_allocator_p;
3280template <
class STREAM>
3288 stream.putLength(
static_cast<int>(d_weekendDaysTransitions.size()));
3289 for (WeekendDaysTransitionSequence::size_type i = 0;
3290 i < d_weekendDaysTransitions.size();
3292 d_weekendDaysTransitions[i].first.bdexStreamOut(stream, 1);
3293 d_weekendDaysTransitions[i].second.bdexStreamOut(stream, 1);
3304 stream.putLength(
static_cast<int>(d_weekendDaysTransitions.size()));
3305 stream.putLength(
static_cast<int>(d_holidayOffsets.
length()));
3306 stream.putLength(
static_cast<int>(d_holidayCodes.
length()));
3308 for (WeekendDaysTransitionSequence::size_type i = 0;
3309 i < d_weekendDaysTransitions.size();
3311 d_weekendDaysTransitions[i].first.bdexStreamOut(stream, 1);
3312 d_weekendDaysTransitions[i].second.bdexStreamOut(stream, 1);
3315 for (bsl::size_t i = 0; i < d_holidayOffsets.
length(); ++i) {
3316 stream.putInt32(d_holidayOffsets[i]);
3318 for (bsl::size_t i = 0; i < d_holidayCodesIndex.
length(); ++i) {
3319 stream.putInt32(d_holidayCodesIndex[i]);
3321 for (bsl::size_t i = 0; i < d_holidayCodes.
length(); ++i) {
3322 stream.putInt32(d_holidayCodes[i]);
3327 "bdlt::packedCalendar::bdexStreamOut deprecated version");
3332 if (!d_weekendDaysTransitions.empty() &&
3333 d_weekendDaysTransitions[0].first ==
Date(1, 1, 1)) {
3334 d_weekendDaysTransitions[0].second.bdexStreamOut(stream, 1);
3341 stream.putLength(
static_cast<int>(d_holidayOffsets.
length()));
3342 stream.putLength(
static_cast<int>(d_holidayCodes.
length()));
3344 for (bsl::size_t i = 0; i < d_holidayOffsets.
length(); ++i) {
3345 stream.putInt32(d_holidayOffsets[i]);
3347 for (bsl::size_t i = 0; i < d_holidayCodesIndex.
length(); ++i) {
3348 stream.putInt32(d_holidayCodesIndex[i]);
3350 for (bsl::size_t i = 0; i < d_holidayCodes.
length(); ++i) {
3351 stream.putInt32(d_holidayCodes[i]);
3355 stream.invalidate();
3362#ifndef BDE_OMIT_INTERNAL_DEPRECATED
3379 return !(lhs == rhs);
3383template <
class HASHALG>
3387 using ::BloombergLP::bslh::hashAppend;
3390 hashAppend(hashAlg,
object.d_weekendDaysTransitions);
3391 hashAppend(hashAlg,
object.d_holidayOffsets);
3392 hashAppend(hashAlg,
object.d_holidayCodesIndex);
Definition bdlc_packedintarray.h:802
Definition bdlc_packedintarray.h:1098
const_iterator end() const
Definition bdlc_packedintarray.h:2633
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdlc_packedintarray.h:2604
const_iterator begin() const
Definition bdlc_packedintarray.h:2612
bool isEmpty() const
Definition bdlc_packedintarray.h:2649
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdlc_packedintarray.h:2393
void resize(bsl::size_t numElements)
Definition bdlc_packedintarray.h:2561
bsl::size_t length() const
Return number of elements in this array.
Definition bdlc_packedintarray.h:2663
void reserveCapacity(bsl::size_t numElements)
Definition bdlc_packedintarray.h:2528
void replace(bsl::size_t dstIndex, TYPE value)
Definition bdlc_packedintarray.h:2500
Definition bdlt_calendarreverseiteratoradapter.h:298
Definition bdlt_date.h:294
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdlt_date.h:1013
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdlt_date.h:924
Definition bdlt_dayofweekset.h:402
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdlt_dayofweekset.h:820
int length() const
Return the number of elements in this set.
Definition bdlt_dayofweekset.h:876
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdlt_dayofweekset.h:896
Definition bdlt_packedcalendar.h:1819
PackedCalendar_DateProxy operator->() const
Definition bdlt_packedcalendar.h:2294
PackedCalendar_BusinessDayConstIterator & operator++()
Definition bdlt_packedcalendar.h:2266
int difference_type
Definition bdlt_packedcalendar.h:1878
PackedCalendar_DateProxy pointer
Definition bdlt_packedcalendar.h:1879
Date value_type
Definition bdlt_packedcalendar.h:1877
PackedCalendar_DateRef reference
The star operator returns a PackedCalendar_DateRef by value.
Definition bdlt_packedcalendar.h:1882
friend bool operator!=(const PackedCalendar_BusinessDayConstIterator &, const PackedCalendar_BusinessDayConstIterator &)
PackedCalendar_BusinessDayConstIterator & operator=(const PackedCalendar_BusinessDayConstIterator &rhs)
bsl::bidirectional_iterator_tag iterator_category
Definition bdlt_packedcalendar.h:1886
friend bool operator==(const PackedCalendar_BusinessDayConstIterator &, const PackedCalendar_BusinessDayConstIterator &)
PackedCalendar_BusinessDayConstIterator & operator--()
Definition bdlt_packedcalendar.h:2276
PackedCalendar_DateRef operator*() const
Definition bdlt_packedcalendar.h:2287
~PackedCalendar_BusinessDayConstIterator()
Destroy this object.
Definition bdlt_packedcalendar.h:2259
Definition bdlt_packedcalendar.h:1491
PackedCalendar_DateProxy(const Date &date)
Create a proxy object for the specified date.
Definition bdlt_packedcalendar.h:1977
~PackedCalendar_DateProxy()
Destroy this object.
Definition bdlt_packedcalendar.h:1983
const Date * operator->() const
Definition bdlt_packedcalendar.h:1996
Definition bdlt_packedcalendar.h:1529
~PackedCalendar_DateRef()
Destroy this object.
Definition bdlt_packedcalendar.h:2020
PackedCalendar_DateProxy operator&() const
Return a proxy object to this object's referenced date.
Definition bdlt_packedcalendar.h:2026
PackedCalendar_DateRef(const Date &date)
Create a date reference object using the specified date.
Definition bdlt_packedcalendar.h:2007
Definition bdlt_packedcalendar.h:1689
friend bool operator!=(const PackedCalendar_HolidayCodeConstIterator &, const PackedCalendar_HolidayCodeConstIterator &)
friend bsl::ptrdiff_t operator-(const PackedCalendar_HolidayCodeConstIterator &, const PackedCalendar_HolidayCodeConstIterator &)
PackedCalendar_HolidayCodeConstIterator & operator=(const PackedCalendar_HolidayCodeConstIterator &rhs)
Definition bdlt_packedcalendar.h:2167
PackedCalendar_HolidayCodeConstIterator & operator--()
Definition bdlt_packedcalendar.h:2183
int value_type
Definition bdlt_packedcalendar.h:1717
int reference
The star operator returns an int by value.
Definition bdlt_packedcalendar.h:1722
~PackedCalendar_HolidayCodeConstIterator()
Destroy this object.
Definition bdlt_packedcalendar.h:2159
int operator*() const
Return the holiday code referenced by this iterator.
Definition bdlt_packedcalendar.h:2191
bsl::bidirectional_iterator_tag iterator_category
Definition bdlt_packedcalendar.h:1726
int difference_type
Definition bdlt_packedcalendar.h:1718
friend bool operator==(const PackedCalendar_HolidayCodeConstIterator &, const PackedCalendar_HolidayCodeConstIterator &)
int * pointer
Definition bdlt_packedcalendar.h:1719
PackedCalendar_HolidayCodeConstIterator & operator++()
Definition bdlt_packedcalendar.h:2175
Definition bdlt_packedcalendar.h:1565
PackedCalendar_HolidayConstIterator & operator--()
Definition bdlt_packedcalendar.h:2079
PackedCalendar_DateProxy pointer
Definition bdlt_packedcalendar.h:1594
PackedCalendar_HolidayConstIterator & operator++()
Definition bdlt_packedcalendar.h:2071
~PackedCalendar_HolidayConstIterator()
Destroy this object.
Definition bdlt_packedcalendar.h:2055
bsl::bidirectional_iterator_tag iterator_category
Definition bdlt_packedcalendar.h:1601
int difference_type
Definition bdlt_packedcalendar.h:1593
PackedCalendar_HolidayConstIterator & operator=(const PackedCalendar_HolidayConstIterator &rhs)
Definition bdlt_packedcalendar.h:2062
friend bool operator==(const PackedCalendar_HolidayConstIterator &, const PackedCalendar_HolidayConstIterator &)
Date value_type
Definition bdlt_packedcalendar.h:1592
PackedCalendar_DateRef operator*() const
Definition bdlt_packedcalendar.h:2087
friend bool operator!=(const PackedCalendar_HolidayConstIterator &, const PackedCalendar_HolidayConstIterator &)
PackedCalendar_DateRef reference
The star operator returns a PackedCalendar_DateRef by value.
Definition bdlt_packedcalendar.h:1597
PackedCalendar_DateProxy operator->() const
Return a date proxy for the holiday referenced by this iterator.
Definition bdlt_packedcalendar.h:2094
Definition bdlt_packedcalendar.h:593
void reserveHolidayCodeCapacity(int numHolidayCodes)
Definition bdlt_packedcalendar.h:2419
HolidayConstReverseIterator rbeginHolidays() const
Definition bdlt_packedcalendar.h:3182
int getNextBusinessDay(Date *nextBusinessDay, const Date &date) const
Definition bdlt_packedcalendar.h:3011
void addWeekendDays(const DayOfWeekSet &weekendDays)
bsl::ostream & print(bsl::ostream &stream, int level=0, int spacesPerLevel=4) const
bool isBusinessDay(const Date &date) const
Definition bdlt_packedcalendar.h:3056
bdlt::CalendarReverseIteratorAdapter< HolidayConstIterator > HolidayConstReverseIterator
Definition bdlt_packedcalendar.h:642
PackedCalendar(bslma::Allocator *basicAllocator=0)
void addHoliday(const Date &date)
PackedCalendar_HolidayConstIterator HolidayConstIterator
Definition bdlt_packedcalendar.h:634
void unionBusinessDays(const PackedCalendar &other)
int numWeekendDaysInRange() const
PackedCalendar(const Date &firstDate, const Date &lastDate, bslma::Allocator *basicAllocator=0)
int numNonBusinessDays() const
void setValidRange(const Date &firstDate, const Date &lastDate)
friend bool operator!=(const PackedCalendar &, const PackedCalendar &)
const Date & firstDate() const
Definition bdlt_packedcalendar.h:3003
int numBusinessDays(const Date &beginDate, const Date &endDate) const
void addHolidayCode(const Date &date, int holidayCode)
int numHolidays() const
Definition bdlt_packedcalendar.h:3135
int getNextBusinessDay(Date *nextBusinessDay, const Date &date, int nth) const
int numHolidayCodesTotal() const
Definition bdlt_packedcalendar.h:3129
void removeHoliday(const Date &date)
WeekendDaysTransitionConstReverseIterator rendWeekendDaysTransitions() const
Definition bdlt_packedcalendar.h:3256
HolidayCodeConstReverseIterator rendHolidayCodes(const Date &date) const
Definition bdlt_packedcalendar.h:3222
int holidayCode(const Date &date, int index) const
Definition bdlt_packedcalendar.h:3038
WeekendDaysTransitionConstIterator endWeekendDaysTransitions() const
Definition bdlt_packedcalendar.h:2997
HolidayCodeConstIterator beginHolidayCodes(const Date &date) const
WeekendDaysTransitionSequence::const_iterator WeekendDaysTransitionConstIterator
Definition bdlt_packedcalendar.h:648
PackedCalendar_HolidayCodeConstIterator HolidayCodeConstIterator
Definition bdlt_packedcalendar.h:636
void removeHolidayCode(const Date &date, int holidayCode)
BusinessDayConstReverseIterator rendBusinessDays() const
Definition bdlt_packedcalendar.h:3206
BusinessDayConstReverseIterator rbeginBusinessDays() const
Definition bdlt_packedcalendar.h:3148
BusinessDayConstIterator endBusinessDays() const
Definition bdlt_packedcalendar.h:2953
void addWeekendDay(DayOfWeek::Enum weekendDay)
int numBusinessDays() const
Definition bdlt_packedcalendar.h:3123
STREAM & bdexStreamIn(STREAM &stream, int version)
Definition bdlt_packedcalendar.h:2429
void addWeekendDaysTransition(const Date &startDate, const DayOfWeekSet &weekendDays)
void reserveHolidayCapacity(int numHolidays)
Definition bdlt_packedcalendar.h:2410
bool isNonBusinessDay(const Date &date) const
Definition bdlt_packedcalendar.h:3085
HolidayConstIterator beginHolidays() const
Definition bdlt_packedcalendar.h:2926
const Date & lastDate() const
Definition bdlt_packedcalendar.h:3109
bdlt::CalendarReverseIteratorAdapter< HolidayCodeConstIterator > HolidayCodeConstReverseIterator
Definition bdlt_packedcalendar.h:645
WeekendDaysTransitionPrivate WeekendDaysTransition
Definition bdlt_packedcalendar.h:630
bool isHoliday(const Date &date) const
Definition bdlt_packedcalendar.h:3064
HolidayCodeConstReverseIterator rbeginHolidayCodes(const Date &date) const
Definition bdlt_packedcalendar.h:3164
void swap(PackedCalendar &other)
void intersectNonBusinessDays(const PackedCalendar &other)
WeekendDaysTransition weekendDaysTransition(int index) const
Definition bdlt_packedcalendar.h:3264
HolidayCodeConstIterator endHolidayCodes(const Date &date) const
HolidayConstIterator endHolidays() const
Definition bdlt_packedcalendar.h:2977
~PackedCalendar()
Destroy this object.
void unionNonBusinessDays(const PackedCalendar &other)
bool isInRange(const Date &date) const
Definition bdlt_packedcalendar.h:3079
void intersectBusinessDays(const PackedCalendar &other)
bsl::reverse_iterator< WeekendDaysTransitionSequence::const_iterator > WeekendDaysTransitionConstReverseIterator
Definition bdlt_packedcalendar.h:652
bdlt::CalendarReverseIteratorAdapter< BusinessDayConstIterator > BusinessDayConstReverseIterator
Definition bdlt_packedcalendar.h:639
bslma::Allocator * allocator() const
Return the allocator used by this object to supply memory.
Definition bdlt_packedcalendar.h:3275
int length() const
Definition bdlt_packedcalendar.h:3117
bdlt::Date holiday(int index) const
Definition bdlt_packedcalendar.h:3029
static int maxSupportedBdexVersion()
Definition bdlt_packedcalendar.h:3366
STREAM & bdexStreamOut(STREAM &stream, int version) const
Definition bdlt_packedcalendar.h:3281
PackedCalendar(const PackedCalendar &original, bslma::Allocator *basicAllocator=0)
int addHolidayIfInRange(const Date &date)
Definition bdlt_packedcalendar.h:2400
int numWeekendDaysTransitions() const
Definition bdlt_packedcalendar.h:3141
PackedCalendar & operator=(const PackedCalendar &rhs)
WeekendDaysTransitionConstIterator beginWeekendDaysTransitions() const
Definition bdlt_packedcalendar.h:2946
BusinessDayConstIterator beginBusinessDays() const
Definition bdlt_packedcalendar.h:2902
HolidayConstReverseIterator rendHolidays() const
Definition bdlt_packedcalendar.h:3240
WeekendDaysTransitionConstReverseIterator rbeginWeekendDaysTransitions() const
Definition bdlt_packedcalendar.h:3198
friend bool operator==(const PackedCalendar &, const PackedCalendar &)
void addDay(const Date &date)
bool isWeekendDay(const Date &date) const
int numHolidayCodes(const Date &date) const
int addHolidayCodeIfInRange(const Date &date, int holidayCode)
Definition bdlt_packedcalendar.h:2390
PackedCalendar_BusinessDayConstIterator BusinessDayConstIterator
Definition bdlt_packedcalendar.h:632
friend void hashAppend(HASHALG &hashAlg, const PackedCalendar &)
Definition bslstl_pair.h:1280
Definition bslstl_vector.h:1120
static void swap(T *a, T *b)
Definition bslalg_swaputil.h:182
Definition bslma_allocator.h:545
#define BSLS_ASSERT(X)
Definition bsls_assert.h:1976
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_PRECONDITIONS_END()
Definition bsls_preconditions.h:131
#define BSLS_PRECONDITIONS_BEGIN()
Definition bsls_preconditions.h:130
#define BSLS_REVIEW_INVOKE(X)
Definition bsls_review.h:911
void hashAppend(HASH_ALGORITHM &hashAlgorithm, const BigEndianInt16 &object)
Definition bbldc_basicisma30360.h:112
Calendar_BusinessDayConstIter operator++(Calendar_BusinessDayConstIter &iterator, int)
Definition bdlt_calendar.h:2215
bool operator==(const Calendar &lhs, const Calendar &rhs)
Date operator-(const Date &date, int numDays)
bsl::ostream & operator<<(bsl::ostream &stream, const Calendar &calendar)
void hashAppend(HASHALG &hashAlg, const Calendar &object)
bool operator!=(const Calendar &lhs, const Calendar &rhs)
Calendar_BusinessDayConstIter operator--(Calendar_BusinessDayConstIter &iterator, int)
Definition bdlt_calendar.h:2224
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
ALLOCATOR & lhs
Definition bslstl_string.h:3917
Definition baljsn_encoder_testtypes.h:76
static PackedIntArrayConstIterator< TYPE > upperBound(PackedIntArrayConstIterator< TYPE > first, PackedIntArrayConstIterator< TYPE > last, TYPE value)
Definition bdlc_packedintarrayutil.h:221
static PackedIntArrayConstIterator< TYPE > lowerBound(PackedIntArrayConstIterator< TYPE > first, PackedIntArrayConstIterator< TYPE > last, TYPE value)
Definition bdlc_packedintarrayutil.h:191
Enum
Enumerated day-of-week values.
Definition bdlt_dayofweek.h:125
Definition bslma_usesbslmaallocator.h:344