1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
function [tree]=sci_makecell(tree)
// Copyright INRIA
// M2SCI function
// Conversion function for Matlab {}
// Input: tree = Matlab funcall tree
// Ouput: tree = Scilab equivalent for tree
// V.C.
if rhs==0 then
tree.rhs(1)=Operation("rc",list(Cste(0),Cste(0)),list())
tree.lhs(1).dims=list(0,0)
tree.lhs(1).type=Type(Cell,Unknown)
tree.lhs(1).contents=Contents()
return
end
dimsrhs=Operation("rc",list(Cste(double(tree.rhs(1).dims(1))),Cste(double(tree.rhs(1).dims(2)))),list())
inrhs=tree.rhs(1)
tmprhslist=list()
tmprhslist(1)=dimsrhs
if double(tree.rhs(1).dims(1))<>1 then
for kr=1:double(tree.rhs(1).dims(1))-1
for krhs=lstsize(tmprhslist):-1:2
tmprhslist(krhs+1)=tmprhslist(krhs)
end
tmprhslist(2)=inrhs.operands(2)
inrhs=inrhs.operands(1)
end
for krhs=lstsize(tmprhslist):-1:2
tmprhslist(krhs+1)=tmprhslist(krhs)
end
tmprhslist(2)=inrhs
else
tmprhslist(2)=inrhs
end
rhslist=list()
rhslist(1)=dimsrhs
if double(tree.rhs(1).dims(2))<>1 then
tmprhslist(1)=null()
for ksz=lstsize(tmprhslist):-1:1
inrhs=tmprhslist(ksz)
for kr=1:double(tree.rhs(1).dims(2))-1
for krhs=lstsize(rhslist):-1:2
rhslist(krhs+1)=rhslist(krhs)
end
rhslist(2)=inrhs.operands(2)
inrhs=inrhs.operands(1)
end
for krhs=lstsize(rhslist):-1:2
rhslist(krhs+1)=rhslist(krhs)
end
rhslist(2)=inrhs
end
else
rhslist=tmprhslist
end
// Del cell in first rhslist(2)
rhslist(2)=rhslist(2).operands(2)
tree.lhs(1).dims=tree.rhs(1).dims
tree.lhs(1).type=tree.rhs(1).type
tree.lhs(1).contents=tree.rhs(1).contents
tree.rhs=rhslist
endfunction
|