Mercurial > pub > dyncall > bindings
diff R/scratch/namespaces.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/scratch/namespaces.R Thu Mar 19 22:26:28 2015 +0100 @@ -0,0 +1,72 @@ + +makeNamespace <- function(name, version = NULL, lib = NULL) { + impenv <- new.env(parent = .BaseNamespaceEnv, hash = TRUE) + attr(impenv, "name") <- paste("imports", name, sep = ":") + env <- new.env(parent = impenv, hash = TRUE) + name <- as.character(as.name(name)) + version <- as.character(version) + info <- new.env(hash = TRUE, parent = baseenv()) + assign(".__NAMESPACE__.", info, envir = env) + assign("spec", c(name = name, version = version), + envir = info) + setNamespaceInfo(env, "exports", new.env(hash = TRUE, + parent = baseenv())) + setNamespaceInfo(env, "imports", list(base = TRUE)) + setNamespaceInfo(env, "path", file.path(lib, name)) + setNamespaceInfo(env, "dynlibs", NULL) + setNamespaceInfo(env, "S3methods", matrix(NA_character_, + 0L, 3L)) + assign(".__S3MethodsTable__.", new.env(hash = TRUE, + parent = baseenv()), envir = env) + .Internal(registerNamespace(name, env)) + env +} + +install <- function() +{ + name <- "GL" + ns <- makeNamespace(name) + info <- ns$.__NAMESPACE__. + # info$DLLs <- dyn.load("") + with(ns, + { + dynbind("GL","glBegin()v;") + .onUnload <- function() + { + .dynunload(.lib) + } + } + ) + # ns$.packageName <- "stdio" + namespaceExport( ns, ls(ns) ) + # attach(ns, name="dynport:GL") + attachNamespace(ns) +} +install() + + +unloadNamespace("stdio") + + +# retrieve list of shared libraries loaded + +library.dynam() +.dynLibs() +# load a specified library + +.sys.lib.loc <- c("/opt/local/lib", "/opt/lib", "/usr/local/lib", "/usr/lib") + +findLibPath <- function(name, lib.loc=.sys.lib.loc) +{ + for(i in lib.loc) { + trypath <- file.path(i, paste("lib", name,.Platform$dynlib.ext,sep="") ) + if ( file.exists(trypath) ) return(trypath) + } + NULL +} + +tests <- c("GL","SDL","expat") + +sapply( tests, findLibPath ) + +