0
|
1 # Package: rdyncall
|
|
2 # File: R/dyncall.R
|
|
3 # Description: R bindings for dynload library
|
|
4
|
|
5 .dynload <- function(libname, auto.unload=TRUE)
|
|
6 {
|
|
7 libname <- as.character(libname)
|
|
8 stopifnot( is.character(libname) )
|
|
9
|
|
10 libh <- .Call("dynload", libname, PACKAGE="rdyncall")
|
|
11 if (!is.null(libh)) {
|
|
12 attr(libh, "path") <- libname
|
|
13 attr(libh, "auto.unload") <- auto.unload
|
|
14 if (auto.unload) reg.finalizer(libh, .dynunload)
|
|
15 }
|
|
16 libh
|
|
17 }
|
|
18
|
|
19 .dynunload <- function(libhandle)
|
|
20 {
|
|
21 if (!is.externalptr(libhandle)) stop("libhandle argument must be of type 'externalptr'")
|
|
22 .Call("dynunload", libhandle, PACKAGE="rdyncall")
|
|
23 }
|
|
24
|
|
25 .dynsym <- function(libhandle, symname, protect.lib=TRUE)
|
|
26 {
|
|
27 if (!is.externalptr(libhandle)) stop("libh argument must be of type 'externalptr'")
|
|
28 .Call("dynsym", libhandle, as.character(symname), as.logical(protect.lib), PACKAGE="rdyncall")
|
|
29 }
|
|
30
|