Oh, it's just a calling convention thing. You may change it into windll and the effect is about the same. It doesn't use ole automation.
BTW, I added support for other types. Currently it supports: boolean, literal(with proper formatting, integer, and floats. I could put it into a wiki page or so if anyone wants it. On Sun, Nov 10, 2013 at 3:20 PM, bill lam <[email protected]> wrote: > I don't know python, but I guess you are using oleautomation > instead of calling j.dll thru C interface. > > Вс, 10 ноя 2013, June Kim (김창준) писал(а): > > It's been more than 3 years and I don't know if anyone has followed the > > path since. > > > > Today I had to retrieve J integer arrays from Python and I quickly wrote > a > > python script for doing that. It changes the J array into python lists(of > > lists) with its shape. For example, i.3 3 is [[0, 1, 2], [3, 4, 5], [6, > 7, > > 8]] in Python. > > > > import operator > > from ctypes import * > > > > IDEN="jcmd_python" > > > > def mulall(arr): > > return reduce(operator.mul,arr,1) > > def run_jcmd(js): > > oledll.j.JDo(p,IDEN+'=:'+js) > > def get_result(jdll,variable=IDEN): > > pi=[pointer(c_int()) for _ in xrange(4)] > > oledll.j.JGetM(jdll,variable,*pi) #datatype,rank, *shape, *value > > type=pi[0].contents.value > > if type==0: #error > > return None,None,None,None > > rank=pi[1].contents.value > > shape=list((c_int*rank).from_address(pi[2].contents.value)) > > flat_size=mulall(shape) > > data=list((c_int*flat_size).from_address(pi[3].contents.value)) > > return type,rank,shape,resize(shape,data) > > def resize(shap,dat): > > shap=shap[:] > > flat_size=mulall(shap) > > while len(shap)>1: > > shd=[] > > start=0 > > last_size=shap.pop() > > while start<flat_size: > > shd.append(dat[start:start+last_size]) > > start+=last_size > > flat_size=len(shd) > > dat=shd > > else: > > shd=dat > > return shd > > > > p=oledll.j.JInit() > > run_jcmd("i. 3 3") > > type,rank,shape,data=get_result(p) #returns the last result > > print shape,data > > run_jcmd("abc=: i: 5") > > print get_result(p,"abc") > > > > > > > > On Thu, Apr 29, 2010 at 12:43 AM, Richard Kubina <[email protected]> > wrote: > > > > > Thanks a lot, June! I will try to make some helper functions now and > see > > > if > > > the python community takes any notice. It may be exciting for some > folks > > > to > > > mesh Python lists and such with J (: > > > ---------------------------------------------------------------------- > > > For information about J forums see http://www.jsoftware.com/forums.htm > > > > > ---------------------------------------------------------------------- > > For information about J forums see http://www.jsoftware.com/forums.htm > > -- > regards, > ==================================================== > GPG key 1024D/4434BAB3 2008-08-24 > gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3 > gpg --keyserver subkeys.pgp.net --armor --export 4434BAB3 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
