QuantLib: a free/open-source library for quantitative finance
fully annotated source code - version 1.34
Loading...
Searching...
No Matches
bespokecalendar.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) 2008 StatPro Italia srl
5
6 This file is part of QuantLib, a free-software/open-source library
7 for financial quantitative analysts and developers - http://quantlib.org/
8
9 QuantLib is free software: you can redistribute it and/or modify it
10 under the terms of the QuantLib license. You should have received a
11 copy of the license along with this program; if not, please email
12 <quantlib-dev@lists.sf.net>. The license is also available online at
13 <http://quantlib.org/license.shtml>.
14
15 This program is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the license for more details.
18*/
19
20/*! \file bespokecalendar.hpp
21 \brief Bespoke calendar
22*/
23
24#ifndef quantlib_bespoke_calendar_hpp
25#define quantlib_bespoke_calendar_hpp
26
27#include <ql/time/calendar.hpp>
28
29namespace QuantLib {
30
31 //! Bespoke calendar
32 /*! This calendar has no predefined set of business days. Holidays
33 and weekdays can be defined by means of the provided
34 interface. Instances constructed by copying remain linked to
35 the original one; adding a new holiday or weekday will affect
36 all linked instances.
37
38 \ingroup calendars
39 */
40 class BespokeCalendar : public Calendar {
41 private:
42 class Impl final : public Calendar::Impl {
43 public:
44 explicit Impl(std::string name = "");
45 std::string name() const override;
46 bool isWeekend(Weekday) const override;
47 bool isBusinessDay(const Date&) const override;
48 void addWeekend(Weekday);
49 private:
50 std::string name_;
51 unsigned int weekend_mask_ = 0;
52 };
53 ext::shared_ptr<BespokeCalendar::Impl> bespokeImpl_;
54 public:
55 /*! \warning different bespoke calendars created with the same
56 name (or different bespoke calendars created with
57 no name) will compare as equal.
58 */
59 BespokeCalendar(const std::string& name = "");
60 //! marks the passed day as part of the weekend
61 void addWeekend(Weekday);
62 };
63
64}
65
66
67#endif
calendar class
bool isBusinessDay(const Date &) const override
std::string name() const override
bool isWeekend(Weekday) const override
ext::shared_ptr< BespokeCalendar::Impl > bespokeImpl_
void addWeekend(Weekday)
marks the passed day as part of the weekend
abstract base class for calendar implementations
Definition: calendar.hpp:64
calendar class
Definition: calendar.hpp:61
std::string name() const
Returns the name of the calendar.
Definition: calendar.hpp:206
Concrete date class.
Definition: date.hpp:125
Definition: any.hpp:35