[Rd] serialization for external pointers
Romain Francois
romain at r-enthusiasts.com
Sat Nov 16 15:12:22 CET 2013
Le 16/11/2013 14:30, Romain Francois a écrit :
> Hello,
>
> Are there any recipe to handle serialization / deserialization of
> external pointers.
>
> I'm thinking about something similar in spirit to the way we handle
> finalization of external pointers.
>
> Currently, if we create an external pointer, save the session, quit R,
> then load the session, we get a null pointer.
>
> One way I'm thinking of is to have an environment in the "protected"
> part of the xp, then have an active binding there, since apparently
> active bindings:
> - are "get" during serialization
> - lose their active ness when reloaded:
This will not work. Apparently the active feature is kept on other
environments:
$ R
[...]
> f <- local( {
+ x <- 1
+ function(v) {
+ if (missing(v))
+ cat("get\n")
+ else {
+ cat("set\n")
+ x <<- v
+ }
+ x
+ }
+ })
> makeActiveBinding("fred", f, .GlobalEnv)
> bindingIsActive("fred", .GlobalEnv)
[1] TRUE
>
> e <- new.env()
> makeActiveBinding("fred", f, e)
> bindingIsActive("fred", e)
[1] TRUE
>
> q()
Save workspace image? [y/n/c]: y
get
get
Then:
$ R
[...]
> e
<environment: 0x104c56f78>
> bindingIsActive("fred", .GlobalEnv)
[1] FALSE
> bindingIsActive("fred", e)
[1] TRUE
Is this the expected behavior ?
--
Romain Francois
Professional R Enthusiast
+33(0) 6 28 91 30 30
More information about the R-devel
mailing list