|
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