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!"); } }