RcppExport SEXP advance2(SEXP calSexp, SEXP param, SEXP dateSexp){ try { boost::shared_ptr<QuantLib::Calendar> pcal( getCalendar(Rcpp::as<std::string>(calSexp)) ); Rcpp::List rparam(param); QuantLib::BusinessDayConvention bdc = getBusinessDayConvention( Rcpp::as<double>(rparam["bdc"]) ); double emr = Rcpp::as<double>(rparam["emr"]); double period = Rcpp::as<double>(rparam["period"]); Rcpp::DateVector dates = Rcpp::DateVector(dateSexp); int n = dates.size(); std::vector<QuantLib::Date> advance(n); for (int i=0; i<n; i++) { QuantLib::Date day( dateFromR(dates[i]) ); advance[i] = pcal->advance(day, QuantLib::Period(getFrequency(period)), bdc, (emr == 1)?true:false ); dates[i] = Rcpp::Date(advance[i].month(), advance[i].dayOfMonth(), advance[i].year()); } return Rcpp::wrap(dates); } catch(std::exception &ex) { forward_exception_to_r(ex); } catch(...) { ::Rf_error("c++ exception (unknown reason)"); } return R_NilValue; }
RcppExport SEXP endOfMonth(SEXP calSexp, SEXP dateSexp){ try { boost::shared_ptr<QuantLib::Calendar> pcal( getCalendar(Rcpp::as<std::string>(calSexp)) ); Rcpp::DateVector dates = Rcpp::DateVector(dateSexp); int n = dates.size(); std::vector<QuantLib::Date> eom(n); for (int i=0; i<n; i++) { QuantLib::Date day( dateFromR(dates[i]) ); eom[i] = pcal->endOfMonth(day); dates[i] = Rcpp::Date(eom[i].month(), eom[i].dayOfMonth(), eom[i].year()); } return Rcpp::wrap(dates); } catch(std::exception &ex) { forward_exception_to_r(ex); } catch(...) { ::Rf_error("c++ exception (unknown reason)"); } return R_NilValue; }
RcppExport SEXP adjust(SEXP calSexp, SEXP bdcSEXP, SEXP dateSexp){ try { boost::shared_ptr<QuantLib::Calendar> pcal( getCalendar(Rcpp::as<std::string>(calSexp)) ); QuantLib::BusinessDayConvention bdc = getBusinessDayConvention( Rcpp::as<double>(bdcSEXP) ); Rcpp::DateVector dates = Rcpp::DateVector(dateSexp); int n = dates.size(); std::vector<QuantLib::Date> adjusted(n); for (int i=0; i<n; i++) { QuantLib::Date day( dateFromR(dates[i]) ); adjusted[i] = pcal->adjust(day, bdc); dates[i] = Rcpp::Date(adjusted[i].month(), adjusted[i].dayOfMonth(), adjusted[i].year()); } return Rcpp::wrap(dates); } catch(std::exception &ex) { forward_exception_to_r(ex); } catch(...) { ::Rf_error("c++ exception (unknown reason)"); } return R_NilValue; }
RcppExport SEXP isHoliday(SEXP calSexp, SEXP dateSexp){ try { boost::shared_ptr<QuantLib::Calendar> pcal( getCalendar(Rcpp::as<std::string>(calSexp)) ); Rcpp::DateVector dates = Rcpp::DateVector(dateSexp); int n = dates.size(); std::vector<int> hdays(n); for (int i=0; i<n; i++) { QuantLib::Date day( dateFromR(dates[i]) ); hdays[i] = pcal->isHoliday(day); } return Rcpp::wrap(hdays); } catch(std::exception &ex) { forward_exception_to_r(ex); } catch(...) { ::Rf_error("c++ exception (unknown reason)"); } return R_NilValue; }
// [[Rcpp::export]] Rcpp::DateVector advanceDatesRR(Rcpp::DateVector d, int n) { for (int i=0; i<d.size(); i++) d[i] = d[i] + n; return d; }