1import java.util.*; 2 3public class Test { 4 5 int myint = 123; 6 double mydouble = 3.14159265; 7 String mystring = "my string"; 8 static String ourstring = "our string"; 9 static boolean embedded = false; 10 int array[] = {1,2,3}; 11 Vector v; 12 13 public Test() { 14 15 16 v = new Vector(); 17 v.addElement("Hello"); 18 printfields(); 19 Vector x = perlTryVec(v); 20 x.addElement("World"); 21 Vector y = perlTryVec(x); 22 if (!embedded) System.err.println("Thank you, perlTryVec!"); 23 24 if (!embedded) System.err.println(retchars()); 25 if (!embedded) System.err.println("Thank you, retchars!"); 26 27 String[] s = retstrings(); 28 if (!embedded) System.err.println(s[0] + s[1] + s[2] + s[3]); 29 if (!embedded) System.err.println("Thank you, retstrings!"); 30 31 Object[] o = retobjects(v, x, y); 32 if (!embedded) System.err.println(o[1]); 33 if (!embedded) System.err.println(o[3]); 34 if (!embedded) System.err.println(o[4]); 35 if (!embedded) System.err.println("Thank you, retobjects!"); 36 37 passarray(s); 38 39 if (!embedded) System.err.println(s[0] + s[1] + s[2] + s[3]); 40 if (!embedded) System.err.println("Thank you, passarray!"); 41 42 printfields(); 43 if (!embedded) System.err.println("Thank you, printfields!"); 44 setfields(); 45 if (!embedded) System.err.println("Thank you, setfields!"); 46 printfields(); 47 if (!embedded) System.err.println("Thank you, printfields!"); 48 } 49 50 perl Vector perlTryVec(Vector v) throws RuntimeException {{ 51 print "v is: $v\n"; 52 print "v isa: ", ref $v,"\n"; 53 54 print "In perlTryVec() - Vector size is: ", $v->size([],['int']), "\n"; 55 @foo = times; 56 $size ||= getmeth('size', [], ['int']); 57 for ($i = 10000; $i; --$i) { 58 $x = $v->$size(); 59 } 60 @bar = times; 61 printf "%5.2fu %5.2fs\n", $bar[0] - $foo[0], $bar[1] - $foo[1]; 62 return $v; 63 }} 64 65 perl char[] retchars() {{ 66 print "In retchars()\n"; 67 return [65,66,67]; 68 }} 69 70 perl String[] retstrings() {{ 71 print "In retstrings()\n"; 72 return [1,2,3,"many"]; 73 }} 74 75 perl Object[] retobjects(Vector v, Vector x, Vector y) {{ 76 print "In retstrings()\n"; 77 return [$v, $x, $y, "this is only a test", 123]; 78 }} 79 80 perl void passarray(String[] s) {{ 81 print "In passarray()\n"; 82 print "s = $s\n"; 83 $t = GetObjectArrayElement($s,3); 84 print "t = $t\n"; 85 $x = GetStringUTFChars($t); 86 print "$x\n"; 87 $t = SetObjectArrayElement($s,3,NewStringUTF("infinity")); 88 }} 89 90 perl void printfields() {{ 91 92 $| = 1; 93 eval {print $self->v->toString____s(), "\n";}; 94 print $@ if $@; 95 96 print $self->myint, "\n"; 97 print $self->mydouble, "\n"; 98 print $self->mystring, "\n"; 99 print JPL::Test->ourstring, "\n"; 100 101 @nums = GetIntArrayElements($self->array()); 102 print "@nums\n"; 103 104 @nums = unpack("i*", scalar GetIntArrayElements($self->array())); 105 print "@nums\n"; 106 }} 107 108 perl void setfields() {{ 109 $self->myint(321); 110 $self->mydouble(2.7182918); 111 $self->mystring("MY STRING!!!"); 112 JPL::Test->ourstring("OUR STRING!!!"); 113 }} 114 115 public static void main(String[] argv) { 116 if (java.lang.reflect.Array.getLength(argv) > 0 && 117 argv[0].equals("-nothanks")) 118 embedded = true; 119 Test f = new Test(); 120 if (!embedded) System.err.println("Thank you, Test!"); 121 } 122} 123