21#include <ql/time/calendars/china.hpp>
22#include <ql/errors.hpp>
29 static ext::shared_ptr<Calendar::Impl> sseImpl(
new China::SseImpl);
30 static ext::shared_ptr<Calendar::Impl> IBImpl(
new China::IbImpl);
39 QL_FAIL(
"unknown market");
56 || (y == 2005 && d == 3 && m ==
January)
57 || (y == 2006 && (d == 2 || d == 3) && m ==
January)
58 || (y == 2007 && d <= 3 && m ==
January)
59 || (y == 2007 && d == 31 && m ==
December)
60 || (y == 2009 && d == 2 && m ==
January)
61 || (y == 2011 && d == 3 && m ==
January)
62 || (y == 2012 && (d == 2 || d == 3) && m ==
January)
63 || (y == 2013 && d <= 3 && m ==
January)
64 || (y == 2014 && d == 1 && m ==
January)
65 || (y == 2015 && d <= 3 && m ==
January)
66 || (y == 2017 && d == 2 && m ==
January)
67 || (y == 2018 && d == 1 && m ==
January)
68 || (y == 2018 && d == 31 && m ==
December)
69 || (y == 2019 && d == 1 && m ==
January)
70 || (y == 2020 && d == 1 && m ==
January)
71 || (y == 2021 && d == 1 && m ==
January)
72 || (y == 2022 && d == 3 && m ==
January)
73 || (y == 2023 && d == 2 && m ==
January)
75 || (y == 2004 && d >= 19 && d <= 28 && m ==
January)
76 || (y == 2005 && d >= 7 && d <= 15 && m ==
February)
77 || (y == 2006 && ((d >= 26 && m ==
January) ||
79 || (y == 2007 && d >= 17 && d <= 25 && m ==
February)
80 || (y == 2008 && d >= 6 && d <= 12 && m ==
February)
81 || (y == 2009 && d >= 26 && d <= 30 && m ==
January)
82 || (y == 2010 && d >= 15 && d <= 19 && m ==
February)
83 || (y == 2011 && d >= 2 && d <= 8 && m ==
February)
84 || (y == 2012 && d >= 23 && d <= 28 && m ==
January)
85 || (y == 2013 && d >= 11 && d <= 15 && m ==
February)
86 || (y == 2014 && d >= 31 && m ==
January)
87 || (y == 2014 && d <= 6 && m ==
February)
88 || (y == 2015 && d >= 18 && d <= 24 && m ==
February)
89 || (y == 2016 && d >= 8 && d <= 12 && m ==
February)
90 || (y == 2017 && ((d >= 27 && m ==
January) ||
92 || (y == 2018 && (d >= 15 && d <= 21 && m ==
February))
93 || (y == 2019 && d >= 4 && d <= 8 && m ==
February)
94 || (y == 2020 && (d == 24 || (d >= 27 && d <= 31)) && m ==
January)
95 || (y == 2021 && (d == 11 || d == 12 || d == 15 || d == 16 || d == 17) && m ==
February)
96 || (y == 2022 && ((d == 31 && m ==
January) || (d <= 4 && m ==
February)))
97 || (y == 2023 && d >= 23 && d <= 27 && m ==
January)
99 || (y <= 2008 && d == 4 && m ==
April)
100 || (y == 2009 && d == 6 && m ==
April)
101 || (y == 2010 && d == 5 && m ==
April)
102 || (y == 2011 && d >=3 && d <= 5 && m ==
April)
103 || (y == 2012 && d >= 2 && d <= 4 && m ==
April)
104 || (y == 2013 && d >= 4 && d <= 5 && m ==
April)
105 || (y == 2014 && d == 7 && m ==
April)
106 || (y == 2015 && d >= 5 && d <= 6 && m ==
April)
107 || (y == 2016 && d == 4 && m ==
April)
108 || (y == 2017 && d >= 3 && d <= 4 && m ==
April)
109 || (y == 2018 && d >= 5 && d <= 6 && m ==
April)
110 || (y == 2019 && d == 5 && m ==
April)
111 || (y == 2020 && d == 6 && m ==
April)
112 || (y == 2021 && d == 5 && m ==
April)
113 || (y == 2022 && d >= 4 && d <= 5 && m ==
April)
114 || (y == 2023 && d == 5 && m ==
April)
116 || (y <= 2007 && d >= 1 && d <= 7 && m ==
May)
117 || (y == 2008 && d >= 1 && d <= 2 && m ==
May)
118 || (y == 2009 && d == 1 && m ==
May)
119 || (y == 2010 && d == 3 && m ==
May)
120 || (y == 2011 && d == 2 && m ==
May)
121 || (y == 2012 && ((d == 30 && m ==
April) ||
122 (d == 1 && m ==
May)))
123 || (y == 2013 && ((d >= 29 && m ==
April) ||
124 (d == 1 && m ==
May)))
125 || (y == 2014 && d >= 1 && d <=3 && m ==
May)
126 || (y == 2015 && d == 1 && m ==
May)
127 || (y == 2016 && d >= 1 && d <=2 && m ==
May)
128 || (y == 2017 && d == 1 && m ==
May)
129 || (y == 2018 && ((d == 30 && m ==
April) || (d == 1 && m ==
May)))
130 || (y == 2019 && d >= 1 && d <=3 && m ==
May)
131 || (y == 2020 && (d == 1 || d == 4 || d == 5) && m ==
May)
132 || (y == 2021 && (d == 3 || d == 4 || d == 5) && m ==
May)
133 || (y == 2022 && d >= 2 && d <= 4 && m ==
May)
134 || (y == 2023 && d >= 1 && d <= 3 && m ==
May)
136 || (y <= 2008 && d == 9 && m ==
June)
137 || (y == 2009 && (d == 28 || d == 29) && m ==
May)
138 || (y == 2010 && d >= 14 && d <= 16 && m ==
June)
139 || (y == 2011 && d >= 4 && d <= 6 && m ==
June)
140 || (y == 2012 && d >= 22 && d <= 24 && m ==
June)
141 || (y == 2013 && d >= 10 && d <= 12 && m ==
June)
142 || (y == 2014 && d == 2 && m ==
June)
143 || (y == 2015 && d == 22 && m ==
June)
144 || (y == 2016 && d >= 9 && d <= 10 && m ==
June)
145 || (y == 2017 && d >= 29 && d <= 30 && m ==
May)
146 || (y == 2018 && d == 18 && m ==
June)
147 || (y == 2019 && d == 7 && m ==
June)
148 || (y == 2020 && d >= 25 && d <= 26 && m ==
June)
149 || (y == 2021 && d == 14 && m ==
June)
150 || (y == 2022 && d == 3 && m ==
June)
151 || (y == 2023 && d >= 22 && d <= 23 && m ==
June)
153 || (y <= 2008 && d == 15 && m ==
September)
154 || (y == 2010 && d >= 22 && d <= 24 && m ==
September)
155 || (y == 2011 && d >= 10 && d <= 12 && m ==
September)
156 || (y == 2012 && d == 30 && m ==
September)
157 || (y == 2013 && d >= 19 && d <= 20 && m ==
September)
158 || (y == 2014 && d == 8 && m ==
September)
159 || (y == 2015 && d == 27 && m ==
September)
160 || (y == 2016 && d >= 15 && d <= 16 && m ==
September)
161 || (y == 2018 && d == 24 && m ==
September)
162 || (y == 2019 && d == 13 && m ==
September)
163 || (y == 2021 && (d == 20 || d == 21) && m ==
September)
164 || (y == 2022 && d == 12 && m ==
September)
165 || (y == 2023 && d == 29 && m ==
September)
167 || (y <= 2007 && d >= 1 && d <= 7 && m ==
October)
168 || (y == 2008 && ((d >= 29 && m ==
September) ||
170 || (y == 2009 && d >= 1 && d <= 8 && m ==
October)
171 || (y == 2010 && d >= 1 && d <= 7 && m ==
October)
172 || (y == 2011 && d >= 1 && d <= 7 && m ==
October)
173 || (y == 2012 && d >= 1 && d <= 7 && m ==
October)
174 || (y == 2013 && d >= 1 && d <= 7 && m ==
October)
175 || (y == 2014 && d >= 1 && d <= 7 && m ==
October)
176 || (y == 2015 && d >= 1 && d <= 7 && m ==
October)
177 || (y == 2016 && d >= 3 && d <= 7 && m ==
October)
178 || (y == 2017 && d >= 2 && d <= 6 && m ==
October)
179 || (y == 2018 && d >= 1 && d <= 5 && m ==
October)
180 || (y == 2019 && d >= 1 && d <= 7 && m ==
October)
181 || (y == 2020 && d >= 1 && d <= 2 && m ==
October)
182 || (y == 2020 && d >= 5 && d <= 8 && m ==
October)
183 || (y == 2021 && (d == 1 || d == 4 || d == 5 || d == 6 || d == 7) && m ==
October)
184 || (y == 2022 && d >= 3 && d <= 7 && m ==
October)
185 || (y == 2023 && d >= 2 && d <= 6 && m ==
October)
187 || (y == 2015 && d >= 3 && d <= 4 && m ==
September)
198 static const Date working_weekends[] = {
343 static const Size n =
344 sizeof(working_weekends)/
sizeof(working_weekends[0]);
345 static const std::set<Date> workingWeekends(working_weekends+0,
349 return sseImpl->isBusinessDay(date) ||
350 (workingWeekends.find(date) != workingWeekends.end());
bool isWeekend(Weekday w) const
ext::shared_ptr< Impl > impl_
bool isBusinessDay(const Date &) const override
bool isWeekend(Weekday) const override
bool isBusinessDay(const Date &) const override
bool isWeekend(Weekday) const override
@ SSE
Shanghai stock exchange.
std::size_t Size
size of a container