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 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; }
// [[Rcpp::export]] std::vector<QuantLib::Date> adjust(std::string calendar, std::vector<QuantLib::Date> dates, int bdc=0) { boost::shared_ptr<QuantLib::Calendar> pcal(getCalendar(calendar)); QuantLib::BusinessDayConvention bdcval = getBusinessDayConvention(bdc); int n = dates.size(); std::vector<QuantLib::Date> adjusted(n); for (int i=0; i<n; i++) { adjusted[i] = pcal->adjust(dates[i], bdcval); } return adjusted; }
// [[Rcpp::export]] std::vector<QuantLib::Date> advance1(std::string calendar, double amount, double unit, int bdcVal, double emr, std::vector<QuantLib::Date> dates) { boost::shared_ptr<QuantLib::Calendar> pcal(getCalendar(calendar)); QuantLib::BusinessDayConvention bdc = getBusinessDayConvention(bdcVal); int n = dates.size(); std::vector<QuantLib::Date> advance(n); for (int i=0; i<n; i++) { advance[i] = pcal->advance(dates[i], amount, getTimeUnit(unit), bdc, (emr == 1) ? true : false); } return advance; }
// [[Rcpp::export]] std::vector<QuantLib::Date> advance2(std::string calendar, double period, int bdcVal, double emr, std::vector<QuantLib::Date> dates) { boost::shared_ptr<QuantLib::Calendar> pcal(getCalendar(calendar)); QuantLib::BusinessDayConvention bdc = getBusinessDayConvention(bdcVal); int n = dates.size(); std::vector<QuantLib::Date> advance(n); for (int i=0; i<n; i++) { advance[i] = pcal->advance(dates[i], QuantLib::Period(getFrequency(period)), bdc, (emr == 1) ? true : false); } return advance; }