LAL  7.5.0.1-08ee4f4
H5FileIOMidLevel.c
Go to the documentation of this file.
1 #include <lal/LALStdlib.h>
2 #include <lal/AVFactories.h>
3 #include <lal/StringVector.h>
4 #include <lal/H5FileIO.h>
5 
6 #define FAILVAL XLAL_FAILURE
7 
8 #define TYPECODE CHAR
9 #define TYPE CHAR
10 #include "H5FileIOScalar_source.c"
11 #include "H5FileIOVector_source.c"
12 #undef TYPECODE
13 #undef TYPE
14 
15 #define TYPECODE I2
16 #define TYPE INT2
17 #include "H5FileIOScalar_source.c"
18 #include "H5FileIOVector_source.c"
19 #include "H5FileIOArray_source.c"
20 #undef TYPECODE
21 #undef TYPE
22 
23 #define TYPECODE I4
24 #define TYPE INT4
25 #include "H5FileIOScalar_source.c"
26 #include "H5FileIOVector_source.c"
27 #include "H5FileIOArray_source.c"
28 #undef TYPECODE
29 #undef TYPE
30 
31 #define TYPECODE I8
32 #define TYPE INT8
33 #include "H5FileIOScalar_source.c"
34 #include "H5FileIOVector_source.c"
35 #include "H5FileIOArray_source.c"
36 #undef TYPECODE
37 #undef TYPE
38 
39 #define TYPECODE UCHAR
40 #define TYPE UCHAR
41 #include "H5FileIOScalar_source.c"
42 #undef TYPECODE
43 #undef TYPE
44 
45 #define TYPECODE U2
46 #define TYPE UINT2
47 #include "H5FileIOScalar_source.c"
48 #include "H5FileIOVector_source.c"
49 #include "H5FileIOArray_source.c"
50 #undef TYPECODE
51 #undef TYPE
52 
53 #define TYPECODE U4
54 #define TYPE UINT4
55 #include "H5FileIOScalar_source.c"
56 #include "H5FileIOVector_source.c"
57 #include "H5FileIOArray_source.c"
58 #undef TYPECODE
59 #undef TYPE
60 
61 #define TYPECODE U8
62 #define TYPE UINT8
63 #include "H5FileIOScalar_source.c"
64 #include "H5FileIOVector_source.c"
65 #include "H5FileIOArray_source.c"
66 #undef TYPECODE
67 #undef TYPE
68 
69 #undef FAILVAL
70 
71 #define FAILVAL XLAL_REAL4_FAIL_NAN
72 
73 #define TYPECODE S
74 #define TYPE REAL4
75 #include "H5FileIOScalar_source.c"
76 #include "H5FileIOVector_source.c"
77 #include "H5FileIOArray_source.c"
78 #undef TYPECODE
79 #undef TYPE
80 
81 #undef FAILVAL
82 
83 #define FAILVAL XLAL_REAL4_FAIL_NAN
84 
85 #define TYPECODE D
86 #define TYPE REAL8
87 #include "H5FileIOScalar_source.c"
88 #include "H5FileIOVector_source.c"
89 #include "H5FileIOArray_source.c"
90 #undef TYPECODE
91 #undef TYPE
92 
93 #undef FAILVAL
94 
95 #define FAILVAL XLAL_REAL4_FAIL_NAN
96 
97 #define TYPECODE C
98 #define TYPE COMPLEX8
99 #include "H5FileIOScalar_source.c"
100 #include "H5FileIOVector_source.c"
101 #include "H5FileIOArray_source.c"
102 #undef TYPECODE
103 #undef TYPE
104 
105 #undef FAILVAL
106 
107 #define FAILVAL XLAL_REAL8_FAIL_NAN
108 
109 #define TYPECODE Z
110 #define TYPE COMPLEX16
111 #include "H5FileIOScalar_source.c"
112 #include "H5FileIOVector_source.c"
113 #include "H5FileIOArray_source.c"
114 #undef TYPECODE
115 #undef TYPE
116 
117 #undef FAILVAL
118 
119 /**
120  * @addtogroup H5FileIOMidLevel_c
121  * @brief Mid-level routines for reading/writing HDF5 files.
122  * @details
123  * These routines are mid-level routines for accessing HDF files.
124  * They make use of the #LALH5Dataset structures. For most
125  * purposes, it is more convenient to use the high-level routines
126  * that directly access #LALH5File structures.
127  * @{
128  */
129 
130 /**
131  * @name Routines to Add Attributes
132  * @{
133  */
134 
135 /**
136  * @fn int XLALH5DatasetAddCHARAttribute(LALH5Dataset *dset, const char *key, CHAR value)
137  * @brief Adds a scalar attribute to a #LALH5Dataset
138  * @details
139  * This routine adds a scalar-valued attribute with name @p key and value @p
140  * value to a HDF5 dataset associated with the #LALH5Dataset @p dset.
141  * @param dset Pointer to a #LALH5Dataset to which the attribute will be added.
142  * @param key Pointer to a string with the name of the new attribute.
143  * @param value Value of the scalar attribute to be added.
144  * @retval 0 Success.
145  * @retval -1 Failure.
146  */
147 
148 /**
149  * @fn int XLALH5DatasetAddINT2Attribute(LALH5Dataset *dset, const char *key, INT2 value)
150  * @copydoc XLALH5DatasetAddCHARAttribute()
151  */
152 
153 /**
154  * @fn int XLALH5DatasetAddINT4Attribute(LALH5Dataset *dset, const char *key, INT4 value)
155  * @copydoc XLALH5DatasetAddCHARAttribute()
156  */
157 
158 /**
159  * @fn int XLALH5DatasetAddINT8Attribute(LALH5Dataset *dset, const char *key, INT8 value)
160  * @copydoc XLALH5DatasetAddCHARAttribute()
161  */
162 
163 /**
164  * @fn int XLALH5DatasetAddUCHARAttribute(LALH5Dataset *dset, const char *key, UCHAR value)
165  * @copydoc XLALH5DatasetAddCHARAttribute()
166  */
167 
168 /**
169  * @fn int XLALH5DatasetAddUINT2Attribute(LALH5Dataset *dset, const char *key, UINT2 value)
170  * @copydoc XLALH5DatasetAddCHARAttribute()
171  */
172 
173 /**
174  * @fn int XLALH5DatasetAddUINT4Attribute(LALH5Dataset *dset, const char *key, UINT4 value)
175  * @copydoc XLALH5DatasetAddCHARAttribute()
176  */
177 
178 /**
179  * @fn int XLALH5DatasetAddUINT8Attribute(LALH5Dataset *dset, const char *key, UINT8 value)
180  * @copydoc XLALH5DatasetAddCHARAttribute()
181  */
182 
183 /**
184  * @fn int XLALH5DatasetAddREAL4Attribute(LALH5Dataset *dset, const char *key, REAL4 value)
185  * @copydoc XLALH5DatasetAddCHARAttribute()
186  */
187 
188 /**
189  * @fn int XLALH5DatasetAddREAL8Attribute(LALH5Dataset *dset, const char *key, REAL8 value)
190  * @copydoc XLALH5DatasetAddCHARAttribute()
191  */
192 
193 /**
194  * @fn int XLALH5DatasetAddCOMPLEX8Attribute(LALH5Dataset *dset, const char *key, COMPLEX8 value)
195  * @copydoc XLALH5DatasetAddCHARAttribute()
196  */
197 
198 /**
199  * @fn int XLALH5DatasetAddCOMPLEX16Attribute(LALH5Dataset *dset, const char *key, COMPLEX16 value)
200  * @copydoc XLALH5DatasetAddCHARAttribute()
201  */
202 
203 /** @} */
204 
205 /**
206  * @name Routines to Query Attributes
207  * @{
208  */
209 
210 /**
211  * @fn XLALH5DatasetQueryCHARAttributeValue(LALH5Dataset *dset, const char *key)
212  * @brief Gets the value of a scalar attribute in a #LALH5Dataset
213  * @details
214  * This routine queries the datatype of a scalar attribute with
215  * name @p key in a HDF5 dataset associated with the #LALH5Dataset @p dset.
216  * @param dset Pointer to a #LALH5Dataset to be queried.
217  * @param key Pointer to a string with the name of the attribute to query.
218  * @returns Value of the scalar attribute.
219  */
220 
221 /**
222  * @fn XLALH5DatasetQueryINT2AttributeValue(LALH5Dataset *dset, const char *key)
223  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
224  */
225 
226 /**
227  * @fn XLALH5DatasetQueryINT4AttributeValue(LALH5Dataset *dset, const char *key)
228  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
229  */
230 
231 /**
232  * @fn XLALH5DatasetQueryINT8AttributeValue(LALH5Dataset *dset, const char *key)
233  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
234  */
235 
236 /**
237  * @fn XLALH5DatasetQueryUCHARAttributeValue(LALH5Dataset *dset, const char *key)
238  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
239  */
240 
241 /**
242  * @fn XLALH5DatasetQueryUINT2AttributeValue(LALH5Dataset *dset, const char *key)
243  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
244  */
245 
246 /**
247  * @fn XLALH5DatasetQueryUINT4AttributeValue(LALH5Dataset *dset, const char *key)
248  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
249  */
250 
251 /**
252  * @fn XLALH5DatasetQueryUINT8AttributeValue(LALH5Dataset *dset, const char *key)
253  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
254  */
255 
256 /**
257  * @fn XLALH5DatasetQueryREAL4AttributeValue(LALH5Dataset *dset, const char *key)
258  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
259  */
260 
261 /**
262  * @fn XLALH5DatasetQueryREAL8AttributeValue(LALH5Dataset *dset, const char *key)
263  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
264  */
265 
266 /**
267  * @fn XLALH5DatasetQueryCOMPLEX8AttributeValue(LALH5Dataset *dset, const char *key)
268  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
269  */
270 
271 /**
272  * @fn XLALH5DatasetQueryCOMPLEX16AttributeValue(LALH5Dataset *dset, const char *key)
273  * @copydoc XLALH5DatasetQueryCHARAttributeValue()
274  */
275 
276 /** @} */
277 
278 /**
279  * @name Routines to Allocate Vector Datasets
280  * @{
281  */
282 
283 /**
284  * @fn LALH5Dataset *XLALH5DatasetAllocCHARVector(LALH5File *file, const char *name, CHARVector *vector)
285  * @brief Allocates a #LALH5Dataset
286  * @details
287  * Creates a new HDF5 dataset with name @p name within a HDF5 file
288  * associated with the #LALH5File @p file structure and allocates a
289  * #LALH5Dataset structure associated with the dataset. The data
290  * in the dataset is set to the data in the vector @p vector.
291  *
292  * The #LALH5File @p file passed to this routine must be a file
293  * opened for writing.
294  *
295  * @param file Pointer to a #LALH5File structure in which to create the dataset.
296  * @param name Pointer to a string with the name of the dataset to create.
297  * @param vector Pointer to a vector structure containing the data.
298  * @returns A pointer to a #LALH5Dataset structure associated with the
299  * specified dataset within a HDF5 file.
300  * @retval NULL An error occurred creating the dataset.
301  */
302 
303 /**
304  * @fn LALH5Dataset *XLALH5DatasetAllocINT2Vector(LALH5File *file, const char *name, INT2Vector *vector)
305  * @copydoc XLALH5DatasetAllocCHARVector()
306  */
307 
308 /**
309  * @fn LALH5Dataset *XLALH5DatasetAllocINT4Vector(LALH5File *file, const char *name, INT4Vector *vector)
310  * @copydoc XLALH5DatasetAllocCHARVector()
311  */
312 
313 /**
314  * @fn LALH5Dataset *XLALH5DatasetAllocINT8Vector(LALH5File *file, const char *name, INT8Vector *vector)
315  * @copydoc XLALH5DatasetAllocCHARVector()
316  */
317 
318 /**
319  * @fn LALH5Dataset *XLALH5DatasetAllocUINT2Vector(LALH5File *file, const char *name, UINT2Vector *vector)
320  * @copydoc XLALH5DatasetAllocCHARVector()
321  */
322 
323 /**
324  * @fn LALH5Dataset *XLALH5DatasetAllocUINT4Vector(LALH5File *file, const char *name, UINT4Vector *vector)
325  * @copydoc XLALH5DatasetAllocCHARVector()
326  */
327 
328 /**
329  * @fn LALH5Dataset *XLALH5DatasetAllocUINT8Vector(LALH5File *file, const char *name, UINT8Vector *vector)
330  * @copydoc XLALH5DatasetAllocCHARVector()
331  */
332 
333 /**
334  * @fn LALH5Dataset *XLALH5DatasetAllocREAL4Vector(LALH5File *file, const char *name, REAL4Vector *vector)
335  * @copydoc XLALH5DatasetAllocCHARVector()
336  */
337 
338 /**
339  * @fn LALH5Dataset *XLALH5DatasetAllocREAL8Vector(LALH5File *file, const char *name, REAL8Vector *vector)
340  * @copydoc XLALH5DatasetAllocCHARVector()
341  */
342 
343 /**
344  * @fn LALH5Dataset *XLALH5DatasetAllocCOMPLEX8Vector(LALH5File *file, const char *name, COMPLEX8Vector *vector)
345  * @copydoc XLALH5DatasetAllocCHARVector()
346  */
347 
348 /**
349  * @fn LALH5Dataset *XLALH5DatasetAllocCOMPLEX16Vector(LALH5File *file, const char *name, COMPLEX16Vector *vector)
350  * @copydoc XLALH5DatasetAllocCHARVector()
351  */
352 
353 /**
354  * @fn LALH5Dataset *XLALH5DatasetAllocStringVector(LALH5File *file, const char *name, LALStringVector *vector)
355  * @copydoc XLALH5DatasetAllocCHARVector()
356  */
358 {
359  LALH5Dataset *dataset;
360  if (!file || !name || !vector)
362  if (!vector->length || !vector->data)
364  dataset = XLALH5DatasetAllocStringData(file, name, vector->length);
365  if (!dataset)
367  if (XLALH5DatasetWrite(dataset, vector->data) < 0) {
368  XLALH5DatasetFree(dataset);
370  }
371  return dataset;
372 }
373 
374 /** @} */
375 
376 /**
377  * @name Routines to Allocate Array Datasets
378  * @{
379  */
380 
381 /**
382  * @fn LALH5Dataset *XLALH5DatasetAllocINT2Array(LALH5File *file, const char *name, INT2Array *array)
383  * @brief Allocates a #LALH5Dataset
384  * @details
385  * Creates a new HDF5 dataset with name @p name within a HDF5 file
386  * associated with the #LALH5File @p file structure and allocates a
387  * #LALH5Dataset structure associated with the dataset. The data
388  * in the dataset is set to the data in the array @p array.
389  *
390  * The #LALH5File @p file passed to this routine must be a file
391  * opened for writing.
392  *
393  * @param file Pointer to a #LALH5File structure in which to create the dataset.
394  * @param name Pointer to a string with the name of the dataset to create.
395  * @param array Pointer to an array structure containing the data.
396  * @returns A pointer to a #LALH5Dataset structure associated with the
397  * specified dataset within a HDF5 file.
398  * @retval NULL An error occurred creating the dataset.
399  */
400 
401 /**
402  * @fn LALH5Dataset *XLALH5DatasetAllocINT4Array(LALH5File *file, const char *name, INT4Array *array)
403  * @copydoc XLALH5DatasetAllocINT2Array()
404  */
405 
406 /**
407  * @fn LALH5Dataset *XLALH5DatasetAllocINT8Array(LALH5File *file, const char *name, INT8Array *array)
408  * @copydoc XLALH5DatasetAllocINT2Array()
409  */
410 
411 /**
412  * @fn LALH5Dataset *XLALH5DatasetAllocUINT2Array(LALH5File *file, const char *name, UINT2Array *array)
413  * @copydoc XLALH5DatasetAllocINT2Array()
414  */
415 
416 /**
417  * @fn LALH5Dataset *XLALH5DatasetAllocUINT4Array(LALH5File *file, const char *name, UINT4Array *array)
418  * @copydoc XLALH5DatasetAllocINT2Array()
419  */
420 
421 /**
422  * @fn LALH5Dataset *XLALH5DatasetAllocUINT8Array(LALH5File *file, const char *name, UINT8Array *array)
423  * @copydoc XLALH5DatasetAllocINT2Array()
424  */
425 
426 /**
427  * @fn LALH5Dataset *XLALH5DatasetAllocREAL4Array(LALH5File *file, const char *name, REAL4Array *array)
428  * @copydoc XLALH5DatasetAllocINT2Array()
429  */
430 
431 /**
432  * @fn LALH5Dataset *XLALH5DatasetAllocREAL8Array(LALH5File *file, const char *name, REAL8Array *array)
433  * @copydoc XLALH5DatasetAllocINT2Array()
434  */
435 
436 /**
437  * @fn LALH5Dataset *XLALH5DatasetAllocCOMPLEX8Array(LALH5File *file, const char *name, COMPLEX8Array *array)
438  * @copydoc XLALH5DatasetAllocINT2Array()
439  */
440 
441 /**
442  * @fn LALH5Dataset *XLALH5DatasetAllocCOMPLEX16Array(LALH5File *file, const char *name, COMPLEX16Array *array)
443  * @copydoc XLALH5DatasetAllocINT2Array()
444  */
445 
446 /** @} */
447 
448 /**
449  * @name Routines to Read Vector Datasets
450  * @{
451  */
452 
453 /**
454  * @fn CHARVector *XLALH5DatasetReadCHARVector(LALH5Dataset *dset)
455  * @brief Reads a #LALH5Dataset
456  * @param dset Pointer to a #LALH5Dataset to be read.
457  * @returns Pointer to a vector containing the data in the dataset.
458  * @retval NULL Failure.
459  */
460 
461 /**
462  * @fn INT2Vector *XLALH5DatasetReadINT2Vector(LALH5Dataset *dset)
463  * @copydoc XLALH5DatasetReadCHARVector()
464  */
465 
466 /**
467  * @fn INT4Vector *XLALH5DatasetReadINT4Vector(LALH5Dataset *dset)
468  * @copydoc XLALH5DatasetReadCHARVector()
469  */
470 
471 /**
472  * @fn INT8Vector *XLALH5DatasetReadINT8Vector(LALH5Dataset *dset)
473  * @copydoc XLALH5DatasetReadCHARVector()
474  */
475 
476 /**
477  * @fn UINT2Vector *XLALH5DatasetReadUINT2Vector(LALH5Dataset *dset)
478  * @copydoc XLALH5DatasetReadCHARVector()
479  */
480 
481 /**
482  * @fn UINT4Vector *XLALH5DatasetReadUINT4Vector(LALH5Dataset *dset)
483  * @copydoc XLALH5DatasetReadCHARVector()
484  */
485 
486 /**
487  * @fn UINT8Vector *XLALH5DatasetReadUINT8Vector(LALH5Dataset *dset)
488  * @copydoc XLALH5DatasetReadCHARVector()
489  */
490 
491 /**
492  * @fn REAL4Vector *XLALH5DatasetReadREAL4Vector(LALH5Dataset *dset)
493  * @copydoc XLALH5DatasetReadCHARVector()
494  */
495 
496 /**
497  * @fn REAL8Vector *XLALH5DatasetReadREAL8Vector(LALH5Dataset *dset)
498  * @copydoc XLALH5DatasetReadCHARVector()
499  */
500 
501 /**
502  * @fn COMPLEX8Vector *XLALH5DatasetReadCOMPLEX8Vector(LALH5Dataset *dset)
503  * @copydoc XLALH5DatasetReadCHARVector()
504  */
505 
506 /**
507  * @fn COMPLEX16Vector *XLALH5DatasetReadCOMPLEX16Vector(LALH5Dataset *dset)
508  * @copydoc XLALH5DatasetReadCHARVector()
509  */
510 
511 /**
512  * @fn LALStringVector *XLALH5DatasetReadStringVector(LALH5Dataset *dset)
513  * @copydoc XLALH5DatasetReadCHARVector()
514  */
516 {
517  LALStringVector *vector;
518  size_t npoints;
519  int ndim;
520 
521  if (!dset)
523 
524  ndim = XLALH5DatasetQueryNDim(dset);
525  if (ndim != 1)
527 
528  if (!XLALH5DatasetCheckStringData(dset))
530 
531  npoints = XLALH5DatasetQueryNPoints(dset);
532  if (npoints == (size_t)(-1))
534 
535  vector = XLALCreateEmptyStringVector(npoints);
536  if (!vector)
538 
539  if (XLALH5DatasetQueryData(vector->data, dset) == -1) {
540  XLALDestroyStringVector(vector);
542  }
543 
544  return vector;
545 }
546 
547 /** @} */
548 
549 /**
550  * @name Routines to Read Array Datasets
551  * @{
552  */
553 
554 /**
555  * @fn INT2Array *XLALH5DatasetReadINT2Array(LALH5Dataset *dset)
556  * @brief Reads a #LALH5Dataset
557  * @param dset Pointer to a #LALH5Dataset to be read.
558  * @returns Pointer to an array containing the data in the dataset.
559  * @retval NULL Failure.
560  */
561 
562 /**
563  * @fn INT4Array *XLALH5DatasetReadINT4Array(LALH5Dataset *dset)
564  * @copydoc XLALH5DatasetReadINT2Array()
565  */
566 
567 /**
568  * @fn INT8Array *XLALH5DatasetReadINT8Array(LALH5Dataset *dset)
569  * @copydoc XLALH5DatasetReadINT2Array()
570  */
571 
572 /**
573  * @fn UINT2Array *XLALH5DatasetReadUINT2Array(LALH5Dataset *dset)
574  * @copydoc XLALH5DatasetReadINT2Array()
575  */
576 
577 /**
578  * @fn UINT4Array *XLALH5DatasetReadUINT4Array(LALH5Dataset *dset)
579  * @copydoc XLALH5DatasetReadINT2Array()
580  */
581 
582 /**
583  * @fn UINT8Array *XLALH5DatasetReadUINT8Array(LALH5Dataset *dset)
584  * @copydoc XLALH5DatasetReadINT2Array()
585  */
586 
587 /**
588  * @fn REAL4Array *XLALH5DatasetReadREAL4Array(LALH5Dataset *dset)
589  * @copydoc XLALH5DatasetReadINT2Array()
590  */
591 
592 /**
593  * @fn REAL8Array *XLALH5DatasetReadREAL8Array(LALH5Dataset *dset)
594  * @copydoc XLALH5DatasetReadINT2Array()
595  */
596 
597 /**
598  * @fn COMPLEX8Array *XLALH5DatasetReadCOMPLEX8Array(LALH5Dataset *dset)
599  * @copydoc XLALH5DatasetReadINT2Array()
600  */
601 
602 /**
603  * @fn COMPLEX16Array *XLALH5DatasetReadCOMPLEX16Array(LALH5Dataset *dset)
604  * @copydoc XLALH5DatasetReadINT2Array()
605  */
606 
607 /** @} */
608 
609 /** @} */
int XLALH5DatasetCheckStringData(LALH5Dataset *dset)
LALH5Dataset * XLALH5DatasetAllocStringData(LALH5File *file, const char *name, size_t length)
int XLALH5DatasetQueryNDim(LALH5Dataset *dset)
struct tagLALH5File LALH5File
Incomplete type for a HDF5 file.
Definition: H5FileIO.h:93
struct tagLALH5Dataset LALH5Dataset
Incomplete type for a HDF5 dataset.
Definition: H5FileIO.h:102
int XLALH5DatasetWrite(LALH5Dataset *dset, void *data)
void XLALH5DatasetFree(LALH5Dataset *dset)
size_t XLALH5DatasetQueryNPoints(LALH5Dataset *dset)
int XLALH5DatasetQueryData(void *data, LALH5Dataset *dset)
const char *const name
type name
Definition: UserInput.c:193
LALH5Dataset * XLALH5DatasetAllocStringVector(LALH5File *file, const char *name, LALStringVector *vector)
Allocates a LALH5Dataset.
LALStringVector * XLALH5DatasetReadStringVector(LALH5Dataset *dset)
Reads a LALH5Dataset.
void XLALDestroyStringVector(LALStringVector *vect)
XLAL-interface: Free a string-vector ;)
Definition: StringVector.c:204
LALStringVector * XLALCreateEmptyStringVector(UINT4 length)
Create an empty string vector of the given length.
Definition: StringVector.c:164
#define XLAL_ERROR_NULL(...)
Macro to invoke a failure from a XLAL routine returning a pointer.
Definition: XLALError.h:713
@ XLAL_EFAULT
Invalid pointer.
Definition: XLALError.h:408
@ XLAL_EFUNC
Internal function call failed bit: "or" this with existing error number.
Definition: XLALError.h:462
@ XLAL_ETYPE
Wrong or unknown type.
Definition: XLALError.h:422
@ XLAL_EDIMS
Wrong dimensions.
Definition: XLALError.h:421
@ XLAL_EINVAL
Invalid argument.
Definition: XLALError.h:409
Vector of type CHAR*, ie 'strings', see DATATYPE-Vector types for more details.
Definition: LALDatatypes.h:82
UINT4 length
Number of elements in array.
Definition: LALDatatypes.h:86
CHAR ** data
Pointer to the data array.
Definition: LALDatatypes.h:87