Loading [MathJax]/extensions/TeX/AMSsymbols.js
LAL 7.7.0.1-5e288d3
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 ) \
99if ( 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} \
106else (void)(0)
107
108#define INFO( statement ) \
109if ( 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} \
115else (void)(0)
116
117#define SUB( func, statusptr ) \
118if ( (func), (statusptr)->statusCode ) \
119{ \
120 ERROR( STREAMSERIESINPUTTESTC_ESUB, STREAMSERIESINPUTTESTC_MSGESUB,\
121 "Function call \"" #func "\" failed:" ); \
122 return STREAMSERIESINPUTTESTC_ESUB; \
123} \
124else (void)(0)
125
126int
127main(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