Le 08/07/11 14:22, Jonas Rauch a écrit :
Hi Romain,
glad to hear that! Although I solved my original problem with the
workaround described, I would be happy to do some testing when you have
a solution.
Noted :-)
On Fri, Jul 8, 2011 at 2:00 PM, Romain Francois
<[email protected] <mailto:[email protected]>> wrote:
Le 07/07/11 15:18, Romain Francois a écrit :
Le 15/06/11 14:57, Douglas Bates a écrit :
On Wed, Jun 15, 2011 at 6:38 AM, Jonas
Rauch<jonas.rauch@googlemail.__com
<mailto:[email protected]>> wrote:
Hey again,
just to clarify: The final solution was to implement all
methods of the
derived class that are to be exposed to R and to call
the method of
the base
class explicitly:
class Bar : public Foo {
...
void doSomething() { Foo::doSomething() }
};
Yes, we've been there before. According to Romain, it would
be very
tricky to expose the method of the underlying class through the
derived class but it has been done in module bindings in
Python, on
which Romain patterned some of the Rcpp modules code.
It is just that I need time to steal that from Boost.Python.
This is one of the improvements I want to do in modules.
This is now on a background thread in my head so that I can have
dreams/nightmares about it. I failed a few times yesterday evening
and this morning, but I can feel I'm getting closer to at least know
how to do it.
On Wed, Jun 15, 2011 at 7:16 AM, Jonas
Rauch<jonas.rauch@googlemail.__com
<mailto:[email protected]>>
wrote:
Actually, having just the declaration like this
compiled fine but and
ended up in an unresolved symbol when loading the
library.
class Bar : public Foo {
...
void doSomething();
void Action() {
[some code here]
}
};
I actually had to implement doSomething and
explicitly call the
Method of
the Base class:
class Bar : public Foo {
...
void doSomething() { Foo::doSomething() }
void Action() {
[some code here]
}
};
Since I do not know the internals of Rcpp modules:
how hard would it
be to
include support for derived classes?
Best regards,
Jonas
On Tue, Jun 14, 2011 at 7:36 PM, Dirk
Eddelbuettel<[email protected] <mailto:[email protected]>>
wrote:
Hi Jonas,
On 14 June 2011 at 19:06, Jonas Rauch wrote:
| I am trying to write an R interface to a
library that uses derived
classes in
| the following manner:
|
| class Foo {
| ...
| virtual void Action() = 0;
| void doSomething() {
| Action();
| [do complicated stuff]
| }
| ...
| };
|
| class Bar : public Foo {
| ...
| void Action() {
| [some code here]
| }
| };
|
| class Baz : public Foo {
| ...
| void Action() {
| [some other code here]
| }
| };
|
| etc.
|
| Where the abstract class Foo defines an
interface and at the same
time
provides
| base functionality that can then be applied to
different
implementations of
| "Action".
|
| Is it possible to expose Bar::doSomething() to
R using Rcpp
modules? I
have
| tried different things and did not get it to work.
Nice C++ design. And it should work, but I think
your only choice
really
is
list all exposed functions, ie your need an
explicit mention of
Bar::doSomething as well as Baz::doSomething.
That way Rcpp Modules
doesn't
even know these are derived class. It just seens
two identifiers to
hook
up
against. As always, I may be missing parts of
the picture in which
case
Romain may come forward and correct the record....
|
| I would appreciate any help.
|
| Best regards,
| Jonas Rauch
|
|
------------------------------__------------------------------__----------
| _________________________________________________
| Rcpp-devel mailing list
| [email protected]__project.org
<mailto:[email protected]>
|
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>
--
Gauss once played himself in a zero-sum game and
won $50.
-- #11 at http://www.gaussfacts.com
_________________________________________________
Rcpp-devel mailing list
[email protected]__project.org
<mailto:[email protected]>
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>
_________________________________________________
Rcpp-devel mailing list
[email protected]__project.org
<mailto:[email protected]>
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>
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30 <tel:%2B33%280%29%206%2028%2091%2030%2030>
http://romainfrancois.blog.__free.fr
<http://romainfrancois.blog.free.fr>
http://romain-francois.com
|- http://bit.ly/lJoWbH : Montpellier Comédie Club - Juin 2011
|- http://bit.ly/kaSV6U : Stand up set at Up The Creek
`- http://bit.ly/hdKhCy : Rcpp article in JSS
_________________________________________________
Rcpp-devel mailing list
[email protected]__project.org
<mailto:[email protected]>
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>
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
http://romainfrancois.blog.free.fr
http://romain-francois.com
|- http://bit.ly/lJoWbH : Montpellier Comédie Club - Juin 2011
|- http://bit.ly/kaSV6U : Stand up set at Up The Creek
`- http://bit.ly/hdKhCy : Rcpp article in JSS
_______________________________________________
Rcpp-devel mailing list
[email protected]
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel