annotate R/rdyncall/R/utils_float.R @ 62:4a9f6c7c09c1 default tip

- fix inccorect overflow errors for int (and long on LLP64 systems)
author Tassilo Philipp
date Sat, 18 May 2024 15:33:54 +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 # Package: rdyncall
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 # File: R/utils_float.R
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 # Description: Support for C float vectors in R
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 as.floatraw <- function(x)
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 <- .Call("r_as_floatraw", as.numeric(x), PACKAGE="rdyncall")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 class(x) <- "floatraw"
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9 x
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 floatraw2numeric <- function(x)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13 {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 stopifnot(is.raw(x))
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 stopifnot(class(x) == "floatraw")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 stopifnot(length(x) >= 4)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 .Call("r_floatraw2numeric", x, PACKAGE="rdyncall")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 }
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 floatraw <- function(n)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 {
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 x <- raw(n*4)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 class(x) <- "floatraw"
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 x
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 }