view R/rdyncall/demo/callbacks.R @ 63:9b6cdffd30dd

- further fixes of inccorect overflow errors for int (and long on LLP64 systems) * prev commit had bugs * added overflow tests for also int, long, long long (for both, lp64 and llp64) - while at it, fixing a reference leak when not using python with utf8 caching
author Tassilo Philipp
date Sun, 19 May 2024 15:33:18 +0200
parents 0cfcc391201f
children
line wrap: on
line source

# 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