Hi Dirk, yes it would,
1) my_class::my_method delegates to ReferenceClass::my_method [c++ method exported] 2) ReferenceClass(R)::my_method callSuper() --> [ infinite recursion!!! ] 3) smoke + possible explosion + ... random events from HR department or some benefits: 1) my_class::my_method delegates to ReferenceClass::my_method 2) ReferenceClass(R)::my_method ( works hard to solve some problem ) 3) abstract class with R reference class impl This is still based on the assumption that one can call a ReferenceClass method... if so this may open up a door to design interfaces in c++ and implementing them in R. With some limitations: my_class::my_method()=0; would need some stub generated and linked to call R reference class. (if that possible at all) I don't not have the necessary experience to oversee all the implications of a feature/bug outlined; but find it an appealing thought to able to extend a c++ class in R where c++ runtime has the ability to call the R implementation. [c++ Interface_a] ---> [c++ Abstract_ab ] ---> Rcpp_export -> | R c_runtime | -> [ RrefClass impl_ab] [c++ Interface_b] --| [ some infrastructure to process/direct data flow ] --------------------------------> [ set of implementations to choose from ] steve On Fri, Mar 1, 2013 at 6:35 PM, Dirk Eddelbuettel <[email protected]> wrote: > > 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 <[email protected]> > 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 | [email protected] | http://dirk.eddelbuettel.com > | > | > | > | > | ---------------------------------------------------------------------- > | _______________________________________________ > | Rcpp-devel mailing list > | [email protected] > | https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > -- > Dirk Eddelbuettel | [email protected] | http://dirk.eddelbuettel.com >
_______________________________________________ Rcpp-devel mailing list [email protected] https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
