carfield.com.hk PyUtil.java 2001-12-26T16:00:00Z 2001-12-26T16:00:00Z <br/><TEXTAREA name="code" class="java" rows="16" cols="100">//: com:bruceeckel:python:PyUtil.java // PythonInterpreter utilities package com.bruceeckel.python; import org.python.util.PythonInterpreter; import org.python.core.*; import java.util.*; public class PyUtil { /** Extract a Python tuple or array into a Java List (which can be converted into other kinds of lists and sets inside Java). @param interp The Python interpreter object @param pyName The id of the python list object */ public static List toList(PythonInterpreter interp, String pyName){ return new ArrayList(Arrays.asList( (Object[])interp.get( pyName, Object[].class))); } /** Extract a Python dictionary into a Java Map @param interp The Python interpreter object @param pyName The id of the python dictionary */ public static Map toMap(PythonInterpreter interp, String pyName){ PyList pa = ((PyDictionary)interp.get( pyName)).items(); Map map = new HashMap(); while(pa.__len__() != 0) { PyTuple po = (PyTuple)pa.pop(); Object first = po.__finditem__(0) .__tojava__(Object.class); Object second = po.__finditem__(1) .__tojava__(Object.class); map.put(first, second); } return map; } /** Turn a Java Map into a PyDictionary, suitable for placing into a PythonInterpreter @param map The Java Map object */ public static PyDictionary toPyDictionary(Map map) { Map m = new HashMap(); Iterator it = map.entrySet().iterator(); while(it.hasNext()) { Map.Entry e = (Map.Entry)it.next(); m.put(Py.java2py(e.getKey()), Py.java2py(e.getValue())); } // PyDictionary constructor wants a Hashtable: return new PyDictionary(new Hashtable(m)); } } ///:~ </TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2001-12-26T16:00:00Z Test.java 2001-12-26T16:00:00Z 2001-12-26T16:00:00Z <br/><TEXTAREA name="code" class="java" rows="16" cols="100">//: com:bruceeckel:python:Test.java package com.bruceeckel.python; import org.python.util.PythonInterpreter; import java.util.*; import com.bruceeckel.test.*; public class Test extends UnitTest { PythonInterpreter pi = new PythonInterpreter(); public void test1() { pi.exec(&quot;tup=('fee','fi','fo','fum','fi')&quot;); List lst = PyUtil.toList(pi, &quot;tup&quot;); System.out.println(lst); System.out.println(new HashSet(lst)); } public void test2() { pi.exec(&quot;ints=[1,3,5,7,9,11,13,17,19]&quot;); List lst = PyUtil.toList(pi, &quot;ints&quot;); System.out.println(lst); } public void test3() { pi.exec(&quot;dict = { 1 : 'a', 3 : 'b', &quot; + &quot;5 : 'c', 9 : 'd', 11 : 'e'}&quot;); Map mp = PyUtil.toMap(pi, &quot;dict&quot;); System.out.println(mp); } public void test4() { Map m = new HashMap(); m.put(&quot;twas&quot;, new Integer(11)); m.put(&quot;brillig&quot;, new Integer(27)); m.put(&quot;and&quot;, new Integer(47)); m.put(&quot;the&quot;, new Integer(42)); m.put(&quot;slithy&quot;, new Integer(33)); m.put(&quot;toves&quot;, new Integer(55)); System.out.println(m); pi.set(&quot;m&quot;, PyUtil.toPyDictionary(m)); pi.exec(&quot;print m&quot;); pi.exec(&quot;print m['slithy']&quot;); } public static void main(String args[]) { Test t = new Test(); t.test1(); t.test2(); t.test3(); t.test4(); } } ///:~ </TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2001-12-26T16:00:00Z makefile 2001-12-26T16:00:00Z 2001-12-26T16:00:00Z <br/><TEXTAREA name="code" class="" rows="16" cols="100"># From Thinking in Patterns (with Java) by Bruce Eckel # At http://www.BruceEckel.com # (c)2001 Bruce Eckel # Copyright notice in Copyright.txt # Automatically-generated MAKEFILE # For examples in directory .\com\bruceeckel\python # using the JDK 1.3 compiler # Invoke with: make HOME := ../../../ ifndef MAKECMDGOALS MAKECMDGOALS := javac endif # Command.com is too weak to build this under Windows NT/2000: ifeq ($(OS),Windows_NT) COMSPEC=$(SYSTEMROOT)\system32\cmd.exe endif ifneq ($(MAKECMDGOALS),clean) include $(HOME)/$(MAKECMDGOALS).mac endif .SUFFIXES : .class .java .java.class : $(JVC) $(JVCFLAGS) $&lt; javac: \ PyUtil.class \ Test.class jikes: \ PyUtil.class \ Test.class clean: ifeq ($(notdir $(SHELL)),COMMAND.COM) del *.class else rm -f *.class endif PyUtil.class: PyUtil.java Test.class: Test.java $(JVC) $(JVCFLAGS) $&lt; java com.bruceeckel.test.RunUnitTests com.bruceeckel.python.Test </TEXTAREA><br><br/><script type="text/javascript"><!--google_ad_client = "pub-9426659565807829";google_ad_slot = "9359905831";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script> 2001-12-26T16:00:00Z