diff R/rdyncall/demo/callbacks.R @ 0:0cfcc391201f

initial from svn dyncall-1745
author Daniel Adler
date Thu, 19 Mar 2015 22:26:28 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/R/rdyncall/demo/callbacks.R	Thu Mar 19 22:26:28 2015 +0100
@@ -0,0 +1,27 @@
+# Package: rdyncall 
+# File: demo/callbacks.R
+# Description: Creating a callback and call it via .dyncall
+
+# The function to wrap:
+f <- function(x,y) x+y
+
+# Create the callback:
+cb <- new.callback("ii)i", f)
+
+# Call the callback
+r <- .dyncall(cb, "ii)i", 20, 3)
+r == 23
+
+# Recursive callback example:
+
+f <- function(x,y,f,i) 
+{
+  if (i > 1) .dyncall(f, "iipi)i", x,y,f,i-1)
+  x+y
+}
+
+cb <- new.callback("iipi)i", f)
+
+r <- .dyncall(cb, "iipi)i", 1,1,cb,100 )
+r == 2
+