[Rcpp-devel] Forcing a shallow versus deep copy
I am sure there are better ways to achieve the goal. I would suggest that
these two be similar if possible. I think the naive expectation is for them
to be consistent.
// [[Rcpp::export]]
stuff function(Rcpp::stuff) {
}
// [[Rcpp::export]]
stuff function(arma::stuff) {
}
Thank you again. Cheers.
On Thu, Jul 11, 2013 at 9:22 PM, <romain at r-enthusiasts.com> wrote:
Hello, This comes up every now and then, I think we can find a syntax to initiate an arma::mat that would allow what you want. It is not likely it will come via attributes. The idea is to keep them simple. The solutions I see below would eventually lead to clutter, and we are heading in the less clutter direction. I'll think about it and propose something. Romain Le 2013-07-11 14:32, Changi Han a ?crit :
Hello,
I think I (superficially) understand the difference between:
// [[Rcpp::export]]
double sum1(Rcpp::NumericMatrix M) {
arma::mat A(M.begin(), M.rows(), M.cols(), false);
return sum(sum(A));
}
// [[Rcpp::export]]
double sum2(arma::mat A) {
return sum(sum(A));
}
Partly out of laziness, partly because sum2 is more elegant, and
partly to avoid namespace pollution, I was wondering if there is a way
to "force" a "shallow" copy in sum2.
If not, then may I submit a low priority feature request. An
attribute? Some thing like:
// [[Rcpp::export]]
double sum2(arma::mat A) {
// [[ Rcpp::shallow ( A ) ]]
return sum(sum(A));
}
Or (akin to C++11 generalized attributes)
// [[Rcpp::export]] { [[ Rcpp::shallow ( A ) ]] }
double sum2(arma::mat A) {
return sum(sum(A));
}
An alternative is to have an argument in sourceCpp that takes a
list/vector of objects that are to be shallow or deep copied.
For example in sum1, if M is changed within the function before
casting to the arma::mat, then might be cleaner to add M to a
list/vector of objects to be deep copied rather than cloning M within
sum1: leads to one fewer variable name.
Just a thought. I can certainly live with the additional step. As
always, thanks for all the Rcpp goodness.
Cheers,
Changi Han
______________________________**_________________ Rcpp-devel mailing list Rcpp-devel at lists.r-forge.r-**project.org<Rcpp-devel at lists.r-forge.r-project.org> https://lists.r-forge.r-**project.org/cgi-bin/mailman/** listinfo/rcpp-devel<https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel>
-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130711/41fb14ce/attachment.html>