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 }