Fonction d'interfaçage
fr

##
RELATIONALOP

### Contenu du fichier

    function [x,y,typ]=RELATIONALOP(job,arg1,arg2)
    x=[];y=[];typ=[]
    select job
     case 'plot' then
      VOP=['==', '~=', '<', '<=', '>=','>']
      OPER=VOP(evstr( arg1.graphics.exprs(1))+1)
      standard_draw(arg1)
    case 'getinputs' then
      [x,y,typ]=standard_inputs(arg1)
    case 'getoutputs' then
      [x,y,typ]=standard_outputs(arg1)
    case 'getorigin' then
      [x,y]=standard_origin(arg1)
    case 'set' then
      x=arg1;
      graphics=arg1.graphics;exprs=graphics.exprs
      model=arg1.model;
      if size(exprs,1)==2 then exprs=[exprs;sci2exp(1)]; end
      while %t do
        [ok,rule,zcr,Datatype,exprs]=getvalue('Set parameters',..
    	['Operator: == (0), ~= (1), < (2), <= (3), >= (4), > (5)';..
    	 'Use zero crossing (no: 0), (yes: 1)'
             'Datatype (1=double 3=int32 ...)'],..
    	list('vec',1,'vec',1,'vec',1),exprs)
        if ~ok then break,end
        rule=int(rule);if zcr<>0 then zcr=1,end
        if (rule<0)|(rule>5) then
          message('Incorrect operator '+string(rule)+' ; must be 0 to 5.')
        end
        if (Datatype==1) then
            model.sim=list('relational_op',4)
        elseif (Datatype==3) then
            model.sim=list('relational_op_i32',4)
        elseif(Datatype==4) then
            model.sim=list('relational_op_i16',4)
        elseif(Datatype==5) then
            model.sim=list('relational_op_i8',4)
        elseif(Datatype==6) then
            model.sim=list('relational_op_ui32',4)
        elseif(Datatype==7) then
            model.sim=list('relational_op_ui16',4)
        elseif(Datatype==8) then
            model.sim=list('relational_op_ui8',4)
        else message("Datatype is not supported");ok=%f;
        end
        if ok then
            it=Datatype*ones(1,2)
    	ot=Datatype
            in=[-1 -2;-1 -2]
    	out=[-1 -2]
    	[model,graphics,ok]=set_io(model,graphics,list(in,it),list(out,ot),[],[])
        end
        if ok then
          graphics.exprs=exprs;
          model.ipar=[rule],
          model.nzcross=zcr,
          model.nmode=zcr,
          x.graphics=graphics;x.model=model
          break
        end
      end
    case 'define' then
      ipar=[2]
      model=scicos_model()
      model.sim=list('relationalop',4)
      model.in=[1;1]
      model.out=1
      model.ipar=ipar
      model.blocktype='c'
      model.dep_ut=[%t %f]

      exprs=[string(ipar);string(0)]
      gr_i=['xstringb(orig(1),orig(2),[''Relational'';''Op : ''+OPER],sz(1),sz(2),''fill'');']
      x=standard_define([2.5 2],model,exprs,gr_i)
    end
    endfunction