diff options
Diffstat (limited to 'js/Misc/LOGICAL_OP.js')
-rw-r--r-- | js/Misc/LOGICAL_OP.js | 169 |
1 files changed, 85 insertions, 84 deletions
diff --git a/js/Misc/LOGICAL_OP.js b/js/Misc/LOGICAL_OP.js index 25ee74a3..66ddcac6 100644 --- a/js/Misc/LOGICAL_OP.js +++ b/js/Misc/LOGICAL_OP.js @@ -13,100 +13,101 @@ function LOGICAL_OP() { model.dep_ut = [true,false]; exprs = [[string(nin)],[string(ipar)]]; gr_i = []; - x = standard_define([2,2],model,exprs,gr_i); + this.x = standard_define([2,2],model,exprs,gr_i); } LOGICAL_OP.prototype.details = function LOGICAL_OP() { + return this.x; } LOGICAL_OP.prototype.get = function LOGICAL_OP() { } LOGICAL_OP.prototype.set = function LOGICAL_OP() { - x = arg1; + this.x = arg1; graphics = arg1.graphics; exprs = graphics.exprs; model = arg1.model; if (size(exprs,1)==2) { - exprs = [[exprs],[sci2exp(1)],[sci2exp(0)]]; -} + exprs = [[exprs],[sci2exp(1)],[sci2exp(0)]]; + } while (true) { - [ok,nin,rule,Datatype,tp,exprs] = scicos_getvalue("Set parameters",[["number of inputs"],["Operator: AND (0), OR (1), NAND (2), NOR (3), XOR (4), NOT (5)","Datatype (1=double 3=int32 ...)"],["Bitwise Rule(0=No 1=yes)"]],list("vec",1,"vec",1,"vec",1,"vec",1),exprs); - if (!ok) { -break; -} - nin = int(nin); - rule = int(rule); - tp = int(tp); - if (nin<1) { -message("Number of inputs must be >=1 "); - ok = false; - } else if ((rule<0)||(rule>5)) { -message("Incorrect operator "+string(rule)+" ; must be 0 to 5."); - ok = false; - } else if ((rule==5)&&(nin>1)) { -message("Only one input allowed for NOT operation"); - nin = 1; - } else if (((Datatype==1)&&(tp!=0))) { -message("Bitwise Rule is only activated when Data type is integer"); - ok = false; -} - if (ok) { - if ((tp!=0)) { - tp = 1; -} - if (Datatype==1) { - model.sim = list("logicalop",4); - model.ipar = [rule]; - } else { - if (Datatype==3) { - model.sim = list("logicalop_i32",4); - } else if (Datatype==4) { - model.sim = list("logicalop_i16",4); - } else if (Datatype==5) { - model.sim = list("logicalop_i8",4); - } else if (Datatype==6) { - model.sim = list("logicalop_ui32",4); - } else if (Datatype==7) { - model.sim = list("logicalop_ui16",4); - } else if (Datatype==8) { - model.sim = list("logicalop_ui8",4); - } else { -message("Datatype is not supported"); - ok = false; -} - model.ipar = [[rule],[tp]]; -} - if (ok) { - it = Datatype*ones(nin,1); - ot = Datatype; - in1 = [-ones(nin,1),-2*ones(nin,1)]; - if ((rule!=5)&&(nin==1)) { - out = [1,1]; - [model,graphics,ok] = set_io(model,graphics,list(in1,it),list(out,ot),[],[]); - } else { - out = [-1,-2]; - [model,graphics,ok] = set_io(model,graphics,list(in1,it),list(out,ot),[],[]); -} -} - if (ok) { - if (rule==0) { - label = "AND"; - } else if (rule==1) { - label = "OR"; - } else if (rule==2) { - label = "NAND"; - } else if (rule==3) { - label = "NOR"; - } else if (rule==4) { - label = "XOR"; - } else if (rule==5) { - label = "NOT"; -} - graphics.exprs = exprs; - graphics.style = ["blockWithLabel;displayedLabel="+label]; - x.graphics = graphics; - x.model = model; -break; -} -} -} + [ok,nin,rule,Datatype,tp,exprs] = scicos_getvalue("Set parameters",[["number of inputs"],["Operator: AND (0), OR (1), NAND (2), NOR (3), XOR (4), NOT (5)","Datatype (1=double 3=int32 ...)"],["Bitwise Rule(0=No 1=yes)"]],list("vec",1,"vec",1,"vec",1,"vec",1),exprs); + if (!ok) { + break; + } + nin = int(nin); + rule = int(rule); + tp = int(tp); + if (nin<1) { + message("Number of inputs must be >=1 "); + ok = false; + } else if ((rule<0)||(rule>5)) { + message("Incorrect operator "+string(rule)+" ; must be 0 to 5."); + ok = false; + } else if ((rule==5)&&(nin>1)) { + message("Only one input allowed for NOT operation"); + nin = 1; + } else if (((Datatype==1)&&(tp!=0))) { + message("Bitwise Rule is only activated when Data type is integer"); + ok = false; + } + if (ok) { + if ((tp!=0)) { + tp = 1; + } + if (Datatype==1) { + model.sim = list("logicalop",4); + model.ipar = [rule]; + } else { + if (Datatype==3) { + model.sim = list("logicalop_i32",4); + } else if (Datatype==4) { + model.sim = list("logicalop_i16",4); + } else if (Datatype==5) { + model.sim = list("logicalop_i8",4); + } else if (Datatype==6) { + model.sim = list("logicalop_ui32",4); + } else if (Datatype==7) { + model.sim = list("logicalop_ui16",4); + } else if (Datatype==8) { + model.sim = list("logicalop_ui8",4); + } else { + message("Datatype is not supported"); + ok = false; + } + model.ipar = [[rule],[tp]]; + } + if (ok) { + it = Datatype*ones(nin,1); + ot = Datatype; + in1 = [-ones(nin,1),-2*ones(nin,1)]; + if ((rule!=5)&&(nin==1)) { + out = [1,1]; + [model,graphics,ok] = set_io(model,graphics,list(in1,it),list(out,ot),[],[]); + } else { + out = [-1,-2]; + [model,graphics,ok] = set_io(model,graphics,list(in1,it),list(out,ot),[],[]); + } + } + if (ok) { + if (rule==0) { + label = "AND"; + } else if (rule==1) { + label = "OR"; + } else if (rule==2) { + label = "NAND"; + } else if (rule==3) { + label = "NOR"; + } else if (rule==4) { + label = "XOR"; + } else if (rule==5) { + label = "NOT"; + } + graphics.exprs = exprs; + graphics.style = ["blockWithLabel;displayedLabel="+label]; + this.x.graphics = graphics; + this.x.model = model; + break; + } + } + } } } |