Interfacing function
eng

##
SHIFT

### File content

    function [x,y,typ]=SHIFT(job,arg1,arg2)
    // Copyright INRIA
    x=[];y=[];typ=[];
    select job
    case 'plot' then
      sgn=arg1.model.ipar
      VOP=["Arithmetic", "Circular"]
      OPER=VOP(evstr( arg1.graphics.exprs(3))+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
      model=arg1.model
      exprs=graphics.exprs
      while %t do
        [ok,Datatype,nb,np,exprs]=getvalue('Set Shift block parameters',..
    			    ['Datatype (3=int32  4=int16 5=int8 ...)';..
                                 'Number of bits to shift left (use negatif number to shift right)';..
                                 'Shifttype(0=Arithmetic 1=Circular)'],..
                                 list('vec',1,'vec',1,'vec',1),exprs)
        if ~ok then break,end
        if (np~=0 & np~=1) then message ("shifttyp is not supported");ok=%f;end
        it=Datatype;
        ot=Datatype;
    //    model.sim=list('shift_ia',4)
        if (Datatype==3 | Datatype==6) then
    	if nb>0 then
    	   select np
    		case 0 then model.sim=list('shift_32_LA',4)
    		case 1 then model.sim=list('shift_32_LC',4)
    	   end
    	elseif nb<0
    	   select np
    		case 0 then
    			select Datatype
    			    case 3 model.sim=list('shift_32_RA',4)
    			    case 6 model.sim=list('shift_u32_RA',4)
    			end
    		case 1 then model.sim=list('shift_32_RC',4)
    	   end
    	end
        elseif (Datatype==4 | Datatype==7) then
    	if nb>0 then
    	   select np
    		case 0 then model.sim=list('shift_16_LA',4)
    		case 1 then model.sim=list('shift_16_LC',4)
    	   end
    	elseif nb<0
    	   select np
    		case 0 then
    			select Datatype
    			    case 4 model.sim=list('shift_16_RA',4)
    			    case 7 model.sim=list('shift_u16_RA',4)
    			end
    		case 1 then model.sim=list('shift_16_RC',4)
    	   end
    	end
        elseif (Datatype==5 | Datatype==8) then
    	if nb>0 then
    	   select np
    		case 0 then model.sim=list('shift_8_LA',4)
    		case 1 then model.sim=list('shift_8_LC',4)
    	   end
    	elseif nb<0
    	   select np
    		case 0 then
    			select Datatype
    			    case 5 model.sim=list('shift_8_RA',4)
    			    case 8 model.sim=list('shift_u8_RA',4)
    			end
    		case 1 then model.sim=list('shift_8_RC',4)
    	   end
    	end
        else message("Datatype is not supported");ok=%f;
        end
        if ok then
          [model,graphics,ok]=set_io(model,graphics,...
                                     list([-1,-2],it),...
                                     list([-1,-2],ot),[],[])
        end
        if ok then
          model.ipar=nb
          graphics.exprs=exprs
          x.graphics=graphics;x.model=model
          break
        end
      end
    case 'define' then
      sgn=[0;0]
      OPER=0;
      model=scicos_model()
      model.sim=list('shift_32_LA',4)
      model.in=-1
      model.out=-1
      model.in2=-2
      model.out2=-2
      model.intyp=3
      model.outtyp=3
      model.rpar=[]
      model.ipar=sgn
      model.blocktype='c'
      model.dep_ut=[%t %f]

      exprs=[sci2exp(3);sci2exp(0);sci2exp(0)]
    gr_i=['xstringb(orig(1),orig(2),[OPER;''   Shift  ''],sz(1),sz(2),''fill'')']
      x=standard_define([3 2],model, exprs,gr_i)
    end
    endfunction