[Rcpp-devel] reference classes in C++ :is it possible?

Dirk Eddelbuettel edd at debian.org
Sat Mar 2 00:35:37 CET 2013


Hi Steven,

On 1 March 2013 at 14:34, Steven Varga wrote:
| 
| Hello
|  
| First thanks Dirk for the quick reply and the hint; Mr.  John Chamber's
| implementation is great! gone through the documentation and followed his
| instructions. Worked well.  Only one way though -- as you pointed out.
|  
| I was able to get the fields from the extended class; if someone could point
| into the direction how to get/execute methods of a Reference Class  then it may
| be doable??

Just making sure I understand: So you want to access part of a reference
class from C++? Wouldn't that violate the 'one way only view?

Dirk

|  
|  ..... c++ class ......
|     void set_reference( SEXP xptr_){
|         Rcpp::Reference ref(xptr_);
|         ref.field("some_field"));   // get the field data
|        
| // -------  this is not implemented, any hints?  -------- 
|         ref.method("some_method")( x, y);  // this would be nice to have
|     }
| ...... end .......
|  
| setRcppClass("World",
|     module="yada",
|     fields = list( some_field = "character"),
|     methods = list(
|           initialize = function(){
|                 some_field <<- "field value set"
|                 callSuper()                # call constructor
|                 set_reference( .self ) # pass 'this'
|           }
|      ),saveAs="genWorld"       
| )
| 
| On Thu, Feb 28, 2013 at 8:15 AM, Dirk Eddelbuettel <edd at debian.org> wrote:
| 
|     On 28 February 2013 at 04:44, Steven Varga wrote:
|     | I am trying to create an abstract pattern using R reference objects in
|     C++;
|     | anyone knows if this is possible/not possible? Where to look?
| 
|     I am not sure you can. The best (only ?) relevant documentation might be
|     John
|     Chamber's example of 'Rcpp Classes' (see help(setRcppClass) in R once Rcpp
|     is
|     loaded).
| 
|     And as I recall, he is pretty explicit that you can take a C++ class and
|     "extend" it for prototyping from the R side, but that you cannot access
|     those
|     extended parts from C++ as only R sees it.  I think you are hitting a
|     similar
|     constraint here.
| 
|     It would be nice if this worked but I am not quite sure that it can.
|    
|     Dirk
| 
|     --
|     Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
| 
| 
| 
| 
| ----------------------------------------------------------------------
| _______________________________________________
| Rcpp-devel mailing list
| Rcpp-devel at lists.r-forge.r-project.org
| https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com  


More information about the Rcpp-devel mailing list