LAL  7.5.0.1-08ee4f4
StreamInput.h
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 #ifndef _STREAMINPUT_H
21 #define _STREAMINPUT_H
22 
23 #include <lal/LALStdlib.h>
24 
25 #ifdef __cplusplus
26 extern "C" {
27 #endif
28 
29 /**
30  * \defgroup StreamInput_h Header StreamInput.h
31  * \ingroup lal_support
32  * \author Creighton, T. D.
33  *
34  * \brief Provides routines to read data from an open stream and store it in LAL data structures.
35  *
36  * ### Synopsis ###
37  *
38  * \code
39  * #include "StreamInput.h"
40  * \endcode
41  *
42  * This header provides prototypes for routines that construct
43  * LAL data structures using the data from a file (or other I/O) stream.
44  * The routines do not provide a system-level interface to create files
45  * and open or close file streams; they simply assume that they have been
46  * passed an open, readable stream. Nonetheless, because they involve
47  * I/O stream manipulation, these routines are placed in the
48  * \c lalsupport library rather than in \c lal proper.
49  *
50  * The routines in \ref StreamVectorInput_c and
51  * \ref StreamVectorSequenceInput_c are compartmentalized in such a way
52  * that they can easily be converted if the LAL specification later
53  * changes the way in which I/O streams are handled. In partucular, the
54  * only file I/O commands used are <tt>fgets()</tt> and <tt>feof()</tt>.
55  * Thus the upgrade would involve only the following global changes:
56  * <ol>
57  * <li> Replace all occurrences of <tt>FILE *</tt> with the name of the
58  * LAL I/O stream pointer type.</li>
59  * <li> Replace all occurrences of <tt>fgets()</tt> and <tt>feof()</tt> with
60  * equivalent LAL functions.</li>
61  * </ol>
62  * In particular, there is no need to translate routines such as
63  * <tt>fscanf()</tt>; one should simply read data into a LAL
64  * \c CHARVector and then use <tt>sscanf()</tt> to format the input.
65  * This is the approach used in the numerical input routines in
66  * \ref StreamVectorInput_c and \ref StreamVectorSequenceInput_c.
67  *
68  * The routines in \ref StreamSequenceInput_c are less robust but much
69  * more efficient: they use <tt>fscanf()</tt> to parse the input stream
70  * directly. They are intended primarily for test programs that may need
71  * to read large datafiles of undetermined length. The routines in
72  * \ref StreamSeriesInput_c also parse the
73  * input stream directly using <tt>fscanf()</tt>, to avoid potentially
74  * crippling computational overhead.
75  *
76  */
77 /** @{ */
78 
79 /** \name Error Codes */ /** @{ */
80 #define STREAMINPUTH_ENUL 1 /**< Unexpected null pointer in arguments */
81 #define STREAMINPUTH_EOUT 2 /**< Output handle points to a non-null pointer */
82 #define STREAMINPUTH_EMEM 3 /**< Memory allocation error */
83 #define STREAMINPUTH_ELEN 4 /**< No numbers were read */
84 #define STREAMINPUTH_ESLEN 5 /**< Not enough numbers read to fill sequence */
85 #define STREAMINPUTH_EVLEN 6 /**< Could not determine complex vectorLength */
86 #define STREAMINPUTH_EDLEN 7 /**< Dimension lengths inconsistent or not given */
87 #define STREAMINPUTH_EDIM 8 /**< Inconsistent or non-positive arrayDim value */
88 #define STREAMINPUTH_EFMT 9 /**< Badly formatted number */
89 #define STREAMINPUTH_EBUF 10 /**< BUFFSIZE not a multiple of largest complex type size */
90 /** @} */
91 /** @} */
92 
93 #define STREAMINPUTH_MSGENUL "Unexpected null pointer in arguments"
94 #define STREAMINPUTH_MSGEOUT "Output handle points to a non-null pointer"
95 #define STREAMINPUTH_MSGEMEM "Memory allocation error"
96 #define STREAMINPUTH_MSGELEN "No numbers were read"
97 #define STREAMINPUTH_MSGESLEN "Not enough numbers read to fill sequence"
98 #define STREAMINPUTH_MSGEVLEN "Could not determine complex vectorLength"
99 #define STREAMINPUTH_MSGEDLEN "Dimension lengths inconsistent or not given"
100 #define STREAMINPUTH_MSGEDIM "Inconsistent or non-positive arrayDim value"
101 #define STREAMINPUTH_MSGEFMT "Badly formatted number"
102 #define STREAMINPUTH_MSGEBUF "BUFFSIZE not a multiple of largest complex type size"
103 
104 
105 /* Function prototypes. */
106 
107 
108 /**
109  * \defgroup StreamVectorInput_c Module StreamVectorInput.c
110  * \ingroup StreamInput_h
111  * \author Creighton, T. D.
112  *
113  * \brief Reads data from a single line in an input stream.
114  *
115  * ### Description ###
116  *
117  * These routines read ASCII data from the I/O stream <tt>*stream</tt>
118  * until a newline or the end-of-input is reached. (The line can be of
119  * arbitrary length; the data is temporarily stored in a linked list of
120  * buffers.) Once read, a LAL vector structure <tt>**vector</tt> is
121  * created and the data stored in it. The routine passes back a pointer
122  * to the new structure. For the numerical routines, the \c strict
123  * parameter determines whether the routine will do strict error checking
124  * based on the contents of the input stream (see below).
125  *
126  * The basic routine in this module is <tt>LALCHARReadVector()</tt>, which
127  * simply stores bytes read from <tt>*stream</tt> until the next newline
128  * character <tt>'\n'</tt>, null character <tt>'\0'</tt>, or the end of the
129  * input as determined by the <tt>feof()</tt> function. The vector
130  * includes the newline (if present), and also an explicit <tt>'\0'</tt> at
131  * the end, if one was not already present. This routine should
132  * \e not be used to read a binary data stream, which are not
133  * logically divided into ``lines''. Unless it aborts due to invalid
134  * arguments or failed memory allocation, <tt>LALCHARReadVector()</tt> will
135  * always return successfully regardless of the contents of the input
136  * stream; <tt>*vector</tt> will created containing at least a single
137  * <tt>'\0'</tt> terminator, if nothing else.
138  *
139  * The other routines in this module use <tt>LALCHARReadVector()</tt> to
140  * read a line, and then parse it into numerical datatypes using the
141  * corresponding routine in the \ref StringConvert.c.
142  * Conversion stops when the routine encounters a character that cannot
143  * be parsed as part of a number. If \c strict is 0, the routine
144  * will fail only due to invalid arguments or memory allocation failure,
145  * not from a poorly-formatted input stream; if no numbers are read,
146  * <tt>*vector</tt> will remain \c NULL, but no error will be reported.
147  * (In this mode, the calling routine should always test the output
148  * before trying to dereference it, in order to avoid segmentation
149  * violations.) If \c strict is nonzero, the routine will report an
150  * error if the input stream was poorly formatted, either an \c ELEN
151  * error if no numbers were read, or \c EFMT if a character was
152  * encountered that was neither part of a parseable number nor
153  * whitespace.
154  *
155  * Note that \c strict=0 allows an input stream to contain blank
156  * lines or comments. A comment begins with any character that cannot
157  * occur in a valid number, which will cause the numerical parser to skip
158  * the rest of the line. The usual comment delimiters are <tt>'#'</tt> and
159  * <tt>'%'</tt>, but any character except <tt>'+'</tt> <tt>'-'</tt>,
160  * <tt>'e'</tt>, <tt>'E'</tt>, <tt>'.'</tt>, digits, and whitespace will work.
161  *
162  */
163 /** @{ */
164 void LALCHARReadVector( LALStatus *status, CHARVector **vector, FILE *stream );
165 void LALI2ReadVector( LALStatus *status, INT2Vector **vector, FILE *stream, BOOLEAN strict );
166 void LALI4ReadVector( LALStatus *status, INT4Vector **vector, FILE *stream, BOOLEAN strict );
167 void LALI8ReadVector( LALStatus *status, INT8Vector **vector, FILE *stream, BOOLEAN strict );
168 void LALU2ReadVector( LALStatus *status, UINT2Vector **vector, FILE *stream, BOOLEAN strict );
169 void LALU4ReadVector( LALStatus *status, UINT4Vector **vector, FILE *stream, BOOLEAN strict );
170 void LALU8ReadVector( LALStatus *status, UINT8Vector **vector, FILE *stream, BOOLEAN strict );
171 void LALSReadVector( LALStatus *status, REAL4Vector **vector, FILE *stream, BOOLEAN strict );
172 void LALDReadVector( LALStatus *status, REAL8Vector **vector, FILE *stream, BOOLEAN strict );
173 /** @} */
174 
175 
176 /**
177  * \defgroup StreamVectorSequenceInput_c Module StreamVectorSequenceInput.c
178  * \ingroup StreamInput_h
179  * \author Creighton, T. D.
180  *
181  * \brief Reads the entire contents of an input stream into a vector sequence.
182  *
183  * ### Description ###
184  *
185  * These routines read data from the I/O stream <tt>*stream</tt> until the
186  * end-of-input is reached. Each line is stored as a data vector, and
187  * the vectors are combined into a LAL vector sequence structure
188  * <tt>**sequence</tt>. Each line vector is padded with zeros to match the
189  * length of the longest line. The routine passes back a pointer to the
190  * new structure.
191  *
192  * The routine <tt>LALCHARReadVectorSequence()</tt> essentially stores an
193  * image of the I/O stream as a sequence of lines padded with <tt>'\0'</tt>
194  * characters. However, it will skip over any empty lines, which occur,
195  * for instance, when the end-of-input or a null character <tt>'\0'</tt>
196  * occurs immediately following a newline character <tt>'\n'</tt>. The
197  * numeric routines will additionally skip blank lines, comment lines, or
198  * other input lines that have no parseable numbers in them. (As with
199  * the routines in \ref StreamVectorInput.c, comment in sindicated by a
200  * <tt>#</tt> sign at the beginning of a line or a <tt>%</tt> sign anywhere
201  * in the line, signifying that the remainder of the line is to be
202  * ignored.) However, if an input line contains \e any parseable
203  * data, then the corresponding vector in the vector sequence will be
204  * allocated (and padded with zeros, if it is shorter than the longest
205  * line).
206  *
207  * ### Algorithm ###
208  *
209  * These functions first create a linked list of vectors, using the
210  * routines in \ref StreamVectorInput.c to read them in. Once the list
211  * is complete, the longest vector length is determined, and the vector
212  * sequence is created and filled.
213  *
214  * The numeric routines skip over blank, comment, or otherwise
215  * unparseable lines by catching and handling the \c LEN error code
216  * generated by the vector input routine. However, it is worth pointing
217  * out that the vector input routine will have generated an error message
218  * if the error reporting bit in \c lalDebugLevel was set. The
219  * vector sequence input routines will therefore generate a followup
220  * messages indicating that the preceding error was successfully dealt
221  * with. So you may see pairs of \c ABORT: and \c CONTINUE:
222  * error messages when reading files containing blank or comment lines.
223  *
224  */
225 /** @{ */
226 void LALCHARReadVectorSequence( LALStatus *status, CHARVectorSequence **sequence, FILE *stream );
227 void LALI2ReadVectorSequence( LALStatus *status, INT2VectorSequence **sequence, FILE *stream );
228 void LALI4ReadVectorSequence( LALStatus *status, INT4VectorSequence **sequence, FILE *stream );
229 void LALI8ReadVectorSequence( LALStatus *status, INT8VectorSequence **sequence, FILE *stream );
230 void LALU2ReadVectorSequence( LALStatus *status, UINT2VectorSequence **sequence, FILE *stream );
231 void LALU4ReadVectorSequence( LALStatus *status, UINT4VectorSequence **sequence, FILE *stream );
232 void LALU8ReadVectorSequence( LALStatus *status, UINT8VectorSequence **sequence, FILE *stream );
233 void LALSReadVectorSequence( LALStatus *status, REAL4VectorSequence **sequence, FILE *stream );
234 void LALDReadVectorSequence( LALStatus *status, REAL8VectorSequence **sequence, FILE *stream );
235 /** @} */
236 
237 
238 /**
239  * \defgroup StreamSequenceInput_c Module StreamSequenceInput.c
240  * \ingroup StreamInput_h
241  * \author Creighton, T. D.
242  *
243  * \brief Converts an input stream into a data sequence.
244  *
245  * ### Description ###
246  *
247  * These routines read data from the I/O stream <tt>*stream</tt> until the
248  * end-of-input is reached. (The input can be of arbitrary length; the
249  * data is temporarily stored in a linked list of buffers.) Once read, a
250  * LAL sequence structure <tt>**sequence</tt> is created and the data
251  * stored in it. The routine passes back a pointer to the new structure.
252  *
253  * The routine <tt>LALCHARReadSequence()</tt> simply stores the entire
254  * remaining contents of the I/O stream in a \c CHARSequence,
255  * including whitespace, newline <tt>'\n'</tt>, null <tt>'\0'</tt>, or other
256  * special characters. (It can in principle be used to read and store
257  * binary data as a sequence of bytes. Note that the end-of-transmission
258  * byte <tt>'\004'</tt> does \e not necessarily mark the end-of-input,
259  * which is instead determined using the <tt>feof()</tt> function.)
260  *
261  * The other routines in this module interpret the input as a sequence of
262  * whitespace-separated numbers, which are parsed directly from the I/O
263  * stream using <tt>fscanf()</tt>. The sequence is terminated at the
264  * end-of-input or at any point where <tt>fscanf()</tt> is unable to parse
265  * the input.
266  *
267  * For the complex input routines <tt>LALCReadSequence()</tt> and
268  * <tt>LALZReadSequence()</tt>, each pair of numbers read are interpreted
269  * as the real and imaginary parts of a complex number. The usual input
270  * format is for each line to contain a pair of numbers, but
271  * <tt>fscanf()</tt> does not distinguish between newline and other
272  * whitespace characters, so neither do these routines.
273  *
274  * Unlike the numerical routines in other \ref StreamInput.h modules,
275  * these routines have no mechanism to deal with comments; every
276  * whitespace-delimited substring will be treated as a number.
277  *
278  * ### Algorithm ###
279  *
280  * These routines read data into a linked list of buffers, to allow
281  * memory allocation to occur in batches for improved efficiency. The
282  * numerical routines also use <tt>fscanf()</tt> directly on the I/O stream
283  * to avoid the inefficiency of storing and parsing intermediate
284  * character strings, as is done by the corresponding vector sequence
285  * input routines. This reduces robustness and versatility (as
286  * indicated, for instance, by the inability of dealing with comments),
287  * and increases the number of potential points-of-failure (by requiring
288  * a consistent implementation across platforms of <tt>getc()</tt> and
289  * <tt>fscanf()</tt>, rather than the single function <tt>fgets()</tt> used
290  * by other stream input routines). However, these sacrifices are
291  * necessary to allow LAL applications to ingest large quantities of
292  * numerical data efficiently.
293  *
294  */
295 /** @{ */
296 int XLALCHARReadSequence( CHARSequence **sequence, FILE *stream );
297 void LALCHARReadSequence( LALStatus *status, CHARSequence **sequence, FILE *stream );
298 void LALI2ReadSequence( LALStatus *status, INT2Sequence **sequence, FILE *stream );
299 void LALI4ReadSequence( LALStatus *status, INT4Sequence **sequence, FILE *stream );
300 void LALI8ReadSequence( LALStatus *status, INT8Sequence **sequence, FILE *stream );
301 void LALU2ReadSequence( LALStatus *status, UINT2Sequence **sequence, FILE *stream );
302 void LALU4ReadSequence( LALStatus *status, UINT4Sequence **sequence, FILE *stream );
303 void LALU8ReadSequence( LALStatus *status, UINT8Sequence **sequence, FILE *stream );
304 void LALSReadSequence( LALStatus *status, REAL4Sequence **sequence, FILE *stream );
305 void LALDReadSequence( LALStatus *status, REAL8Sequence **sequence, FILE *stream );
306 void LALCReadSequence( LALStatus *status, COMPLEX8Sequence **sequence, FILE *stream );
307 void LALZReadSequence( LALStatus *status, COMPLEX16Sequence **sequence, FILE *stream );
308 /** @} */
309 
310 
311 
312 void
313 LALI2ReadTSeries( LALStatus *status, INT2TimeSeries *series, FILE *stream );
314 void
315 LALI4ReadTSeries( LALStatus *status, INT4TimeSeries *series, FILE *stream );
316 void
317 LALI8ReadTSeries( LALStatus *status, INT8TimeSeries *series, FILE *stream );
318 void
320 void
322 void
324 void
325 LALSReadTSeries( LALStatus *status, REAL4TimeSeries *series, FILE *stream );
326 void
327 LALDReadTSeries( LALStatus *status, REAL8TimeSeries *series, FILE *stream );
328 void
330 void
332 
333 void
335 void
337 void
339 void
341 void
343 void
345 void
347 void
349 void
351 void
353 
354 void
356 void
358 void
360 void
362 void
364 void
366 void
368 void
370 void
372 void
374 
375 void
377 void
379 void
381 void
383 void
385 void
387 void
389 void
391 void
393 void
395 
396 
397 
398 
399 #ifdef __cplusplus
400 }
401 #endif
402 
403 #endif /* _STREAMINPUT_H */
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)
unsigned char BOOLEAN
Boolean logical type, see Headers LAL(Atomic)Datatypes.h for more details.
void LALU4ReadSequence(LALStatus *status, UINT4Sequence **sequence, FILE *stream)
int XLALCHARReadSequence(CHARSequence **sequence, FILE *stream)
void LALU8ReadSequence(LALStatus *status, UINT8Sequence **sequence, FILE *stream)
void LALDReadSequence(LALStatus *status, REAL8Sequence **sequence, FILE *stream)
void LALSReadSequence(LALStatus *status, REAL4Sequence **sequence, FILE *stream)
void LALCReadSequence(LALStatus *status, COMPLEX8Sequence **sequence, FILE *stream)
void LALU2ReadSequence(LALStatus *status, UINT2Sequence **sequence, FILE *stream)
void LALI8ReadSequence(LALStatus *status, INT8Sequence **sequence, FILE *stream)
void LALZReadSequence(LALStatus *status, COMPLEX16Sequence **sequence, FILE *stream)
void LALCHARReadSequence(LALStatus *status, CHARSequence **sequence, FILE *stream)
void LALI2ReadSequence(LALStatus *status, INT2Sequence **sequence, FILE *stream)
void LALI4ReadSequence(LALStatus *status, INT4Sequence **sequence, FILE *stream)
void LALI2ReadVector(LALStatus *status, INT2Vector **vector, FILE *stream, BOOLEAN strict)
void LALDReadVector(LALStatus *status, REAL8Vector **vector, FILE *stream, BOOLEAN strict)
void LALU8ReadVector(LALStatus *status, UINT8Vector **vector, FILE *stream, BOOLEAN strict)
void LALI8ReadVector(LALStatus *status, INT8Vector **vector, FILE *stream, BOOLEAN strict)
void LALCHARReadVector(LALStatus *status, CHARVector **vector, FILE *stream)
void LALI4ReadVector(LALStatus *status, INT4Vector **vector, FILE *stream, BOOLEAN strict)
void LALU4ReadVector(LALStatus *status, UINT4Vector **vector, FILE *stream, BOOLEAN strict)
void LALSReadVector(LALStatus *status, REAL4Vector **vector, FILE *stream, BOOLEAN strict)
void LALU2ReadVector(LALStatus *status, UINT2Vector **vector, FILE *stream, BOOLEAN strict)
void LALU2ReadVectorSequence(LALStatus *status, UINT2VectorSequence **sequence, FILE *stream)
void LALI8ReadVectorSequence(LALStatus *status, INT8VectorSequence **sequence, FILE *stream)
void LALSReadVectorSequence(LALStatus *status, REAL4VectorSequence **sequence, FILE *stream)
void LALCHARReadVectorSequence(LALStatus *status, CHARVectorSequence **sequence, FILE *stream)
void LALU4ReadVectorSequence(LALStatus *status, UINT4VectorSequence **sequence, FILE *stream)
void LALI2ReadVectorSequence(LALStatus *status, INT2VectorSequence **sequence, FILE *stream)
void LALU8ReadVectorSequence(LALStatus *status, UINT8VectorSequence **sequence, FILE *stream)
void LALI4ReadVectorSequence(LALStatus *status, INT4VectorSequence **sequence, FILE *stream)
void LALDReadVectorSequence(LALStatus *status, REAL8VectorSequence **sequence, FILE *stream)
Vector of type CHAR, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:73
Sequence of CHAR Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:261
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:909
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:806
Time series of COMPLEX16 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:600
Time series of COMPLEX16 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:703
Vector of type COMPLEX16, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:172
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:899
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:796
Time series of COMPLEX8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:590
Time series of COMPLEX8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:693
Vector of type COMPLEX8, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:163
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:819
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:716
Time series of INT2 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:511
Time series of INT2 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:613
Vector of type INT2, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:91
Sequence of INT2 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:271
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:839
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:736
Time series of INT4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:530
Time series of INT4 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:633
Vector of type INT4, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:109
Sequence of INT4 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:291
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:859
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:756
Time series of INT8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:550
Time series of INT8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:653
Vector of type INT8, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:127
Sequence of INT8 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:311
LAL status structure, see The LALStatus structure for more details.
Definition: LALDatatypes.h:947
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:879
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:776
Time series of REAL4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:570
Time series of REAL4 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:673
Vector of type REAL4, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:145
Sequence of REAL4 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:331
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:889
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:786
Time series of REAL8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:580
Time series of REAL8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:683
Vector of type REAL8, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:154
Sequence of REAL8 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:341
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:829
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:726
Time series of UINT2 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:521
Time series of UINT2 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:623
Vector of type UINT2, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:100
Sequence of UINT2 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:281
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:849
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:746
Time series of UINT4 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:540
Time series of UINT4 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:643
Vector of type UINT4, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:118
Sequence of UINT4 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:301
See DATATYPE-FrequencySeries types for documentation.
Definition: LALDatatypes.h:869
See DATATYPE-TimeArraySeries types for documentation.
Definition: LALDatatypes.h:766
Time series of UINT8 data, see DATATYPE-TimeSeries types for more details.
Definition: LALDatatypes.h:560
Time series of UINT8 vectors, see DATATYPE-TimeVectorSeries for more details.
Definition: LALDatatypes.h:663
Vector of type UINT8, see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:136
Sequence of UINT8 Vectors, see DATATYPE-VectorSequence types for more details.
Definition: LALDatatypes.h:321