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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
import java.util.*;
public class Test {
int myint = 123;
double mydouble = 3.14159265;
String mystring = "my string";
static String ourstring = "our string";
static boolean embedded = false;
int array[] = {1,2,3};
Vector v;
public Test() {
v = new Vector();
v.addElement("Hello");
printfields();
Vector x = perlTryVec(v);
x.addElement("World");
Vector y = perlTryVec(x);
if (!embedded) System.err.println("Thank you, perlTryVec!");
if (!embedded) System.err.println(retchars());
if (!embedded) System.err.println("Thank you, retchars!");
String[] s = retstrings();
if (!embedded) System.err.println(s[0] + s[1] + s[2] + s[3]);
if (!embedded) System.err.println("Thank you, retstrings!");
Object[] o = retobjects(v, x, y);
if (!embedded) System.err.println(o[1]);
if (!embedded) System.err.println(o[3]);
if (!embedded) System.err.println(o[4]);
if (!embedded) System.err.println("Thank you, retobjects!");
passarray(s);
if (!embedded) System.err.println(s[0] + s[1] + s[2] + s[3]);
if (!embedded) System.err.println("Thank you, passarray!");
printfields();
if (!embedded) System.err.println("Thank you, printfields!");
setfields();
if (!embedded) System.err.println("Thank you, setfields!");
printfields();
if (!embedded) System.err.println("Thank you, printfields!");
}
perl Vector perlTryVec(Vector v) throws RuntimeException {{
print "v is: $v\n";
print "v isa: ", ref $v,"\n";
print "In perlTryVec() - Vector size is: ", $v->size([],['int']), "\n";
@foo = times;
$size ||= getmeth('size', [], ['int']);
for ($i = 10000; $i; --$i) {
$x = $v->$size();
}
@bar = times;
printf "%5.2fu %5.2fs\n", $bar[0] - $foo[0], $bar[1] - $foo[1];
return $v;
}}
perl char[] retchars() {{
print "In retchars()\n";
return [65,66,67];
}}
perl String[] retstrings() {{
print "In retstrings()\n";
return [1,2,3,"many"];
}}
perl Object[] retobjects(Vector v, Vector x, Vector y) {{
print "In retstrings()\n";
return [$v, $x, $y, "this is only a test", 123];
}}
perl void passarray(String[] s) {{
print "In passarray()\n";
print "s = $s\n";
$t = GetObjectArrayElement($s,3);
print "t = $t\n";
$x = GetStringUTFChars($t);
print "$x\n";
$t = SetObjectArrayElement($s,3,NewStringUTF("infinity"));
}}
perl void printfields() {{
$| = 1;
eval {print $self->v->toString____s(), "\n";};
print $@ if $@;
print $self->myint, "\n";
print $self->mydouble, "\n";
print $self->mystring, "\n";
print JPL::Test->ourstring, "\n";
@nums = GetIntArrayElements($self->array());
print "@nums\n";
@nums = unpack("i*", scalar GetIntArrayElements($self->array()));
print "@nums\n";
}}
perl void setfields() {{
$self->myint(321);
$self->mydouble(2.7182918);
$self->mystring("MY STRING!!!");
JPL::Test->ourstring("OUR STRING!!!");
}}
public static void main(String[] argv) {
if (java.lang.reflect.Array.getLength(argv) > 0 &&
argv[0].equals("-nothanks"))
embedded = true;
Test f = new Test();
if (!embedded) System.err.println("Thank you, Test!");
}
}
|