June, it's a good idea to put usage/examples on wiki. +1 vote for wiki-put
On Sun, Nov 10, 2013 at 11:26 AM, June Kim (김창준) <[email protected]> wrote: > 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 > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
