1 /***************************************************************************** 2 Major portions of this software are copyrighted by the Medical College 3 of Wisconsin, 1994-2000, and are released under the Gnu General Public 4 License, Version 2. See the file README.Copyright for details. 5 ******************************************************************************/ 6 7 #ifndef MCW_TS_HEADER 8 #define MCW_TS_HEADER 9 10 /** structure type to hold data from one time series file **/ 11 12 typedef struct { 13 char *fname ; /* filename data was from (NULL=none) */ 14 int len ; /* number of points in time series */ 15 float *ts ; /* pointer to actual data */ 16 } time_series ; 17 18 typedef struct { 19 int num , nall ; 20 time_series ** tsarr ; 21 } time_series_array ; 22 23 #define INC_TSARR 8 24 25 #define INIT_TSARR(name) \ 26 ( (name) = (time_series_array *) malloc( sizeof(time_series_array) ) , \ 27 (name)->num = 0 , (name)->nall = INC_TSARR , \ 28 (name)->tsarr = (time_series **)malloc(sizeof(time_series *)*INC_TSARR) ) 29 30 #define ADDTO_TSARR(name,tsname) \ 31 do{ int nn ; \ 32 if( (name)->num == (name)->nall ){ \ 33 (name)->nall += INC_TSARR+(name)->nall/16; nn = sizeof(time_series *) * (name)->nall;\ 34 (name)->tsarr = ((name)->tsarr == NULL) ? (time_series **)malloc(nn) \ 35 : (time_series **)realloc((name)->tsarr,nn); \ 36 if( name->tsarr == NULL ){ \ 37 fprintf(stderr,"ADDTO_TSARR malloc fails at line %d in file %s\n", \ 38 __LINE__,__FILE__) ; exit(1) ; \ 39 } } \ 40 nn = (name)->num ; (name)->tsarr[nn] = (tsname) ; (name)->num++ ; break ; } while(0) 41 42 #define DESTROY_TSARR(name) \ 43 do{ int ii ; \ 44 if( (name) != NULL ) \ 45 for( ii=0 ; ii < (name)->num ; ii++ ) RWC_free_time_series((name)->tsarr[ii]) ; \ 46 free((name)->tsarr) ; free((name)) ; (name) = NULL ; break ; } while(0) 47 48 extern time_series * RWC_read_time_series() ; /* more declarations */ 49 extern float RWC_norm_ts() ; 50 extern float RWC_max_ts() ; 51 extern float RWC_min_ts() ; 52 extern void RWC_free_time_series() ; 53 extern time_series * RWC_blank_time_series() ; 54 extern void RWC_medfilt_time_series() ; 55 56 #define MALLOC_ERR(str) \ 57 { fprintf(stderr,"MALLOC error: %s\n",str); exit(-1); } 58 59 #ifndef MIN 60 # define MIN(x,y) (((x)<(y)) ? (x) : (y)) 61 #endif 62 63 #ifndef MAX 64 # define MAX(x,y) (((x)>(y)) ? (x) : (y)) 65 #endif 66 67 #endif 68