Description Usage Arguments Details Value Note Author(s) See Also Examples
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.