LAL  7.5.0.1-89842e6
StreamSeriesInputTest.c
Go to the documentation of this file.
1 /*
2 * Copyright (C) 2007 Jolien Creighton, Teviet Creighton
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with with program; see the file COPYING. If not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 * MA 02110-1301 USA
18 */
19 
20 /**
21  * \file
22  * \ingroup StreamInput_h
23  * \author Creighton, T. D.
24  *
25  * \brief Reads a time or frequency series from a file, and writes it to another file.
26  *
27  * ### Usage ###
28  *
29  * \code
30  * StreamSeriesInputTest [-o outfile] [-i infile stype dtype] [-d debuglevel]
31  * \endcode
32  *
33  * ### Description ###
34  *
35  * This test program parses data from an input file or from \c stdin,
36  * using the routines in \ref StreamSeriesInput.c, and possibly
37  * generating output using the routines in \ref StreamSeriesOutput.c.
38  * The following option flags are accepted:
39  * <ul>
40  * <li>[<tt>-o</tt>] Writes the output to \c outfile. If
41  * \c outfile is given as \c stdout, the data is written to
42  * standard output (\e not to a file named \c stdout). If the
43  * <tt>-o</tt> flag is not given, the input routines are exercised, but no
44  * output is written.</li>
45  * <li>[<tt>-i</tt>] Specifies the input file name \c infile, series
46  * type \c stype, and base datatype \c dtype. Series type is a
47  * single character: either \c t (time series), \c v (time vector
48  * series), \c a (time array series), or \c f (frequency series).
49  * Base datatype may be \c i2 (\c INT2), \c i4 (\c INT4),
50  * \c i8 (\c INT8), \c u2 (\c UINT2), \c u4
51  * (\c UINT4), \c u8 (\c UINT8), \c s (\c REAL4),
52  * \c d (\c REAL8), \c c (\c COMPLEX8), or \c z
53  * (\c COMPLEX16). If the <tt>-i</tt> flag is not given,
54  * <tt>-i StreamSeriesInput.dat f s</tt> is assumed (this file is provided
55  * with the distribution so that running the code with no arguments, \'a
56  * la <tt>make check</tt>, will perform a nontrivial test of the
57  * algorithm).</li>
58  * <li>[<tt>-d</tt>] Sets the debug level to \c debuglevel; if
59  * absent, <tt>-d 0</tt> is assumed.</li>
60  * </ul>
61  *
62  * See the documentation in \ref StreamSeriesInput_c and
63  * \ref StreamSeriesOutput_c for discussion of the input and output
64  * data file formats.
65  */
66 
67 /** \name Error Codes */ /** @{ */
68 #define STREAMSERIESINPUTTESTC_ENORM 0 /**< Normal exit */
69 #define STREAMSERIESINPUTTESTC_ESUB 1 /**< Subroutine failed */
70 #define STREAMSERIESINPUTTESTC_EARG 2 /**< Error parsing arguments */
71 #define STREAMSERIESINPUTTESTC_EFILE 3 /**< Could not open file */
72 /** @} */
73 
74 /** \cond DONT_DOXYGEN */
75 #define STREAMSERIESINPUTTESTC_MSGENORM "Normal exit"
76 #define STREAMSERIESINPUTTESTC_MSGESUB "Subroutine failed"
77 #define STREAMSERIESINPUTTESTC_MSGEARG "Error parsing arguments"
78 #define STREAMSERIESINPUTTESTC_MSGEFILE "Could not open file"
79 
80 
81 #include <stdlib.h>
82 #include <lal/LALStdio.h>
83 #include <lal/FileIO.h>
84 #include <lal/LALStdlib.h>
85 #include <lal/AVFactories.h>
86 #include <lal/SeqFactories.h>
87 #include <lal/StreamInput.h>
88 #include <lal/StreamOutput.h>
89 
90 /* Default parameter settings. */
91 #define INFILE TEST_DATA_DIR "StreamSeriesInput.data"
92 
93 /* Usage format string. */
94 #define USAGE "Usage: %s [-o outfile] [-d debuglevel]\n" \
95 "\t[-i infile {t | v | a | f} {i2 | i4 | i8 | u2 | u4 | u8 | s | d | c | z}]\n"
96 
97 /* Macros for printing errors and testing subroutines. */
98 #define ERROR( code, msg, statement ) \
99 if ( lalDebugLevel & LALERROR ) \
100 { \
101  LALPrintError( "Error[0] %d: program %s, file %s, line %d, %s\n" \
102  " %s %s\n", (code), *argv, __FILE__, \
103  __LINE__, "$Id$", \
104  statement ? statement : "", (msg) ); \
105 } \
106 else (void)(0)
107 
108 #define INFO( statement ) \
109 if ( lalDebugLevel & LALINFO ) \
110 { \
111  LALPrintError( "Info[0]: program %s, file %s, line %d, %s\n" \
112  " %s\n", *argv, __FILE__, __LINE__, \
113  "$Id$", (statement) ); \
114 } \
115 else (void)(0)
116 
117 #define SUB( func, statusptr ) \
118 if ( (func), (statusptr)->statusCode ) \
119 { \
120  ERROR( STREAMSERIESINPUTTESTC_ESUB, STREAMSERIESINPUTTESTC_MSGESUB,\
121  "Function call \"" #func "\" failed:" ); \
122  return STREAMSERIESINPUTTESTC_ESUB; \
123 } \
124 else (void)(0)
125 
126 int
127 main(int argc, char **argv)
128 {
129  static LALStatus stat; /* top-level status structure */
130  INT4 arg; /* index over command-line options */
131  CHAR *outfile = NULL; /* name of output file */
132  const CHAR *infile = INFILE; /* name of input file */
133  const CHAR *dtype = "s"; /* data type tag */
134  const CHAR *stype = "f"; /* series type tag */
135  FILE *fpIn = NULL; /* input file pointer */
136  FILE *fpOut = NULL; /* output file pointer */
137 
138 
139  /* Parse argument list. arg stores the current position. */
140  arg = 1;
141  while ( arg < argc ) {
142  /* Parse output file option. */
143  if ( !strcmp( argv[arg], "-o" ) ) {
144  if ( argc > arg + 1 ) {
145  arg++;
146  outfile = argv[arg++];
147  } else {
149  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
150  LALPrintError( USAGE, *argv );
152  }
153  }
154  /* Parse input file option. */
155  else if ( !strcmp( argv[arg], "-i" ) ) {
156  if ( argc > arg + 3 ) {
157  arg++;
158  infile = argv[arg++];
159  stype = argv[arg++];
160  dtype = argv[arg++];
161  } else {
163  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
164  LALPrintError( USAGE, *argv );
166  }
167  }
168  /* Parse debug level option. */
169  else if ( !strcmp( argv[arg], "-d" ) ) {
170  if ( argc > arg + 1 ) {
171  arg++;
172  } else {
174  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
175  LALPrintError( USAGE, *argv );
177  }
178  }
179  /* Check for unrecognized options. */
180  else {
182  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
183  LALPrintError( USAGE, *argv );
185  }
186  } /* End of argument parsing loop. */
187 
188  /* Open input and output files. */
189  if ( strcmp( infile, "stdin" ) ) {
190  if ( !( fpIn = fopen( infile, "r" ) ) ) {
192  STREAMSERIESINPUTTESTC_MSGEFILE, infile );
194  }
195  } else
196  fpIn = stdin;
197  if ( outfile ) {
198  if ( strcmp( outfile, "stdout" ) ) {
199  if ( !( fpOut = fopen( outfile, "w" ) ) ) {
201  STREAMSERIESINPUTTESTC_MSGEFILE, outfile );
203  }
204  } else
205  fpOut = stdout;
206  }
207 
208  /* Read (and possibly write) the data as a time series. */
209  if ( !strcmp( stype, "t" ) ) {
210  if ( !strcmp( dtype, "i2" ) ) {
211  static INT2TimeSeries series;
212  SUB( LALI2ReadTSeries( &stat, &series, fpIn ), &stat );
213  if ( fpOut ) {
214  SUB( LALI2WriteTSeries( &stat, fpOut, &series ), &stat );
215  }
216  SUB( LALI2DestroyVector( &stat, &(series.data) ), &stat );
217  } else if ( !strcmp( dtype, "i4" ) ) {
218  static INT4TimeSeries series;
219  SUB( LALI4ReadTSeries( &stat, &series, fpIn ), &stat );
220  if ( fpOut ) {
221  SUB( LALI4WriteTSeries( &stat, fpOut, &series ), &stat );
222  }
223  SUB( LALI4DestroyVector( &stat, &(series.data) ), &stat );
224  } else if ( !strcmp( dtype, "i8" ) ) {
225  static INT8TimeSeries series;
226  SUB( LALI8ReadTSeries( &stat, &series, fpIn ), &stat );
227  if ( fpOut ) {
228  SUB( LALI8WriteTSeries( &stat, fpOut, &series ), &stat );
229  }
230  SUB( LALI8DestroyVector( &stat, &(series.data) ), &stat );
231  } else if ( !strcmp( dtype, "u2" ) ) {
232  static UINT2TimeSeries series;
233  SUB( LALU2ReadTSeries( &stat, &series, fpIn ), &stat );
234  if ( fpOut ) {
235  SUB( LALU2WriteTSeries( &stat, fpOut, &series ), &stat );
236  }
237  SUB( LALU2DestroyVector( &stat, &(series.data) ), &stat );
238  } else if ( !strcmp( dtype, "u4" ) ) {
239  static UINT4TimeSeries series;
240  SUB( LALU4ReadTSeries( &stat, &series, fpIn ), &stat );
241  if ( fpOut ) {
242  SUB( LALU4WriteTSeries( &stat, fpOut, &series ), &stat );
243  }
244  SUB( LALU4DestroyVector( &stat, &(series.data) ), &stat );
245  } else if ( !strcmp( dtype, "u8" ) ) {
246  static UINT8TimeSeries series;
247  SUB( LALU8ReadTSeries( &stat, &series, fpIn ), &stat );
248  if ( fpOut ) {
249  SUB( LALU8WriteTSeries( &stat, fpOut, &series ), &stat );
250  }
251  SUB( LALU8DestroyVector( &stat, &(series.data) ), &stat );
252  } else if ( !strcmp( dtype, "s" ) ) {
253  static REAL4TimeSeries series;
254  SUB( LALSReadTSeries( &stat, &series, fpIn ), &stat );
255  if ( fpOut ) {
256  SUB( LALSWriteTSeries( &stat, fpOut, &series ), &stat );
257  }
258  SUB( LALSDestroyVector( &stat, &(series.data) ), &stat );
259  } else if ( !strcmp( dtype, "d" ) ) {
260  static REAL8TimeSeries series;
261  SUB( LALDReadTSeries( &stat, &series, fpIn ), &stat );
262  if ( fpOut ) {
263  SUB( LALDWriteTSeries( &stat, fpOut, &series ), &stat );
264  }
265  SUB( LALDDestroyVector( &stat, &(series.data) ), &stat );
266  } else if ( !strcmp( dtype, "c" ) ) {
267  static COMPLEX8TimeSeries series;
268  SUB( LALCReadTSeries( &stat, &series, fpIn ), &stat );
269  if ( fpOut ) {
270  SUB( LALCWriteTSeries( &stat, fpOut, &series ), &stat );
271  }
272  SUB( LALCDestroyVector( &stat, &(series.data) ), &stat );
273  } else if ( !strcmp( dtype, "z" ) ) {
274  static COMPLEX16TimeSeries series;
275  SUB( LALZReadTSeries( &stat, &series, fpIn ), &stat );
276  if ( fpOut ) {
277  SUB( LALZWriteTSeries( &stat, fpOut, &series ), &stat );
278  }
279  SUB( LALZDestroyVector( &stat, &(series.data) ), &stat );
280  } else {
282  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
283  LALPrintError( USAGE, *argv );
285  }
286  }
287 
288  /* Read (and possibly write) the data as a time vector series. */
289  else if ( !strcmp( stype, "v" ) ) {
290  if ( !strcmp( dtype, "i2" ) ) {
291  static INT2TimeVectorSeries series;
292  SUB( LALI2ReadTVectorSeries( &stat, &series, fpIn ), &stat );
293  if ( fpOut ) {
294  SUB( LALI2WriteTVectorSeries( &stat, fpOut, &series ), &stat );
295  }
296  SUB( LALI2DestroyVectorSequence( &stat, &(series.data) ), &stat );
297  } else if ( !strcmp( dtype, "i4" ) ) {
298  static INT4TimeVectorSeries series;
299  SUB( LALI4ReadTVectorSeries( &stat, &series, fpIn ), &stat );
300  if ( fpOut ) {
301  SUB( LALI4WriteTVectorSeries( &stat, fpOut, &series ), &stat );
302  }
303  SUB( LALI4DestroyVectorSequence( &stat, &(series.data) ), &stat );
304  } else if ( !strcmp( dtype, "i8" ) ) {
305  static INT8TimeVectorSeries series;
306  SUB( LALI8ReadTVectorSeries( &stat, &series, fpIn ), &stat );
307  if ( fpOut ) {
308  SUB( LALI8WriteTVectorSeries( &stat, fpOut, &series ), &stat );
309  }
310  SUB( LALI8DestroyVectorSequence( &stat, &(series.data) ), &stat );
311  } else if ( !strcmp( dtype, "u2" ) ) {
312  static UINT2TimeVectorSeries series;
313  SUB( LALU2ReadTVectorSeries( &stat, &series, fpIn ), &stat );
314  if ( fpOut ) {
315  SUB( LALU2WriteTVectorSeries( &stat, fpOut, &series ), &stat );
316  }
317  SUB( LALU2DestroyVectorSequence( &stat, &(series.data) ), &stat );
318  } else if ( !strcmp( dtype, "u4" ) ) {
319  static UINT4TimeVectorSeries series;
320  SUB( LALU4ReadTVectorSeries( &stat, &series, fpIn ), &stat );
321  if ( fpOut ) {
322  SUB( LALU4WriteTVectorSeries( &stat, fpOut, &series ), &stat );
323  }
324  SUB( LALU4DestroyVectorSequence( &stat, &(series.data) ), &stat );
325  } else if ( !strcmp( dtype, "u8" ) ) {
326  static UINT8TimeVectorSeries series;
327  SUB( LALU8ReadTVectorSeries( &stat, &series, fpIn ), &stat );
328  if ( fpOut ) {
329  SUB( LALU8WriteTVectorSeries( &stat, fpOut, &series ), &stat );
330  }
331  SUB( LALU8DestroyVectorSequence( &stat, &(series.data) ), &stat );
332  } else if ( !strcmp( dtype, "s" ) ) {
333  static REAL4TimeVectorSeries series;
334  SUB( LALSReadTVectorSeries( &stat, &series, fpIn ), &stat );
335  if ( fpOut ) {
336  SUB( LALSWriteTVectorSeries( &stat, fpOut, &series ), &stat );
337  }
338  SUB( LALSDestroyVectorSequence( &stat, &(series.data) ), &stat );
339  } else if ( !strcmp( dtype, "d" ) ) {
340  static REAL8TimeVectorSeries series;
341  SUB( LALDReadTVectorSeries( &stat, &series, fpIn ), &stat );
342  if ( fpOut ) {
343  SUB( LALDWriteTVectorSeries( &stat, fpOut, &series ), &stat );
344  }
345  SUB( LALDDestroyVectorSequence( &stat, &(series.data) ), &stat );
346  } else if ( !strcmp( dtype, "c" ) ) {
347  static COMPLEX8TimeVectorSeries series;
348  SUB( LALCReadTVectorSeries( &stat, &series, fpIn ), &stat );
349  if ( fpOut ) {
350  SUB( LALCWriteTVectorSeries( &stat, fpOut, &series ), &stat );
351  }
352  SUB( LALCDestroyVectorSequence( &stat, &(series.data) ), &stat );
353  } else if ( !strcmp( dtype, "z" ) ) {
354  static COMPLEX16TimeVectorSeries series;
355  SUB( LALZReadTVectorSeries( &stat, &series, fpIn ), &stat );
356  if ( fpOut ) {
357  SUB( LALZWriteTVectorSeries( &stat, fpOut, &series ), &stat );
358  }
359  SUB( LALZDestroyVectorSequence( &stat, &(series.data) ), &stat );
360  } else {
362  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
363  LALPrintError( USAGE, *argv );
365  }
366  }
367 
368  /* Read (and possibly write) the data as a time array series. */
369  else if ( !strcmp( stype, "a" ) ) {
370  if ( !strcmp( dtype, "i2" ) ) {
371  static INT2TimeArraySeries series;
372  SUB( LALI2ReadTArraySeries( &stat, &series, fpIn ), &stat );
373  if ( fpOut ) {
374  SUB( LALI2WriteTArraySeries( &stat, fpOut, &series ), &stat );
375  }
376  SUB( LALI2DestroyArraySequence( &stat, &(series.data) ), &stat );
377  } else if ( !strcmp( dtype, "i4" ) ) {
378  static INT4TimeArraySeries series;
379  SUB( LALI4ReadTArraySeries( &stat, &series, fpIn ), &stat );
380  if ( fpOut ) {
381  SUB( LALI4WriteTArraySeries( &stat, fpOut, &series ), &stat );
382  }
383  SUB( LALI4DestroyArraySequence( &stat, &(series.data) ), &stat );
384  } else if ( !strcmp( dtype, "i8" ) ) {
385  static INT8TimeArraySeries series;
386  SUB( LALI8ReadTArraySeries( &stat, &series, fpIn ), &stat );
387  if ( fpOut ) {
388  SUB( LALI8WriteTArraySeries( &stat, fpOut, &series ), &stat );
389  }
390  SUB( LALI8DestroyArraySequence( &stat, &(series.data) ), &stat );
391  } else if ( !strcmp( dtype, "u2" ) ) {
392  static UINT2TimeArraySeries series;
393  SUB( LALU2ReadTArraySeries( &stat, &series, fpIn ), &stat );
394  if ( fpOut ) {
395  SUB( LALU2WriteTArraySeries( &stat, fpOut, &series ), &stat );
396  }
397  SUB( LALU2DestroyArraySequence( &stat, &(series.data) ), &stat );
398  } else if ( !strcmp( dtype, "u4" ) ) {
399  static UINT4TimeArraySeries series;
400  SUB( LALU4ReadTArraySeries( &stat, &series, fpIn ), &stat );
401  if ( fpOut ) {
402  SUB( LALU4WriteTArraySeries( &stat, fpOut, &series ), &stat );
403  }
404  SUB( LALU4DestroyArraySequence( &stat, &(series.data) ), &stat );
405  } else if ( !strcmp( dtype, "u8" ) ) {
406  static UINT8TimeArraySeries series;
407  SUB( LALU8ReadTArraySeries( &stat, &series, fpIn ), &stat );
408  if ( fpOut ) {
409  SUB( LALU8WriteTArraySeries( &stat, fpOut, &series ), &stat );
410  }
411  SUB( LALU8DestroyArraySequence( &stat, &(series.data) ), &stat );
412  } else if ( !strcmp( dtype, "s" ) ) {
413  static REAL4TimeArraySeries series;
414  SUB( LALSReadTArraySeries( &stat, &series, fpIn ), &stat );
415  if ( fpOut ) {
416  SUB( LALSWriteTArraySeries( &stat, fpOut, &series ), &stat );
417  }
418  SUB( LALSDestroyArraySequence( &stat, &(series.data) ), &stat );
419  } else if ( !strcmp( dtype, "d" ) ) {
420  static REAL8TimeArraySeries series;
421  SUB( LALDReadTArraySeries( &stat, &series, fpIn ), &stat );
422  if ( fpOut ) {
423  SUB( LALDWriteTArraySeries( &stat, fpOut, &series ), &stat );
424  }
425  SUB( LALDDestroyArraySequence( &stat, &(series.data) ), &stat );
426  } else if ( !strcmp( dtype, "c" ) ) {
427  static COMPLEX8TimeArraySeries series;
428  SUB( LALCReadTArraySeries( &stat, &series, fpIn ), &stat );
429  if ( fpOut ) {
430  SUB( LALCWriteTArraySeries( &stat, fpOut, &series ), &stat );
431  }
432  SUB( LALCDestroyArraySequence( &stat, &(series.data) ), &stat );
433  } else if ( !strcmp( dtype, "z" ) ) {
434  static COMPLEX16TimeArraySeries series;
435  SUB( LALZReadTArraySeries( &stat, &series, fpIn ), &stat );
436  if ( fpOut ) {
437  SUB( LALZWriteTArraySeries( &stat, fpOut, &series ), &stat );
438  }
439  SUB( LALZDestroyArraySequence( &stat, &(series.data) ), &stat );
440  } else {
442  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
443  LALPrintError( USAGE, *argv );
445  }
446  }
447 
448  /* Read (and possibly write) the data as a frequency series. */
449  else if ( !strcmp( stype, "f" ) ) {
450  if ( !strcmp( dtype, "i2" ) ) {
451  static INT2FrequencySeries series;
452  SUB( LALI2ReadFSeries( &stat, &series, fpIn ), &stat );
453  if ( fpOut ) {
454  SUB( LALI2WriteFSeries( &stat, fpOut, &series ), &stat );
455  }
456  SUB( LALI2DestroyVector( &stat, &(series.data) ), &stat );
457  } else if ( !strcmp( dtype, "i4" ) ) {
458  static INT4FrequencySeries series;
459  SUB( LALI4ReadFSeries( &stat, &series, fpIn ), &stat );
460  if ( fpOut ) {
461  SUB( LALI4WriteFSeries( &stat, fpOut, &series ), &stat );
462  }
463  SUB( LALI4DestroyVector( &stat, &(series.data) ), &stat );
464  } else if ( !strcmp( dtype, "i8" ) ) {
465  static INT8FrequencySeries series;
466  SUB( LALI8ReadFSeries( &stat, &series, fpIn ), &stat );
467  if ( fpOut ) {
468  SUB( LALI8WriteFSeries( &stat, fpOut, &series ), &stat );
469  }
470  SUB( LALI8DestroyVector( &stat, &(series.data) ), &stat );
471  } else if ( !strcmp( dtype, "u2" ) ) {
472  static UINT2FrequencySeries series;
473  SUB( LALU2ReadFSeries( &stat, &series, fpIn ), &stat );
474  if ( fpOut ) {
475  SUB( LALU2WriteFSeries( &stat, fpOut, &series ), &stat );
476  }
477  SUB( LALU2DestroyVector( &stat, &(series.data) ), &stat );
478  } else if ( !strcmp( dtype, "u4" ) ) {
479  static UINT4FrequencySeries series;
480  SUB( LALU4ReadFSeries( &stat, &series, fpIn ), &stat );
481  if ( fpOut ) {
482  SUB( LALU4WriteFSeries( &stat, fpOut, &series ), &stat );
483  }
484  SUB( LALU4DestroyVector( &stat, &(series.data) ), &stat );
485  } else if ( !strcmp( dtype, "u8" ) ) {
486  static UINT8FrequencySeries series;
487  SUB( LALU8ReadFSeries( &stat, &series, fpIn ), &stat );
488  if ( fpOut ) {
489  SUB( LALU8WriteFSeries( &stat, fpOut, &series ), &stat );
490  }
491  SUB( LALU8DestroyVector( &stat, &(series.data) ), &stat );
492  } else if ( !strcmp( dtype, "s" ) ) {
493  static REAL4FrequencySeries series;
494  SUB( LALSReadFSeries( &stat, &series, fpIn ), &stat );
495  if ( fpOut ) {
496  SUB( LALSWriteFSeries( &stat, fpOut, &series ), &stat );
497  }
498  SUB( LALSDestroyVector( &stat, &(series.data) ), &stat );
499  } else if ( !strcmp( dtype, "d" ) ) {
500  static REAL8FrequencySeries series;
501  SUB( LALDReadFSeries( &stat, &series, fpIn ), &stat );
502  if ( fpOut ) {
503  SUB( LALDWriteFSeries( &stat, fpOut, &series ), &stat );
504  }
505  SUB( LALDDestroyVector( &stat, &(series.data) ), &stat );
506  } else if ( !strcmp( dtype, "c" ) ) {
507  static COMPLEX8FrequencySeries series;
508  SUB( LALCReadFSeries( &stat, &series, fpIn ), &stat );
509  if ( fpOut ) {
510  SUB( LALCWriteFSeries( &stat, fpOut, &series ), &stat );
511  }
512  SUB( LALCDestroyVector( &stat, &(series.data) ), &stat );
513  } else if ( !strcmp( dtype, "z" ) ) {
514  static COMPLEX16FrequencySeries series;
515  SUB( LALZReadFSeries( &stat, &series, fpIn ), &stat );
516  if ( fpOut ) {
517  SUB( LALZWriteFSeries( &stat, fpOut, &series ), &stat );
518  }
519  SUB( LALZDestroyVector( &stat, &(series.data) ), &stat );
520  } else {
522  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
523  LALPrintError( USAGE, *argv );
525  }
526  }
527 
528  /* Unrecognized series type. */
529  else {
531  STREAMSERIESINPUTTESTC_MSGEARG, 0 );
532  LALPrintError( USAGE, *argv );
534  }
535 
536  /* Close files, cleanup, and exit. */
537  if ( infile && strcmp( infile, "stdin" ) )
538  fclose( fpIn );
539  if ( outfile && strcmp( outfile, "stdout" ) )
540  fclose( fpOut );
542  INFO( STREAMSERIESINPUTTESTC_MSGENORM );
544 }
545 /** \endcond */
#define USAGE
Definition: GzipTest.c:27
void LALCheckMemoryLeaks(void)
Definition: LALMalloc.c:784
#define SUB(func, statusptr)
#define ERROR(code, msg, statement)
#define INFO(statement)
void LALDReadTArraySeries(LALStatus *status, REAL8TimeArraySeries *series, FILE *stream)
void LALZReadTVectorSeries(LALStatus *status, COMPLEX16TimeVectorSeries *series, FILE *stream)
void LALU8ReadTVectorSeries(LALStatus *status, UINT8TimeVectorSeries *series, FILE *stream)
void LALCReadTVectorSeries(LALStatus *status, COMPLEX8TimeVectorSeries *series, FILE *stream)
void LALDReadTVectorSeries(LALStatus *status, REAL8TimeVectorSeries *series, FILE *stream)
void LALZReadTArraySeries(LALStatus *status, COMPLEX16TimeArraySeries *series, FILE *stream)
void LALZReadFSeries(LALStatus *status, COMPLEX16FrequencySeries *series, FILE *stream)
void LALU4ReadFSeries(LALStatus *status, UINT4FrequencySeries *series, FILE *stream)
void LALSReadTVectorSeries(LALStatus *status, REAL4TimeVectorSeries *series, FILE *stream)
void LALI8ReadTArraySeries(LALStatus *status, INT8TimeArraySeries *series, FILE *stream)
void LALSReadTArraySeries(LALStatus *status, REAL4TimeArraySeries *series, FILE *stream)
void LALU8ReadFSeries(LALStatus *status, UINT8FrequencySeries *series, FILE *stream)
void LALI2ReadTVectorSeries(LALStatus *status, INT2TimeVectorSeries *series, FILE *stream)
void LALCReadFSeries(LALStatus *status, COMPLEX8FrequencySeries *series, FILE *stream)
void LALU4ReadTVectorSeries(LALStatus *status, UINT4TimeVectorSeries *series, FILE *stream)
void LALDReadFSeries(LALStatus *status, REAL8FrequencySeries *series, FILE *stream)
void LALI2ReadTArraySeries(LALStatus *status, INT2TimeArraySeries *series, FILE *stream)
void LALCReadTSeries(LALStatus *status, COMPLEX8TimeSeries *series, FILE *stream)
void LALI4ReadFSeries(LALStatus *status, INT4FrequencySeries *series, FILE *stream)
void LALSReadTSeries(LALStatus *status, REAL4TimeSeries *series, FILE *stream)
void LALI2ReadTSeries(LALStatus *status, INT2TimeSeries *series, FILE *stream)
void LALI4ReadTArraySeries(LALStatus *status, INT4TimeArraySeries *series, FILE *stream)
void LALU4ReadTArraySeries(LALStatus *status, UINT4TimeArraySeries *series, FILE *stream)
void LALI4ReadTVectorSeries(LALStatus *status, INT4TimeVectorSeries *series, FILE *stream)
void LALU8ReadTSeries(LALStatus *status, UINT8TimeSeries *series, FILE *stream)
void LALI8ReadTVectorSeries(LALStatus *status, INT8TimeVectorSeries *series, FILE *stream)
void LALU4ReadTSeries(LALStatus *status, UINT4TimeSeries *series, FILE *stream)
void LALCReadTArraySeries(LALStatus *status, COMPLEX8TimeArraySeries *series, FILE *stream)
void LALZReadTSeries(LALStatus *status, COMPLEX16TimeSeries *series, FILE *stream)
void LALU2ReadTArraySeries(LALStatus *status, UINT2TimeArraySeries *series, FILE *stream)
void LALI8ReadTSeries(LALStatus *status, INT8TimeSeries *series, FILE *stream)
void LALU2ReadTVectorSeries(LALStatus *status, UINT2TimeVectorSeries *series, FILE *stream)
void LALU8ReadTArraySeries(LALStatus *status, UINT8TimeArraySeries *series, FILE *stream)
void LALI4ReadTSeries(LALStatus *status, INT4TimeSeries *series, FILE *stream)
void LALU2ReadTSeries(LALStatus *status, UINT2TimeSeries *series, FILE *stream)
void LALU2ReadFSeries(LALStatus *status, UINT2FrequencySeries *series, FILE *stream)
void LALDReadTSeries(LALStatus *status, REAL8TimeSeries *series, FILE *stream)
void LALSReadFSeries(LALStatus *status, REAL4FrequencySeries *series, FILE *stream)
void LALI2ReadFSeries(LALStatus *status, INT2FrequencySeries *series, FILE *stream)
void LALI8ReadFSeries(LALStatus *status, INT8FrequencySeries *series, FILE *stream)
void LALU8WriteTVectorSeries(LALStatus *status, FILE *stream, UINT8TimeVectorSeries *series)
void LALU2WriteTSeries(LALStatus *status, FILE *stream, UINT2TimeSeries *series)
void LALI2WriteTVectorSeries(LALStatus *status, FILE *stream, INT2TimeVectorSeries *series)
void LALCWriteTArraySeries(LALStatus *status, FILE *stream, COMPLEX8TimeArraySeries *series)
void LALU2WriteFSeries(LALStatus *status, FILE *stream, UINT2FrequencySeries *series)
void LALSWriteTArraySeries(LALStatus *status, FILE *stream, REAL4TimeArraySeries *series)
void LALU4WriteTVectorSeries(LALStatus *status, FILE *stream, UINT4TimeVectorSeries *series)
void LALU8WriteFSeries(LALStatus *status, FILE *stream, UINT8FrequencySeries *series)
void LALU4WriteFSeries(LALStatus *status, FILE *stream, UINT4FrequencySeries *series)
void LALSWriteTVectorSeries(LALStatus *status, FILE *stream, REAL4TimeVectorSeries *series)
void LALZWriteTVectorSeries(LALStatus *status, FILE *stream, COMPLEX16TimeVectorSeries *series)
void LALU8WriteTArraySeries(LALStatus *status, FILE *stream, UINT8TimeArraySeries *series)
void LALU4WriteTSeries(LALStatus *status, FILE *stream, UINT4TimeSeries *series)
void LALCWriteTVectorSeries(LALStatus *status, FILE *stream, COMPLEX8TimeVectorSeries *series)
void LALI8WriteFSeries(LALStatus *status, FILE *stream, INT8FrequencySeries *series)
void LALDWriteTArraySeries(LALStatus *status, FILE *stream, REAL8TimeArraySeries *series)
void LALU2WriteTArraySeries(LALStatus *status, FILE *stream, UINT2TimeArraySeries *series)
void LALDWriteTVectorSeries(LALStatus *status, FILE *stream, REAL8TimeVectorSeries *series)
void LALI4WriteFSeries(LALStatus *status, FILE *stream, INT4FrequencySeries *series)
void LALCWriteFSeries(LALStatus *status, FILE *stream, COMPLEX8FrequencySeries *series)
void LALZWriteTSeries(LALStatus *status, FILE *stream, COMPLEX16TimeSeries *series)
void LALZWriteTArraySeries(LALStatus *status, FILE *stream, COMPLEX16TimeArraySeries *series)
void LALI4WriteTVectorSeries(LALStatus *status, FILE *stream, INT4TimeVectorSeries *series)
void LALI4WriteTSeries(LALStatus *status, FILE *stream, INT4TimeSeries *series)
void LALDWriteTSeries(LALStatus *status, FILE *stream, REAL8TimeSeries *series)
void LALI2WriteTArraySeries(LALStatus *status, FILE *stream, INT2TimeArraySeries *series)
void LALSWriteTSeries(LALStatus *status, FILE *stream, REAL4TimeSeries *series)
void LALI8WriteTSeries(LALStatus *status, FILE *stream, INT8TimeSeries *series)
void LALI8WriteTArraySeries(LALStatus *status, FILE *stream, INT8TimeArraySeries *series)
void LALU2WriteTVectorSeries(LALStatus *status, FILE *stream, UINT2TimeVectorSeries *series)
void LALI4WriteTArraySeries(LALStatus *status, FILE *stream, INT4TimeArraySeries *series)
void LALU8WriteTSeries(LALStatus *status, FILE *stream, UINT8TimeSeries *series)
void LALDWriteFSeries(LALStatus *status, FILE *stream, REAL8FrequencySeries *series)
void LALI2WriteTSeries(LALStatus *status, FILE *stream, INT2TimeSeries *series)
void LALU4WriteTArraySeries(LALStatus *status, FILE *stream, UINT4TimeArraySeries *series)
void LALI8WriteTVectorSeries(LALStatus *status, FILE *stream, INT8TimeVectorSeries *series)
void LALCWriteTSeries(LALStatus *status, FILE *stream, COMPLEX8TimeSeries *series)
void LALZWriteFSeries(LALStatus *status, FILE *stream, COMPLEX16FrequencySeries *series)
void LALI2WriteFSeries(LALStatus *status, FILE *stream, INT2FrequencySeries *series)
void LALSWriteFSeries(LALStatus *status, FILE *stream, REAL4FrequencySeries *series)
#define STREAMSERIESINPUTTESTC_ENORM
Normal exit.
#define STREAMSERIESINPUTTESTC_EFILE
Could not open file.
#define STREAMSERIESINPUTTESTC_EARG
Error parsing arguments.
int main(int argc, char *argv[])
Definition: cache.c:25
void LALSDestroyVectorSequence(LALStatus *status, REAL4VectorSequence **vectorSequence)
void LALU2DestroyVectorSequence(LALStatus *status, UINT2VectorSequence **vectorSequence)
void LALI8DestroyArraySequence(LALStatus *status, INT8ArraySequence **arraySeqence)
void LALI4DestroyArraySequence(LALStatus *status, INT4ArraySequence **arraySeqence)
void LALI4DestroyVectorSequence(LALStatus *status, INT4VectorSequence **vectorSequence)
void LALU4DestroyVectorSequence(LALStatus *status, UINT4VectorSequence **vectorSequence)
void LALI2DestroyArraySequence(LALStatus *status, INT2ArraySequence **arraySeqence)
void LALCDestroyArraySequence(LALStatus *status, COMPLEX8ArraySequence **arraySeqence)
void LALDDestroyVectorSequence(LALStatus *status, REAL8VectorSequence **vectorSequence)
void LALU8DestroyVectorSequence(LALStatus *status, UINT8VectorSequence **vectorSequence)
void LALI2DestroyVectorSequence(LALStatus *status, INT2VectorSequence **vectorSequence)
void LALCDestroyVectorSequence(LALStatus *status, COMPLEX8VectorSequence **vectorSequence)
void LALU8DestroyArraySequence(LALStatus *status, UINT8ArraySequence **arraySeqence)
void LALZDestroyArraySequence(LALStatus *status, COMPLEX16ArraySequence **arraySeqence)
void LALU2DestroyArraySequence(LALStatus *status, UINT2ArraySequence **arraySeqence)
void LALSDestroyArraySequence(LALStatus *status, REAL4ArraySequence **arraySeqence)
void LALU4DestroyArraySequence(LALStatus *status, UINT4ArraySequence **arraySeqence)
void LALDDestroyArraySequence(LALStatus *status, REAL8ArraySequence **arraySeqence)
void LALZDestroyVectorSequence(LALStatus *status, COMPLEX16VectorSequence **vectorSequence)
void LALI8DestroyVectorSequence(LALStatus *status, INT8VectorSequence **vectorSequence)
char CHAR
One-byte signed integer, see Headers LAL(Atomic)Datatypes.h for more details.
int32_t INT4
Four-byte signed integer.
int LALPrintError(const char *fmt,...)
Definition: LALError.c:46
void LALZDestroyVector(LALStatus *, COMPLEX16Vector **)
void LALI4DestroyVector(LALStatus *, INT4Vector **)
void LALCDestroyVector(LALStatus *, COMPLEX8Vector **)
void LALDDestroyVector(LALStatus *, REAL8Vector **)
void LALSDestroyVector(LALStatus *, REAL4Vector **)
void LALU2DestroyVector(LALStatus *, UINT2Vector **)
void LALU8DestroyVector(LALStatus *, UINT8Vector **)
void LALU4DestroyVector(LALStatus *, UINT4Vector **)
void LALI8DestroyVector(LALStatus *, INT8Vector **)
void LALI2DestroyVector(LALStatus *, INT2Vector **)
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:909
COMPLEX16Sequence * data
Definition: LALDatatypes.h:915
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:806
COMPLEX16ArraySequence * data
Definition: LALDatatypes.h:812
Time series of COMPLEX16 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:600
COMPLEX16Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:606
Time series of COMPLEX16 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:703
COMPLEX16VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:709
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:899
COMPLEX8Sequence * data
Definition: LALDatatypes.h:905
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:796
COMPLEX8ArraySequence * data
Definition: LALDatatypes.h:802
Time series of COMPLEX8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:590
COMPLEX8Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:596
Time series of COMPLEX8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:693
COMPLEX8VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:699
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:819
INT2Sequence * data
Definition: LALDatatypes.h:825
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:716
INT2ArraySequence * data
Definition: LALDatatypes.h:722
Time series of INT2 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:511
INT2Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:517
Time series of INT2 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:613
INT2VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:619
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:839
INT4Sequence * data
Definition: LALDatatypes.h:845
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:736
INT4ArraySequence * data
Definition: LALDatatypes.h:742
Time series of INT4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:530
INT4Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:536
Time series of INT4 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:633
INT4VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:639
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:859
INT8Sequence * data
Definition: LALDatatypes.h:865
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:756
INT8ArraySequence * data
Definition: LALDatatypes.h:762
Time series of INT8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:550
INT8Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:556
Time series of INT8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:653
INT8VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:659
LAL status structure, see The LALStatus structure for more details.
Definition: LALDatatypes.h:947
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:879
REAL4Sequence * data
Definition: LALDatatypes.h:885
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:776
REAL4ArraySequence * data
Definition: LALDatatypes.h:782
Time series of REAL4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:570
REAL4Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:576
Time series of REAL4 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:673
REAL4VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:679
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:889
REAL8Sequence * data
Definition: LALDatatypes.h:895
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:786
REAL8ArraySequence * data
Definition: LALDatatypes.h:792
Time series of REAL8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:580
REAL8Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:586
Time series of REAL8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:683
REAL8VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:689
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:829
UINT2Sequence * data
Definition: LALDatatypes.h:835
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:726
UINT2ArraySequence * data
Definition: LALDatatypes.h:732
Time series of UINT2 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:521
UINT2Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:526
Time series of UINT2 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:623
UINT2VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:629
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:849
UINT4Sequence * data
Definition: LALDatatypes.h:855
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:746
UINT4ArraySequence * data
Definition: LALDatatypes.h:752
Time series of UINT4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:540
UINT4Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:546
Time series of UINT4 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:643
UINT4VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:649
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:869
UINT8Sequence * data
Definition: LALDatatypes.h:875
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:766
UINT8ArraySequence * data
Definition: LALDatatypes.h:772
Time series of UINT8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:560
UINT8Sequence * data
The sequence of sampled data.
Definition: LALDatatypes.h:566
Time series of UINT8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:663
UINT8VectorSequence * data
The sequence of sampled data vectors.
Definition: LALDatatypes.h:669