示例#1
0
RcppExport SEXP advance1(SEXP calSexp, SEXP params, SEXP dateSexp){

    try {
        boost::shared_ptr<QuantLib::Calendar> pcal( getCalendar(Rcpp::as<std::string>(calSexp)) );
        Rcpp::List rparam(params);        
        QuantLib::BusinessDayConvention bdc = getBusinessDayConvention( Rcpp::as<double>(rparam["bdc"]) );
        double emr = Rcpp::as<double>(rparam["emr"]);
        double amount = Rcpp::as<double>(rparam["amount"]);
        double unit = Rcpp::as<double>(rparam["unit"]);

        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, amount,getTimeUnit(unit), 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;
}
示例#2
0
// [[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;
}
TimeUnit::UTimeUnitFields
TimeUnitAmount::getTimeUnitField() const {
    return getTimeUnit().getTimeUnitField();
}
void KoodevStopwatch::dumpMessage(long labTime, const char *tag)
{
    KOODEV_PRINT("[%s][%s] %ld %s\n", m_message.data(), tag, labTime, getTimeUnit());
}
void KoodevStopwatch::dumpMessage(long labTime, int index)
{
    KOODEV_PRINT("[%s][lab#%d] %ld %s\n", m_message.data(), index, labTime, getTimeUnit());
}