@@ -25,26 +25,44 @@ using std::pow;
2525
2626namespace QuantLib ::detail {
2727
28- GsrProcessCore::GsrProcessCore (const Array ×, const Array &vols,
29- const Array &reversions, const Real T)
30- : times_(times), vols_(vols), reversions_(reversions),
31- T_ (T), revZero_(reversions.size(), false) {
28+ GsrProcessCore::GsrProcessCore (Array times, Array vols,
29+ Array reversions, const Real T)
30+ : times_(std::move(times)), vols_(std::move(vols)), reversions_(std::move(reversions)),
31+ T_ (T), revZero_(reversions_.size(), false) {
32+ flushCache ();
33+ checkTimesVolsReversions ();
34+ }
3235
33- QL_REQUIRE (times.size () == vols.size () - 1 ,
36+ void GsrProcessCore::setTimes (Array times) {
37+ times_ = std::move (times);
38+ checkTimesVolsReversions ();
39+ }
40+
41+ void GsrProcessCore::setVols (Array vols) {
42+ vols_ = std::move (vols);
43+ checkTimesVolsReversions ();
44+ }
45+
46+ void GsrProcessCore::setReversions (Array reversions) {
47+ reversions_ = std::move (reversions);
48+ checkTimesVolsReversions ();
49+ }
50+
51+ void GsrProcessCore::checkTimesVolsReversions () const {
52+ QL_REQUIRE (times_.size () == vols_.size () - 1 ,
3453 " number of volatilities ("
35- << vols .size () << " ) compared to number of times ("
54+ << vols_ .size () << " ) compared to number of times ("
3655 << times_.size () << " must be bigger by one" );
37- QL_REQUIRE (times .size () == reversions .size () - 1 || reversions .size () == 1 ,
56+ QL_REQUIRE (times_ .size () == reversions_ .size () - 1 || reversions_ .size () == 1 ,
3857 " number of reversions ("
39- << vols .size () << " ) compared to number of times ("
58+ << vols_ .size () << " ) compared to number of times ("
4059 << times_.size () << " must be bigger by one, or exactly "
4160 " 1 reversion must be given" );
42- for (int i = 0 ; i < ((int )times .size ()) - 1 ; i++)
43- QL_REQUIRE (times [i] < times [i + 1 ], " times must be increasing ("
44- << times [i] << " @" << i << " , "
45- << times [i + 1 ] << " @" << i + 1
61+ for (int i = 0 ; i < ((int )times_ .size ()) - 1 ; i++)
62+ QL_REQUIRE (times_ [i] < times_ [i + 1 ], " times must be increasing ("
63+ << times_ [i] << " @" << i << " , "
64+ << times_ [i + 1 ] << " @" << i + 1
4665 << " )" );
47- flushCache ();
4866}
4967
5068void GsrProcessCore::flushCache () const {
0 commit comments