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