Mercurial > pub > dyncall > bindings
diff R/rdyncall/R/dynfind.R @ 0:0cfcc391201f
initial from svn dyncall-1745
author | Daniel Adler |
---|---|
date | Thu, 19 Mar 2015 22:26:28 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/R/rdyncall/R/dynfind.R Thu Mar 19 22:26:28 2015 +0100 @@ -0,0 +1,32 @@ + +dynfind1 <- if (.Platform$OS.type == "windows") { + function(name, ...) { + handle <- .dynload(paste("lib",name,sep=""),...) + if (!is.null(handle)) return(handle) + .dynload(name,...) + } +} else { + if ( Sys.info()[["sysname"]] == "Darwin" ) { + function(name, ...) { + handle <- .dynload(paste(name,".framework/",name,sep=""),...) + if (!is.null(handle)) return(handle) + .dynload(paste("lib",name,".dylib",sep=""),...) + } + } else { + function(name, ...) { + handle <- .dynload(paste("lib",name,".so",sep=""),...) + if (!is.null(handle)) return(handle) + handle <- .dynload(paste("lib",name,sep=""),...) + if (!is.null(handle)) return(handle) + .dynload(paste(name,sep=""),...) # needed by Solaris to lookup 'R'. + } + } +} + +dynfind <- function(libnames, auto.unload = TRUE) { + for (libname in libnames) { + handle <- dynfind1(libname, auto.unload) + if (!is.null(handle)) return(handle) + } +} +