William S Fulton
2016-05-07 19:01:27 UTC
Hi Joe
I added the template_default_arg_overload_extend test-case earlier
today which surprisingly failed in R. I had a look and narrowed it
down to a simple example:
struct XX {
void go_get(int a = 0) {}
};
This is due to this bad code in the .R file being generated:
vaccessors = c('go_get''go_get');
I don't quite follow, but shouldn't vaccessors hold the public member
variables that are being wrapped?
Seems that vaccessors is populated whenever any method ends in 'get'.
I think R::OutputMemberReferenceMethod is trying to detect the public
member variables by looking for methods ending in 'get'. Is that
right? If so we probably need a better way to detect member variables
in this part of the code. Something like saving the
processing_member_access_function flag for each method so that
R::OutputMemberReferenceMethod has access to it.
William
I added the template_default_arg_overload_extend test-case earlier
today which surprisingly failed in R. I had a look and narrowed it
down to a simple example:
struct XX {
void go_get(int a = 0) {}
};
This is due to this bad code in the .R file being generated:
vaccessors = c('go_get''go_get');
I don't quite follow, but shouldn't vaccessors hold the public member
variables that are being wrapped?
Seems that vaccessors is populated whenever any method ends in 'get'.
I think R::OutputMemberReferenceMethod is trying to detect the public
member variables by looking for methods ending in 'get'. Is that
right? If so we probably need a better way to detect member variables
in this part of the code. Something like saving the
processing_member_access_function flag for each method so that
R::OutputMemberReferenceMethod has access to it.
William