|
2 | 2 | // |
3 | 3 | // RcppEigenWrap.h: Rcpp wrap methods for Eigen matrices, vectors and arrays |
4 | 4 | // |
5 | | -// Copyright (C) 2011 - 2012 Douglas Bates, Dirk Eddelbuettel and Romain Francois |
| 5 | +// Copyright (C) 2011 - 2022 Douglas Bates, Dirk Eddelbuettel and Romain Francois |
6 | 6 | // |
7 | 7 | // This file is part of RcppEigen. |
8 | 8 | // |
@@ -81,18 +81,18 @@ namespace Rcpp{ |
81 | 81 | // for plain dense objects |
82 | 82 | template <typename T> |
83 | 83 | SEXP eigen_wrap_plain_dense( const T& obj, Rcpp::traits::true_type ) { |
84 | | - typename Eigen::internal::conditional< |
85 | | - T::IsRowMajor, |
86 | | - Eigen::Matrix<typename T::Scalar, |
87 | | - T::RowsAtCompileTime, |
88 | | - T::ColsAtCompileTime>, |
89 | | - const T&>::type objCopy(obj); |
90 | | - R_xlen_t m = obj.rows(), n = obj.cols(), size = m * n; |
91 | | - SEXP ans = PROTECT(::Rcpp::wrap(objCopy.data(), objCopy.data() + size)); |
| 84 | + typename Eigen::internal::conditional< |
| 85 | + T::IsRowMajor, |
| 86 | + Eigen::Matrix<typename T::Scalar, |
| 87 | + T::RowsAtCompileTime, |
| 88 | + T::ColsAtCompileTime>, |
| 89 | + const T&>::type objCopy(obj); |
| 90 | + R_xlen_t m = obj.rows(), n = obj.cols(), size = m * n; |
| 91 | + SEXP ans = PROTECT(::Rcpp::wrap(objCopy.data(), objCopy.data() + size)); |
92 | 92 | if ( T::ColsAtCompileTime != 1 ) { |
93 | | - if (m > INT_MAX || n > INT_MAX) { |
94 | | - throw std::runtime_error("array dimensions cannot exceed INT_MAX"); |
95 | | - } |
| 93 | + if (m > INT_MAX || n > INT_MAX) { |
| 94 | + Rcpp::stop("array dimensions cannot exceed INT_MAX"); |
| 95 | + } |
96 | 96 | SEXP dd = PROTECT(::Rf_allocVector(INTSXP, 2)); |
97 | 97 | int *d = INTEGER(dd); |
98 | 98 | d[0] = m; |
|
0 commit comments