/*****************************************************************************
Major portions of this software are copyrighted by the Medical College
of Wisconsin, 1994-2000, and are released under the Gnu General Public
License, Version 2. See the file README.Copyright for details.
******************************************************************************/
#ifndef MCW_TS_HEADER
#define MCW_TS_HEADER
/** structure type to hold data from one time series file **/
typedef struct {
char *fname ; /* filename data was from (NULL=none) */
int len ; /* number of points in time series */
float *ts ; /* pointer to actual data */
} time_series ;
typedef struct {
int num , nall ;
time_series ** tsarr ;
} time_series_array ;
#define INC_TSARR 8
#define INIT_TSARR(name) \
( (name) = (time_series_array *) malloc( sizeof(time_series_array) ) , \
(name)->num = 0 , (name)->nall = INC_TSARR , \
(name)->tsarr = (time_series **)malloc(sizeof(time_series *)*INC_TSARR) )
#define ADDTO_TSARR(name,tsname) \
do{ int nn ; \
if( (name)->num == (name)->nall ){ \
(name)->nall += INC_TSARR+(name)->nall/16; nn = sizeof(time_series *) * (name)->nall;\
(name)->tsarr = ((name)->tsarr == NULL) ? (time_series **)malloc(nn) \
: (time_series **)realloc((name)->tsarr,nn); \
if( name->tsarr == NULL ){ \
fprintf(stderr,"ADDTO_TSARR malloc fails at line %d in file %s\n", \
__LINE__,__FILE__) ; exit(1) ; \
} } \
nn = (name)->num ; (name)->tsarr[nn] = (tsname) ; (name)->num++ ; break ; } while(0)
#define DESTROY_TSARR(name) \
do{ int ii ; \
if( (name) != NULL ) \
for( ii=0 ; ii < (name)->num ; ii++ ) RWC_free_time_series((name)->tsarr[ii]) ; \
free((name)->tsarr) ; free((name)) ; (name) = NULL ; break ; } while(0)
extern time_series * RWC_read_time_series() ; /* more declarations */
extern float RWC_norm_ts() ;
extern float RWC_max_ts() ;
extern float RWC_min_ts() ;
extern void RWC_free_time_series() ;
extern time_series * RWC_blank_time_series() ;
extern void RWC_medfilt_time_series() ;
#define MALLOC_ERR(str) \
{ fprintf(stderr,"MALLOC error: %s\n",str); exit(-1); }
#ifndef MIN
# define MIN(x,y) (((x)<(y)) ? (x) : (y))
#endif
#ifndef MAX
# define MAX(x,y) (((x)>(y)) ? (x) : (y))
#endif
#endif
syntax highlighted by Code2HTML, v. 0.9.1