mswitch.c

Go to the documentation of this file.
00001 #include "scicos_block.h"
00002 #include <math.h>
00003 
00004 #ifndef _MSC_VER
00005 #define max(a,b) ((a) >= (b) ? (a) : (b))
00006 #define min(a,b) ((a) <= (b) ? (a) : (b))
00007 #endif
00008 
00009 void  mswitch(scicos_block *block,int flag)
00010 {
00011   int i,j;
00012   i=block->ipar[1];
00013   if (i==0) {
00014     if (*block->inptr[0]>0) {
00015       j=(int)floor(*block->inptr[0]);
00016     }else{
00017       j=(int)ceil(*block->inptr[0]);
00018     }
00019   }else if (i==1) {
00020     if (*block->inptr[0]>0) {
00021       j=(int)floor(*block->inptr[0]+.5);
00022     }else{
00023       j=(int)ceil(*block->inptr[0]-.5);
00024     }
00025   }else if (i==2) {
00026     j=(int)ceil(*block->inptr[0]);
00027   }else if (i==3) {
00028     j=(int)floor(*block->inptr[0]);
00029   }
00030   j=j+1-block->ipar[0];
00031   j=max(j,1);
00032   j=min(j,block->nin-1);
00033   for (i=0;i<block->insz[j];i++) {
00034     block->outptr[0][i]=block->inptr[j][i];
00035   }
00036 }

Generated on Sun Mar 4 15:03:59 2007 for Scilab [trunk] by  doxygen 1.5.1