annotate R/scratch/dynamic_loading.R @ 34:2682a627168c

- breaking changes: * restrict 'Z' conversions to immutable types * restrict 'p' to mutable types (and handles)
author Tassilo Philipp
date Sun, 12 Apr 2020 19:37:37 +0200
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 # GOAL:
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 # automatic unloading when all symbols from a library are free'ed.
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 #
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 #
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 #
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 # loading a shared library
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 # low-level R
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 x <- dyn.load("/lib/libc.so.6")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 handle <- x[["handle"]]
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 # high-level R in conjunction with R packages
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 library.dynam()
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 prot = library
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 R_MakeExternalPtr(addr, tag, prot)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21
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 x <- .dynload("/lib/libc.so.6")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 y <- .dynsym(x, "glBegin")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27