QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
jointcalendar.hpp
Go to the documentation of this file.
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3/*
4 Copyright (C) 2003 RiskMap srl
5 Copyright (C) 2020 Piotr Siejda
6
7 This file is part of QuantLib, a free-software/open-source library
8 for financial quantitative analysts and developers - http://quantlib.org/
9
10 QuantLib is free software: you can redistribute it and/or modify it
11 under the terms of the QuantLib license. You should have received a
12 copy of the license along with this program; if not, please email
13 <quantlib-dev@lists.sf.net>. The license is also available online at
14 <http://quantlib.org/license.shtml>.
15
16 This program is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
18 FOR A PARTICULAR PURPOSE. See the license for more details.
19*/
20
21/*! \file jointcalendar.hpp
22 \brief Joint calendar
23*/
24
25#ifndef quantlib_joint_calendar_h
26#define quantlib_joint_calendar_h
27
28#include <ql/time/calendar.hpp>
29
30namespace QuantLib {
31
32 //! rules for joining calendars
33 enum JointCalendarRule { JoinHolidays, /*!< A date is a holiday
34 for the joint calendar
35 if it is a holiday
36 for any of the given
37 calendars */
38 JoinBusinessDays /*!< A date is a business day
39 for the joint calendar
40 if it is a business day
41 for any of the given
42 calendars */
43 };
44
45 //! Joint calendar
46 /*! Depending on the chosen rule, this calendar has a set of
47 business days given by either the union or the intersection
48 of the sets of business days of the given calendars.
49
50 \ingroup calendars
51
52 \test the correctness of the returned results is tested by
53 reproducing the calculations.
54 */
55 class JointCalendar : public Calendar {
56 private:
57 class Impl final : public Calendar::Impl {
58 public:
59 Impl(const Calendar&, const Calendar&,
61 Impl(const Calendar&, const Calendar&,
63 Impl(const Calendar&, const Calendar&,
64 const Calendar&, const Calendar&,
66 Impl(std::vector<Calendar>, JointCalendarRule);
67 std::string name() const override;
68 bool isWeekend(Weekday) const override;
69 bool isBusinessDay(const Date&) const override;
70
71 private:
73 std::vector<Calendar> calendars_;
74 };
75 public:
76 JointCalendar(const Calendar&, const Calendar&,
78 JointCalendar(const Calendar&, const Calendar&,
79 const Calendar&,
81 JointCalendar(const Calendar&, const Calendar&,
82 const Calendar&, const Calendar&,
84 explicit JointCalendar(const std::vector<Calendar>&,
86 };
87
88}
89
90
91
92#endif
calendar class
abstract base class for calendar implementations
Definition: calendar.hpp:64
calendar class
Definition: calendar.hpp:61
Concrete date class.
Definition: date.hpp:125
bool isBusinessDay(const Date &) const override
std::vector< Calendar > calendars_
std::string name() const override
bool isWeekend(Weekday) const override
Definition: any.hpp:35
JointCalendarRule
rules for joining calendars