annotate R/rdyncall/demo/factorial.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
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 f <- function(i,fun)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 if (i > 1) i * .dyncall(fun,"ip)i",i-1,fun) else i
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 e <- new.env()
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 cb <- new.callback("ip)i", f,e)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 e <- NULL
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 f <- NULL
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 gc()
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 r <- .dyncall(cb,"ip)i",12,cb)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 r == factorial(12)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 cb <- NULL
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 gc()