annotate R/rdyncall/R/dynfind.R @ 66:7a61dd082341 default tip

pydc: - fix double free triggered by capsule destructor, when freeing pydc and callback objects, manually
author Tassilo Philipp
date Fri, 24 May 2024 18:16:29 +0200 (13 months ago)
parents 0cfcc391201f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 dynfind1 <- if (.Platform$OS.type == "windows") {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 function(name, ...) {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 handle <- .dynload(paste("lib",name,sep=""),...)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 if (!is.null(handle)) return(handle)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 .dynload(name,...)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 } else {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 if ( Sys.info()[["sysname"]] == "Darwin" ) {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 function(name, ...) {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 handle <- .dynload(paste(name,".framework/",name,sep=""),...)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 if (!is.null(handle)) return(handle)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 .dynload(paste("lib",name,".dylib",sep=""),...)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 } else {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 function(name, ...) {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 handle <- .dynload(paste("lib",name,".so",sep=""),...)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 if (!is.null(handle)) return(handle)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 handle <- .dynload(paste("lib",name,sep=""),...)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 if (!is.null(handle)) return(handle)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 .dynload(paste(name,sep=""),...) # needed by Solaris to lookup 'R'.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 dynfind <- function(libnames, auto.unload = TRUE) {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 for (libname in libnames) {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 handle <- dynfind1(libname, auto.unload)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 if (!is.null(handle)) return(handle)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32