utilities {inline} | R Documentation |
moveDLL
moves the DLL used by a compiled function to a user defined
location.
writeCFunc
saves a CFunc
object after the DLL has been moved to
the desired location using moveDLL
.
readCFunc
reads a CFunc
object that has been saved using
writeCFunc
.
The print
and code
methods respectively print the entire
object or only the code parts.
moveDLL(x, ...) ## S4 method for signature 'CFunc' moveDLL(x, name, directory, unload = FALSE, overwrite = FALSE, verbose = FALSE) writeCFunc(x, file) readCFunc(file) ## S4 method for signature 'CFunc' print(x) ## S4 method for signature 'CFuncList' print(x) ## S4 method for signature 'CFunc' code(x, linenumbers = TRUE) ## S4 method for signature 'CFuncList' code(x, linenumbers = TRUE)
x |
A |
name |
The base of the file name that the DLL should be moved to. The file name extension will depend on the operating system used |
directory |
The directory that the DLL should be written to |
unload |
In case the new path constructed from |
overwrite |
In case there is a file at the new path constructed from
|
verbose |
Should we print a message stating where the DLL was copied if the operation was successful? |
file |
The file path for writing and reading the object generated by
|
linenumbers |
If |
... |
May be used in future methods |
If you move the DLL to a user defined location with moveDLL
, this will
keep an on-disk copy of the DLL which will prevent it from being lost at
session termination - unless written to the session tempdir
.
Saving and reloading the CFunc
object with standard tools like
save
or saveRDS
will still loose the pointer to
the DLL. However, when the DLL has been moved using moveDLL
,
CFunc
objects can be saved by writeCFunc
and restored by
readCFunc
.
Function readDynLib
returns a CFunc
object.
Function writeDynLib
returns the name of the .CFunc
file that
was created.
The code of a CFunc
or CFuncList
object x
can be extracted
(rather than printed), using:
x@code
.
To write the code to a file (here called "fn"
), without the
new-line character "\n"
:
write (strsplit(x, "\n")[[1]], file = "fn")
Karline Soetaert and Johannes Ranke
x <- as.numeric(1:10) n <- as.integer(10) code <- " integer i do 1 i=1, n(1) 1 x(i) = x(i)**3 " cubefn <- cfunction(signature(n="integer", x="numeric"), code, convention=".Fortran") code(cubefn) cubefn(n, x)$x ## Not run: # The following code is exempted from the automated tests of example code, as # it writes to the users home directory. # The following writes the DLL, e.g. cubefn.so on Linux/Unix or cubefn.dll # on Windows moveDLL(cubefn, name = "cubefn", directory = "~") path <- file.path("~", "cubefn.rda") writeCFunc(cubefn, path) rm(cubefn) # Now you can start a fresh R session and load the function library(inline) path <- file.path("~", "cubefn.rda") cfn <- readCFunc(path) cfn(3, 1:3)$x ## End(Not run)