Computational routine
eng


selector_m

File content


#include "scicos_block4.h"
#include "../machine.h"
#include <memory.h>

void selector_m(scicos_block *block,int flag)
 {
  void *u;
  void *y;
  double *z;
  int nu,mu,ic,nev,nin,so;

  z=GetDstate(block);
  nin=GetNin(block);
  ic=(int)z[0];
  if (flag<3)
     {ic=0;
      nev=GetNevIn(block);
      while (nev>=1) 
           {
     	    ic=ic+1;
     	    nev=nev/2;
    	   }
     }
  if (nin>1)
     {
      mu=GetInPortRows(block,ic);
      nu=GetInPortCols(block,ic);
      u=GetInPortPtrs(block,ic);
      so=GetSizeOfOut(block,1);
      y=GetOutPortPtrs(block,1);
      memcpy(y,u,mu*nu*so);
      }
   else
      {
       mu=GetInPortRows(block,1);
       nu=GetInPortCols(block,1);
       u=GetInPortPtrs(block,1);
       y=GetOutPortPtrs(block,ic);
       so=GetSizeOfIn(block,1);
       memcpy(y,u,mu*nu*so);
       }
}