Skip to content

Commit 684e288

Browse files
committed
fixed rename argument to exposeClass
1 parent 39aa005 commit 684e288

File tree

2 files changed

+18
-11
lines changed

2 files changed

+18
-11
lines changed

R/exposeClass.R

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,16 +136,17 @@ exposeClass <- function(class, constructors, fields, methods,
136136
}
137137
writeLines("", mcon)
138138
flds <- .specifyItems(fields)
139-
nm <- names(flds)
139+
nm <- fnm <- names(flds)
140140
rdOnly <- nm %in% readOnly
141141
macros <- ifelse(rdOnly, ".field_readonly", ".field")
142142
test <- nm %in% rename
143143
if(any(test))
144-
nm[test] <- newnames[match(nm[test], newnames)]
144+
nm[test] <- newnames[match(nm[test], rename)]
145145
ns <- NULL
146146
for(i in seq_along(nm)) {
147147
typei <- flds[[i]]
148-
nmi <- fldi <- nm[[i]]
148+
fldi <- fnm[i]
149+
nmi <- nm[[i]]
149150
macroi <- macros[[i]]
150151
if(!length(typei) || identical(typei, "")) ## direct field
151152
writeLines(sprintf(" %s(\"%s\", &%s::%s)",
@@ -171,7 +172,7 @@ exposeClass <- function(class, constructors, fields, methods,
171172
nm <- mds <- names(sigs)
172173
test <- nm %in% rename
173174
if(any(test))
174-
nm[test] <- newnames[match(nm[test], newnames)]
175+
nm[test] <- newnames[match(nm[test], rename)]
175176
for(i in seq_along(nm)) {
176177
sigi <- sigs[[i]]
177178
nmi <- nm[[i]]

inst/unitTests/runit.exposeClass.R

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@ if (.runThisTest) {
3434
#define foo_h 1
3535
// class to set/get double
3636
class foo {
37-
private:
38-
double x;
3937
public:
38+
double x;
4039
double get_x() {return x;}
4140
void set_x(double _x) {x = _x; return;}
4241
foo(double _x) {set_x(_x);}
@@ -54,10 +53,11 @@ class foo {
5453
## check that result of exposeClass compiles and runs properly
5554
exposeClass(class = "fooR",
5655
constructors = list("double"),
57-
fields = character(),
56+
fields = "x",
5857
methods = c("get_x", "set_x"),
5958
header = '#include "foo.h"',
6059
CppClass = "foo",
60+
rename = c(y = "x", get_y = "get_x", set_y = "set_x"),
6161
file = file.path(src_path, "fooModule.cpp"),
6262
Rfile = file.path(R_path, "fooClass.R"))
6363
compileAttributes(pkg_path)
@@ -86,11 +86,17 @@ class foo {
8686
checkTrue( exists("bar", envir = env, inherits = FALSE),
8787
"module object successfully instantiated" )
8888
gs <- replicate(n = 10, {
89-
x <- rnorm(1)
90-
bar$set_x(x)
91-
bar$get_x() - x
89+
y <- rnorm(1)
90+
bar$set_y(y)
91+
bar$get_y() - y
92+
})
93+
checkTrue( all(gs == 0), "renamed methods function as expected" )
94+
gs <- replicate(n = 10, {
95+
y <- rnorm(1)
96+
bar$set_y(y)
97+
bar$y - y
9298
})
93-
checkTrue( all(gs == 0), "object methods function as expected" )
99+
checkTrue( all(gs == 0), "renamed direct field functions as expected" )
94100

95101
}
96102

0 commit comments

Comments
 (0)