| 314 | } |
| 315 | |
| 316 | SEXP allocateDataFrameColumn(RblpapiT rblpapitype, const size_t n) { |
| 317 | SEXP ans; |
| 318 | switch(rblpapitype) { |
| 319 | case RblpapiT::Logical: |
| 320 | ans = Rcpp::LogicalVector(n, NA_LOGICAL); |
| 321 | break; |
| 322 | case RblpapiT::Integer: |
| 323 | ans = Rcpp::IntegerVector(n, NA_INTEGER); |
| 324 | break; |
| 325 | case RblpapiT::Integer64: |
| 326 | case RblpapiT::Double: |
| 327 | case RblpapiT::Float: |
| 328 | ans = Rcpp::NumericVector(n, NA_REAL); |
| 329 | break; |
| 330 | case RblpapiT::Date: |
| 331 | ans = Rcpp::NumericVector(n, NA_REAL); |
| 332 | ans = Rcpp::DateVector(ans); |
| 333 | break; |
| 334 | case RblpapiT::Datetime: |
| 335 | // FIXME: string for datetime ? |
| 336 | // ans = PROTECT(Rf_allocVector(STRSXP,n)); |
| 337 | ans = Rcpp::StringVector(n); |
| 338 | break; |
| 339 | case RblpapiT::String: |
| 340 | ans = Rcpp::StringVector(n); |
| 341 | break; |
| 342 | default: // try to convert it as a string |
| 343 | ans = Rcpp::StringVector(n); |
| 344 | break; |
| 345 | } |
| 346 | return ans; |
| 347 | } |
| 348 | |
| 349 | FieldInfo getFieldType(Session *session, Service& fieldInfoService, const std::string& field) { |
| 350 | |