- allowing R package names with containing dosts ('.')
- allowing mulitple get accessors in R
This commit is contained in:
parent
dd3d04a2f2
commit
61c24e9cd1
1 changed files with 11 additions and 5 deletions
|
|
@ -1045,10 +1045,6 @@ int R::OutputMemberReferenceMethod(String *className, int isSet,
|
||||||
bool has_prev = false;
|
bool has_prev = false;
|
||||||
for(j = 0; j < numMems; j+=3) {
|
for(j = 0; j < numMems; j+=3) {
|
||||||
String *item = Getitem(el, j);
|
String *item = Getitem(el, j);
|
||||||
if (Getattr(itemList, item))
|
|
||||||
continue;
|
|
||||||
Setattr(itemList, item, "1");
|
|
||||||
|
|
||||||
String *dup = Getitem(el, j + 1);
|
String *dup = Getitem(el, j + 1);
|
||||||
char *ptr = Char(dup);
|
char *ptr = Char(dup);
|
||||||
ptr = &ptr[Len(dup) - 3];
|
ptr = &ptr[Len(dup) - 3];
|
||||||
|
|
@ -1056,6 +1052,10 @@ int R::OutputMemberReferenceMethod(String *className, int isSet,
|
||||||
if (!strcmp(ptr, "get"))
|
if (!strcmp(ptr, "get"))
|
||||||
varaccessor++;
|
varaccessor++;
|
||||||
|
|
||||||
|
if (Getattr(itemList, item))
|
||||||
|
continue;
|
||||||
|
Setattr(itemList, item, "1");
|
||||||
|
|
||||||
String *pitem;
|
String *pitem;
|
||||||
if (!Strcmp(item, "operator ()")) {
|
if (!Strcmp(item, "operator ()")) {
|
||||||
pitem = NewString("call");
|
pitem = NewString("call");
|
||||||
|
|
@ -2270,7 +2270,13 @@ int R::outputRegistrationRoutines(File *out) {
|
||||||
if(!noInitializationCode) {
|
if(!noInitializationCode) {
|
||||||
if (inCPlusMode)
|
if (inCPlusMode)
|
||||||
Printv(out, "extern \"C\" ", NIL);
|
Printv(out, "extern \"C\" ", NIL);
|
||||||
Printf(out, "SWIGEXPORT void R_init_%s(DllInfo *dll) {\n", Rpackage);
|
{ /* R allows pckage names to have '.' in the name, which is not allowed in C++ var names
|
||||||
|
we simply replace all occurrences of '.' with '_' to construct the var name */
|
||||||
|
String * Rpackage_sane = Copy(Rpackage);
|
||||||
|
Replace(Rpackage_sane, ".", "_", DOH_REPLACE_ANY);
|
||||||
|
Printf(out, "SWIGEXPORT void R_init_%s(DllInfo *dll) {\n", Rpackage_sane);
|
||||||
|
Delete(Rpackage_sane);
|
||||||
|
}
|
||||||
Printf(out, "%sR_registerRoutines(dll, NULL, CallEntries, NULL, NULL);\n", tab4);
|
Printf(out, "%sR_registerRoutines(dll, NULL, CallEntries, NULL, NULL);\n", tab4);
|
||||||
if(Len(s_init_routine)) {
|
if(Len(s_init_routine)) {
|
||||||
Printf(out, "\n%s\n", s_init_routine);
|
Printf(out, "\n%s\n", s_init_routine);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue