JIMS code
sploving
sploving1 at gmail.com
Sun Mar 28 13:38:26 CEST 2010
在 2010-03-20六的 19:35 +0100,Calixte.Denizet at ac-rennes.fr写道:
> > Hello,
>
> Hello
>
> >
> > I am adding Calixte as as C/C. He is the developer of JIMS and he will
> > be better than me to answer to you.
> >
> > Cheers,
> > Sylvestre
> >
> > Le samedi 20 mars 2010 à 18:40 +0800, sploving a écrit :
> > > Hello,
> > > I am learning the code of JIMS in order to know how to import Python
> > > in Scilab. I found Scilab use the mlist to wrap the Java class/ object.
> > > I want to use the mlist to wrap the Python object,will that be OK?
> > Yes
> >
> > > The implement of the JIMS is as the following: Scilab use the Scilab/C
> > > API to call C/C++, which could use the JNI to call java. When I read
> > the
> > > file "wrapInMlist.sci", I could not understand it very well. Could you
> > > explain how the Java object/methods/fields are wrapped in mlist ?
>
> For the moment (actual version on git master) :
> java class {
> field F
> method M
> }
>
> is converted into the mlist : obj = mlist(['_JObj' '_id' 'M' 'F'])
> * _id is the pos of the object in an array on the java side, for example _id=314
> * for the method, I create a scilab function in using deff : deff('y=tmpmacro(varargin)','y=wrapInMList(invoke(314,''M'',varargin))')
> invoke returns the id of the object returned by the invocation of the method M of the object 314. The function tmpmacro is affected to the field 'M' of the mlist
> * for the field, I create a function using deff too, the syntax in Scilab is obj.F(32) affects 32 to F on the java side and obj.F() gets the value of F.
I use the getfield to see what is the content of the keyword 'M' in
mlist. the result is: y=ans(varargin). what is that mean? why not
"y=M(varargin)"?
For example, when call "A.func(x, y)"( A is a mlist),I want to call the
C function "sci_func(A.id, x, y)" , then how to wrap the func in the
mlist? if A=mlist(['name,id,func'],"example",1,?), what is the content
of '?'
> I'm currently working to simplify the wrapping... (I don't push my work for the moment). I use the overloading of extraction to improve wrapping. The idea is :
> function y=%_JObj_e(name,M)
> if name is the name of a method of object M._id then
> deff('y=tmpmacro(varargin)','y=invoke(314,name,varargin)')
> y=tmpmacro
> return
> end
> if name is the name of a field then
> y=get field value...
> end
> endfunction
>
> Obj.foo(1,2,3) call the previous function with args foo and Obj, and it returns a function which takes 1,2,3 as arguments... I wrote %_JObj_e in C to have the best performances... I'll try to keep this last solution because the speed of execution is better and the consumption of memory is lower...
>
> For a
> > > java class example:
> > >
> > > public class test {
> > > double salary;
> > > String name;
> > > double getSalary() {
> > > return salary;
> > >
> > > }
> > > }
> > > After call the wrapInMlist.sci, what is content of the mlist
> > returned ?
> > >
> >
>
> If you want to see just use in Scilab the function getfield.
> >
> > > ps: the following code I cound not understand well (in the file
> > > "wrapInMlist"):
> > >
> > > wobj = mlist([infos 'new' meths fields], id);
> > > deff('y=tmpmacro(varargin)', 'y=wrapInMlist(newInstance_l(' +
> > sid
> > > + ',varargin))');
> > > setfield(3, tmpmacro, wobj);
> > >
> > > s = size(meths, 2);
> > > for i=1:s
> > > deff('y=tmpmacro(varargin)', 'y=wrapInMlist(invoke_l(' + sid +
> > > ',''' + meths(i) + ''',varargin))');
> > > setfield(i + dec, tmpmacro, wobj);
> > > clear('tmpmacro');
> > > end
> > >
> > > When I ask questions, do I ask you directly in this mail or use the
> > > mail list gsoc at lists.scilab.org ?
> > > Thanks in advance
> > >
>
> Have fun and don't hesitate to contact me ...
>
Thanks.
> > > Baozeng
> > >
>
> Calixte
>
> > >
> > >
> > >
> >
> > --
> > -------------------------
> > Sylvestre Ledru
> > -------------------------
> > The Scilab Consortium
> > Digiteo
> > Domaine de Voluceau
> > Rocquencourt - B.P. 105
> > 78153 Le Chesnay Cedex
> > France
> >
> >
> >
More information about the dev
mailing list