annotate R/rdyncall/demo/qsort.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
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 dynbind(c("msvcrt","c","c.so.6"), "qsort(piip)v;")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 cb <- new.callback("pp)i",function(px,py){
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 x <- .unpack(px, 0, "d")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4 y <- .unpack(py, 0, "d")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 if (x > y) return(1) else if (x == y) return(0) else return(-1)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 })
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 x <- rnorm(100)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 qsort(x,length(x),8,cb)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10