00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #include <RcppDateVector.h>
00024
00025 RcppDateVector::RcppDateVector(SEXP vec) {
00026 int i;
00027 if (!Rf_isNumeric(vec) || Rf_isMatrix(vec) || Rf_isLogical(vec))
00028 throw std::range_error("RcppDateVector: invalid numeric vector in constructor");
00029 int len = Rf_length(vec);
00030 if (len == 0)
00031 throw std::range_error("RcppDateVector: null vector in constructor");
00032 v = new RcppDate[len];
00033 for (i = 0; i < len; i++)
00034 v[i] = RcppDate((int)REAL(vec)[i]);
00035 length = len;
00036 }
00037
00038 RcppDateVector::~RcppDateVector() {
00039 delete [] v;
00040 }
00041
00042 RcppDate& RcppDateVector::operator()(int i) {
00043 if (i < 0 || i >= length) {
00044 std::ostringstream oss;
00045 oss << "RcppDateVector: subscript out of range: " << i;
00046 throw std::range_error(oss.str());
00047 }
00048 return v[i];
00049 }
00050
00051 int RcppDateVector::size() const {
00052 return length;
00053 }