-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjcastToArray.Rd
More file actions
69 lines (67 loc) · 2.62 KB
/
jcastToArray.Rd
File metadata and controls
69 lines (67 loc) · 2.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
\name{jcastToArray}
\alias{.jcastToArray}
\title{
Ensures that a given object is an array reference
}
\description{
\code{.jcastToArray} takes a Java object reference of any kind and
returns Java array reference if the given object is a reference to an
array.
}
\usage{
.jcastToArray(obj, signature=NULL, class="", quiet=FALSE)
}
\arguments{
\item{obj}{Java object reference to cast or a scalar vector}
\item{signature}{array signature in JNI notation (e.g. \code{"[I"} for
an array of integers). If set to \code{NULL} (the default),
the signature is automatically determined from the object's class.}
\item{class}{force the result to pose as a particular Java
class. This has the same effect as using \code{\link{.jcast}} on the
result and is provided for convenience only.}
\item{quiet}{if set to \code{TRUE}, no failures are reported and the
original object is returned unmodified.}
}
\value{
Returns a Java array reference (\code{jarrayRef}) on success. If
\code{quiet} is \code{TRUE} then the result can also be the original
object in the case of failure.
}
\details{
Sometimes a result of a method is by definition of the class
\code{java.lang.Object}, but the actual referenced object may be an
array. In that case the method returns a Java object reference instead
of an array reference. In order to obtain an array reference, it is
necessary to cast such an object to an array reference - this is done
using the above \code{.jcastToArray} function.
The input is an object reference that points to an array. Usually the
signature should be left at \code{NULL} such that it is determined
from the object's class. This is also a check, because if the object's
class is not an array, then the functions fails either with an error
(when \code{quiet=FALSE}) or by returning the original object (when
\code{quiet=TRUE}). If the signature is set to anything else, it is
not verified and the array reference is always created, even if it may
be invalid and unusable.
For convenience \code{.jcastToArray} also accepts non-references in
which case it simply calls \code{\link{.jarray}}, ignoring all other
parameters.
}
\examples{
\dontrun{
a <- .jarray(1:10)
print(a)
# let's create an array containing the array
aa <- .jarray(list(a))
print(aa)
ba <- .jevalArray(aa)[[1]]
# it is NOT the inverse, because .jarray works on a list of objects
print(ba)
# so we need to cast the object into an array
b <- .jcastToArray(ba)
# only now a and b are the same array reference
print(b)
# for convenience .jcastToArray behaves like .jarray for non-references
print(.jcastToArray(1:10/2))
}
}
\keyword{interface}