Re: [Rcpp-devel] Modules + Attributes for extensions

2018-03-08 Thread fernandohtoledo
Dear All,

So, after some more digging on the web and studying pointed packages
and documents I did achieve my goal. For those who may have the same
needs, I suggest you take a look on how RcppR6 deal and propose.
Anyway, many thanks to Ralf and Sergei.

Cheers,
FH

-Original Message-
From: fernandohtol...@gmail.com
To: rcpp-devel@lists.r-forge.r-project.org
Subject: Re: [Rcpp-devel] Modules + Attributes for extensions
Date: Wed, 07 Mar 2018 12:02:34 -0600

Dear Sergei,

You got my question... however:

I followed what is shown in RcppBDT as well as in Rcpp Extending
Vignette i.e., include RcppCommon.h, define the class, include Rcpp.h.
But, how the implement as/wrap? 

I also turn available the extensions trough the "depends" attribute. It
works and recognize my class...

What I can't understand (implement) is how to define an as
taking MyClass as input from R as well as the wrap(MyClass) which is
supposed to return an instance of MyClass to R.

I did try the Rcpp::XPtr approach for wrapping too but, then what I get
in the R side is and externalptr, not an instance of MyClass.

Any clue or example to point me? I will appreciate :)

Cheers,
FH

-Original Message-
From: Serguei Sokol 
Reply-to: serguei.so...@gmail.com
To: fernandohtol...@gmail.com, rcpp-devel@lists.r-forge.r-project.org
Subject: Re: [Rcpp-devel] Modules + Attributes for extensions
Date: Wed, 7 Mar 2018 16:57:20 +0100

Le 07/03/2018 à 15:59, fernandohtol...@gmail.com a écrit :
> Dear Ralf and others,
> 
> Thanks for your reply. I did looked for the references you pointed
> before. Unfortunately, there is nothing new in the Extending vignette
> than what can be found in Dirk's book chapter. Basically, all the
> others implement custom as/wrap for third part classes to SEXP
> fundamental types.
> 
> Perhaps, I didn't state the question clearly... : Given my own class
> exposed through Modules, how to retrieve it from the C++ side?

(Supposing I understood well your question...)

For this part of problem, you have to declare your classes in your
original package (say mypack) in a separate file say
mypack/inst/include/mypack.h
Then in a package which will extend it (say otherpack) you will
delcare in its DESCRIPTION
LinkingTo: mypack

It will allow you to put in your otherpack/src/*.cpp files
#include  So you'll be able to use/extend mypack classes.


> How to
> allow perspective users to extend a package taking exposed class and
> defining new Rccp functions that uses those exposed class as argument
> or return?

As to taking objects instantiated from your classes as arguments in R
session,
it's indeed a matter of custom as()/wrap() custom definition.
Or you can use XPtr hook to passe just pointers to your objects
and de-referencing them appropriately in the Rcpp code.

Best,
Serguei.

> 
> My main difficulty is that! I will appreciate your points over that?
> 
> Cheers,
> FH
> 
> -Original Message-
> From: Ralf Stubner 
> To: rcpp-devel@lists.r-forge.r-project.org
> Subject: Re: [Rcpp-devel] Modules + Attributes for extensions
> Date: Tue, 6 Mar 2018 14:41:32 +0100
> 
> On 06.03.2018 00:08, fernandohtol...@gmail.com wrote:
> > I
> > will also appreciate if someone point me an R package in which
> > custom
> > as/wrap are defined!
> 
> The reference: http://dirk.eddelbuettel.com/code/rcpp/Rcpp-extending.
> pd
> f
> Also very useful:
> http://gallery.rcpp.org/articles/custom-templated-wrap-and-as-for-sea
> mi
> ngless-interfaces/
> 
> Simple example: RcppBDT
> More complex examples: RcppArmadillo, RcppEigen, RcppGSL
> 
> Greetings
> Ralf
> 
> ___
> Rcpp-devel mailing list
> Rcpp-devel@lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-dev
> el
> ___
> Rcpp-devel mailing list
> Rcpp-devel@lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-dev
> el
> 


___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

[Rcpp-devel] Rcpp 0.12.16

2018-03-08 Thread Dirk Eddelbuettel

I uploaded Rcpp to CRAN earlier today --- but CRAN also sent a note that they
will have a forced outage due to a power system shutdown so this probably
won't come out as an updated package before some time next week.

But I also I put it into the Rcpp drat repo from where you can install the 
usual way,
if you're so inclined:

  drat:::add("RcppCore")
  install.packages("Rcpp", type="source")

or if you don't have drat installed, directly via

  install.packages("Rcpp", type="source", 
repo="https://RcppCore.github.io/drat;)

where type="source" is optional on Linux but mandatory for the OSs to not
have it look for binaries

More at https://rcppcore.github.io/drat/

Dirk

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel


Re: [Rcpp-devel] Strange error

2018-03-08 Thread Tim Keitt
Ha. That's simultaneously kinda funny and kinda painful. It was embedded
into an Rmd Rcpp chunk and I forgot the C++ entry point... sigh.

THK

http://www.keittlab.org/

On Thu, Mar 8, 2018 at 12:20 PM, Dirk Eddelbuettel  wrote:

>
> Tim,
>
> Three distinct errors:
>
> - no wrapping function, so sourceCpp() was the wrong paradigm
> - no inclusion of Rcpp.h so types unknown (agem)
> - wrong calling convention for runif(), cannot be empty.
>
> The following compiles, it may still be nonsensical.
>
> Dirk
>
>
> // [[Rcpp::depends(BH)]]
> // [[Rcpp::plugins(cpp11)]]
>
> #include 
>
> #include 
> #include 
> #include 
>
> using key_type = boost::geometry::model::d2::point_xy;
> using range_type = std::vector;
>
> // [[Rcpp::export]]
> void foo() {
>   range_type data;
>   data.reserve(1e6);
>
>   for (int i = 0; i != 1e6; ++i)
> data.emplace_back(R::runif(0,1), R::runif(0,1));
> }
>
> --
> http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
>
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Re: [Rcpp-devel] Strange error

2018-03-08 Thread Dirk Eddelbuettel

Tim,

Three distinct errors:

- no wrapping function, so sourceCpp() was the wrong paradigm
- no inclusion of Rcpp.h so types unknown (agem)
- wrong calling convention for runif(), cannot be empty.

The following compiles, it may still be nonsensical.

Dirk


// [[Rcpp::depends(BH)]]
// [[Rcpp::plugins(cpp11)]]

#include 

#include 
#include 
#include 

using key_type = boost::geometry::model::d2::point_xy;
using range_type = std::vector;

// [[Rcpp::export]]
void foo() {
  range_type data;
  data.reserve(1e6);

  for (int i = 0; i != 1e6; ++i)
data.emplace_back(R::runif(0,1), R::runif(0,1));
}

-- 
http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel


[Rcpp-devel] Strange error

2018-03-08 Thread Tim Keitt
I must be going blind or something because I cannot see the error here.

sourceCpp(code = '
// [[Rcpp::depends(BH)]]
// [[Rcpp::plugins(cpp11)]]

#include 
#include 
#include 

using key_type = boost::geometry::model::d2::point_xy;
using range_type = std::vector;

range_type data;
data.reserve(1e6);

for (int i = 0; i != 1e6; ++i)
  data.emplace_back(R::runif(), R::runif());
')

I get:

filefc2f3edf6585.cpp:13:1: error: unknown type name 'data'
data.reserve(1e6);
^
filefc2f3edf6585.cpp:13:5: error: cannot use dot operator on a type
data.reserve(1e6);
^
filefc2f3edf6585.cpp:15:1: error: expected unqualified-id
for (int i = 0; i != 1e6; ++i)
^
3 errors generated.
make: *** [filefc2f3edf6585.o] Error 1

Must be something trivial I am not seeing. Anyone else see something I'm
doing wrong?

THK

http://www.keittlab.org/
___
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel