/* autogenerated from "macros/Misc/MPBLOCK.sci" */
function MPBLOCK() {
    MPBLOCK.prototype.define = function MPBLOCK() {
in1=["u"];
intype=["I"];
out=[["y1"],["y2"]];
outtype=[["I"],["I"]];
param=[];
paramv=list();
pprop=[];
nameF="myModel";
exprs=tlist(["MPBLOCK","in","intype","out","outtype","param","paramv","pprop","nameF","funtxt"],sci2exp(in1.slice()),sci2exp(intype.slice()),sci2exp(out.slice()),sci2exp(outtype.slice()),sci2exp(param.slice()),list(string(0.1),string(.0001)),sci2exp(pprop.slice()),nameF,[]);
model=scicos_model();
model.blocktype="c";
model.dep_ut=[true,true];
model.rpar=[];
for (i=1;i<=lstsize[paramv-1];i+=1) {
model.rpar=[[model.rpar],[paramv[i-1].slice()]];
}
mo=modelica();
mo.model=nameF;
mo.parameters=list(param,paramv);
model.sim=list(mo.model,10004);
mo.inputs=in1;
mo.outputs=out;
model.in1=ones(size(mo.inputs,"r"),1);
model.out=ones(size(mo.outputs,"r"),1);
model.equations=mo;
gr_i=[];
x=standard_define([3,2],model,exprs,gr_i);
x.graphics.in_implicit=intype;
x.graphics.out_implicit=outtype;
    }
    MPBLOCK.prototype.details = function MPBLOCK() {
    }
    MPBLOCK.prototype.get = function MPBLOCK() {
    }
    MPBLOCK.prototype.set = function MPBLOCK() {
x=arg1;
model=arg1.model;
graphics=arg1.graphics;
exprs=graphics.exprs;
if (type[exprs-1]==15) {
paramv=list();
pprop=[];
for (i=1;i<=size(model.rpar,"*");i+=1) {
paramv[$+1-1]=string(model.rpar[i-1]);
pprop[$+1-1]=0;
}
exprs=tlist(["MPBLOCK","in","intype","out","outtype","param","paramv","pprop","nameF","funtxt"],exprs[1-1][1-1],exprs[1-1][2-1],exprs[1-1][3-1],exprs[1-1][4-1],exprs[1-1][5-1],paramv,sci2exp(pprop.slice()),exprs[1-1][7-1],exprs[2-1]);
}
lab_1=list(exprs.in1,exprs.intype,exprs.out,exprs.outtype,exprs.param,exprs.pprop,exprs.nameF);
lab_2=exprs.paramv;
while (true) {
[ok,Tin,Tintype,Tout,Touttype,Tparam,pprop,Tfunam,lab_1]=getvalue("Set Modelica generic block parameters",[["Input variables:       "],["Input variables types: "],["Output variables:      "],["Output variables types:"],["Parameters in Modelica:"],["Parameters properties: "],["Model name in packages:"]],list("str",-1,"str",-1,"str",-1,"str",-1,"str",-1,"vec",-1,"str",-1),lab_1);
if (!ok) {
break;
}
ierr=execstr("in=stripblanks(evstr(Tin));            intype=stripblanks(evstr(Tintype));            out=stripblanks(evstr(Tout));            outtype=stripblanks(evstr(Touttype));            param=stripblanks(evstr(Tparam));            funam=stripblanks(Tfunam)","errcatch");
if (ierr!=0) {
x_message("Error in evaluation of variables.");
ok=false;
}
if (ok) {
for (i=1;i<=size(in1,"*");i+=1) {
r=false;
ierr=execstr("r=validvar(in(i))","errcatch");
if (!r) {
ok=false;
break;
}
}
if (!ok) {
x_message([["Invalid variable name for the input "+string(i)+"."],["\""+in1[i-1]+"\""],["Please choose another variable name."]]);
}
}
if (ok) {
for (i=1;i<=size(out,"*");i+=1) {
r=false;
ierr=execstr("r=validvar(out(i))","errcatch");
if (!r) {
ok=false;
break;
}
}
if (!ok) {
x_message([["Invalid variable name for the output "+string(i)+"."],["\""+out[i-1]+"\""],["Please choose another variable name."]]);
}
}
if (ok) {
param=param.slice();
for (i=1;i<=size(param,"*");i+=1) {
r=false;
ierr=execstr("r=validvar(param(i))","errcatch");
if (!r) {
ok=false;
break;
}
}
if (!ok) {
x_message([["Invalid variable name for the parameter "+string(i)+"."],["\""+param[i-1]+"\""],["Please choose another variable name."]]);
}
}
if (ok) {
for (i=1;i<=size(intype,"*");i+=1) {
if (intype[i-1]!="E"&&intype[i-1]!="I") {
x_message("Input type should be \'E\' or \'I\'!");
ok=false;
break;
}
}
}
if (ok) {
for (i=1;i<=size(outtype,"*");i+=1) {
if (outtype[i-1]!="E"&&outtype[i-1]!="I") {
x_message("Output type should be \'E\' or \'I\'!");
ok=false;
break;
}
}
}
if (ok) {
if (or(size(intype)!=size(in1))) {
x_message("Input variables are not well defined!");
ok=false;
}
}
if (ok) {
if (or(size(outtype)!=size(out))) {
x_message("Output variables are not well defined!");
ok=false;
}
}
if (ok) {
pprop=pprop.slice();
if ((size(param,"*")!=size(pprop,"*"))) {
x_message([["There is differences in"],["size of param and size "],["of param properties."]]);
ok=false;
}
}
if (ok) {
if (max(pprop)>2||min(pprop)<0) {
x_message([["Parameters properties must be :"],["0 : if it is a paramaters"],["1 : if it is an initial value of state,"],["2 : it it is a fixed initial state value."]]);
ok=false;
}
}
if (ok) {
if (funam=="") {
x_message("The model name is not defined!");
ok=false;
}
}
if (ok) {
[dirF,nameF,extF]=fileparts(funam);
if ((extF!="")||(dirF!="")) {
x_message("Invalid model name!");
ok=false;
}
}
if (ok) {
intypex=find(intype=="I");
outtypex=find(outtype=="I");
[model,graphics,ok]=set_io(model,graphics,list([ones(in1),ones(in1)],ones(in1)),list([ones(out),ones(out)],ones(out)),[],[],intypex,outtypex);
}
if (ok) {
Tparam_lab=evstr(Tparam);
Tparam_sz=size(Tparam_lab,"*");
if (Tparam_sz>lstsize[lab_2-1]) {
for (i=1;i<=(Tparam_sz-lstsize[lab_2-1]);i+=1) {
lab_2[$+1-1]="0";
}
} else if (Tparam_sz<lstsize[lab_2-1]) {
lab_2_tmp=list();
if (Tparam_sz!=0) {
for (i=1;i<=Tparam_sz;i+=1) {
ee=evstr(exprs.param);
for (j=1;j<=size(ee,"r");j+=1) {
if (ee[j-1]==Tparam_lab[i-1]) {
lab_2_tmp[i-1]=lab_2[j-1];
}
}
}
lab_2=lab_2_tmp;
}
}
if (Tparam_sz!=0) {
lhs_txt="";
lab_txt="";
rhs_txt="";
for (i=1;i<=Tparam_sz;i+=1) {
lhs_txt=lhs_txt+"%v"+string(i)+",";
if (pprop[i-1]==0) {
lab_txt=lab_txt+"\'"+Tparam_lab[i-1]+"\';";
} else if (pprop[i-1]==1) {
lab_txt=lab_txt+"\'"+Tparam_lab[i-1]+" (state) \';";
} else if (pprop[i-1]==2) {
lab_txt=lab_txt+"\'"+Tparam_lab[i-1]+" (fixed state) \';";
}
rhs_txt=rhs_txt+"\'vec\',-1,";
}
lhs_txt=part(lhs_txt,1,length(lhs_txt)-1);
lab_txt=part(lab_txt,1,length(lab_txt)-1);
rhs_txt=part(rhs_txt,1,length(rhs_txt)-1);
getvalue_txt="[ok,"+lhs_txt+",lab_2]=scicos_getvalue(\'Set parameters values\',["+lab_txt+"],"+"list("+rhs_txt+"),lab_2)";
execstr(getvalue_txt);
if (!ok) {
lab_2=exprs.paramv;
}
}
}
if (ok) {
paramv=list();
for (i=1;i<=Tparam_sz;i+=1) {
execstr("paramv("+string(i)+")=%v"+string(i));
}
}
if (ok) {
mo=modelica();
mo.model=nameF;
mo.inputs=in1;
mo.outputs=out;
if (pprop!=[]) {
if (max(pprop)>0) {
mo.parameters=list(transpose(param),paramv,transpose(pprop));
} else {
mo.parameters=list(transpose(param),paramv);
}
}
model.equations=mo;
model.rpar=[];
for (i=1;i<=lstsize[paramv-1];i+=1) {
model.rpar=[[model.rpar],[double[paramv[i-1].slice()-1]]];
}
model.sim[1-1]=funam;
exprs.in1=lab_1[1-1];
exprs.intype=lab_1[2-1];
exprs.out=lab_1[3-1];
exprs.outtype=lab_1[4-1];
exprs.param=lab_1[5-1];
exprs.paramv=list();
if (Tparam_sz!=0) {
if (type[lab_2-1]==15) {
for (i=1;i<=lstsize[lab_2-1];i+=1) {
exprs.paramv[i-1]=lab_2[i-1];
}
} else {
for (i=1;i<=size(lab_2,"*");i+=1) {
exprs.paramv[i-1]=lab_2[i-1];
}
}
}
exprs.pprop=lab_1[6-1];
exprs.nameF=lab_1[7-1];
exprs.funtxt="";
x.model=model;
graphics.gr_i[1-1][1-1]="txt=[\' "+nameF+" \'];";
graphics.in_implicit=intype;
graphics.out_implicit=outtype;
graphics.exprs=exprs;
x.graphics=graphics;
break;
}
}
    }
}