Cross platform binary IO to process files in sphinx3 format. More...
#include <stdio.h>
#include <sphinxbase_export.h>
#include <prim_type.h>
#include <byteorder.h>
Go to the source code of this file.
Defines | |
#define | BYTE_ORDER_MAGIC (0x11223344) |
#define | REVERSE_SENSE_SWAP_INT16(x) |
"reversed senses" SWAP, ARCHAN: This is still incorporated in Sphinx 3 because lm3g2dmp used it. | |
#define | REVERSE_SENSE_SWAP_INT32(x) |
Functions | |
SPHINXBASE_EXPORT int32 | bio_readhdr (FILE *fp, char ***name, char ***val, int32 *swap) |
Read binary file format header: has the following format. | |
SPHINXBASE_EXPORT int32 | bio_writehdr_version (FILE *fp, char *version) |
Write a simple binary file header, containing only the version string. | |
SPHINXBASE_EXPORT void | bio_hdrarg_free (char **name, char **val) |
Free name and value strings previously allocated and returned by bio_readhdr. | |
SPHINXBASE_EXPORT int32 | bio_fread (void *buf, int32 el_sz, int32 n_el, FILE *fp, int32 swap, uint32 *chksum) |
Like fread but perform byteswapping and accumulate checksum (the 2 extra arguments). | |
SPHINXBASE_EXPORT int32 | bio_fwrite (void *buf, int32 el_sz, int32 n_el, FILE *fp, int32 swap, uint32 *chksum) |
Like fwrite but perform byteswapping and accumulate checksum (the 2 extra arguments). | |
SPHINXBASE_EXPORT int32 | bio_fread_1d (void **buf, size_t el_sz, uint32 *n_el, FILE *fp, int32 sw, uint32 *ck) |
Read a 1-d array (fashioned after fread):. | |
SPHINXBASE_EXPORT int32 | bio_fread_2d (void ***arr, size_t e_sz, uint32 *d1, uint32 *d2, FILE *fp, uint32 swap, uint32 *chksum) |
Read a 2-d matrix:. | |
SPHINXBASE_EXPORT int32 | bio_fread_3d (void ****arr, size_t e_sz, uint32 *d1, uint32 *d2, uint32 *d3, FILE *fp, uint32 swap, uint32 *chksum) |
Read a 3-d array (set of matrices). | |
SPHINXBASE_EXPORT void | bio_verify_chksum (FILE *fp, int32 byteswap, uint32 chksum) |
Read and verify checksum at the end of binary file. |
Cross platform binary IO to process files in sphinx3 format.
Definition in file bio.h.
#define REVERSE_SENSE_SWAP_INT16 | ( | x | ) |
SPHINXBASE_EXPORT int32 bio_fread | ( | void * | buf, | |
int32 | el_sz, | |||
int32 | n_el, | |||
FILE * | fp, | |||
int32 | swap, | |||
uint32 * | chksum | |||
) |
Like fread but perform byteswapping and accumulate checksum (the 2 extra arguments).
But unlike fread, returns -1 if required number of elements (n_el) not read; also, no byteswapping or checksum accumulation is performed in that case.
fp | In: An input file pointer | |
swap | In: Byteswap iff (swap != 0) | |
chksum | In/Out: Accumulated checksum |
Definition at line 274 of file bio.c.
References bio_fread().
Referenced by bio_fread(), bio_fread_1d(), bio_fread_2d(), bio_fread_3d(), and logmath_read().
SPHINXBASE_EXPORT int32 bio_fread_1d | ( | void ** | buf, | |
size_t | el_sz, | |||
uint32 * | n_el, | |||
FILE * | fp, | |||
int32 | sw, | |||
uint32 * | ck | |||
) |
Read a 1-d array (fashioned after fread):.
Byteswapping and checksum accumulation performed as necessary. Fails fatally if expected data not read. Return value: number of array elements allocated and read; -1 if error.
buf | Out: contains array data; allocated by this function; can be freed using ckd_free | |
el_sz | In: Array element size | |
n_el | Out: Number of array elements allocated/read | |
fp | In: File to read | |
sw | In: Byteswap iff (swap != 0) | |
ck | In/Out: Accumulated checksum |
Definition at line 312 of file bio.c.
References bio_fread(), bio_fread_1d(), ckd_calloc, and E_FATAL.
Referenced by bio_fread_1d(), bio_fread_2d(), and bio_fread_3d().
SPHINXBASE_EXPORT int32 bio_fread_2d | ( | void *** | arr, | |
size_t | e_sz, | |||
uint32 * | d1, | |||
uint32 * | d2, | |||
FILE * | fp, | |||
uint32 | swap, | |||
uint32 * | chksum | |||
) |
Read a 2-d matrix:.
Byteswapping and checksum accumulation performed as necessary. Fails fatally if expected data not read. Return value: number of array elements allocated and read; -1 if error.
Definition at line 332 of file bio.c.
References bio_fread(), bio_fread_1d(), bio_fread_2d(), ckd_alloc_2d_ptr, and E_ERROR_SYSTEM.
Referenced by bio_fread_2d().
SPHINXBASE_EXPORT int32 bio_fread_3d | ( | void **** | arr, | |
size_t | e_sz, | |||
uint32 * | d1, | |||
uint32 * | d2, | |||
uint32 * | d3, | |||
FILE * | fp, | |||
uint32 | swap, | |||
uint32 * | chksum | |||
) |
Read a 3-d array (set of matrices).
Byteswapping and checksum accumulation performed as necessary. Fails fatally if expected data not read. Return value: number of array elements allocated and read; -1 if error.
Definition at line 378 of file bio.c.
References bio_fread(), bio_fread_1d(), bio_fread_3d(), ckd_alloc_3d_ptr, and E_ERROR_SYSTEM.
Referenced by bio_fread_3d(), and feat_read_lda().
SPHINXBASE_EXPORT int32 bio_fwrite | ( | void * | buf, | |
int32 | el_sz, | |||
int32 | n_el, | |||
FILE * | fp, | |||
int32 | swap, | |||
uint32 * | chksum | |||
) |
Like fwrite but perform byteswapping and accumulate checksum (the 2 extra arguments).
fp | In: An input file pointer | |
swap | In: Byteswap iff (swap != 0) | |
chksum | In/Out: Accumulated checksum |
Definition at line 290 of file bio.c.
References bio_fwrite(), ckd_calloc, and ckd_free().
Referenced by bio_fwrite(), and logmath_write().
SPHINXBASE_EXPORT void bio_hdrarg_free | ( | char ** | name, | |
char ** | val | |||
) |
Free name and value strings previously allocated and returned by bio_readhdr.
name | In: Array previously returned by bio_readhdr | |
val | In: Array previously returned by bio_readhdr |
Definition at line 121 of file bio.c.
References bio_hdrarg_free(), and ckd_free().
Referenced by bio_hdrarg_free(), feat_read_lda(), and logmath_read().
SPHINXBASE_EXPORT int32 bio_readhdr | ( | FILE * | fp, | |
char *** | name, | |||
char *** | val, | |||
int32 * | swap | |||
) |
Read binary file format header: has the following format.
s3 <argument-name> <argument-value> <argument-name> <argument-value> ... endhdr 4-byte byte-order word used to find file byte ordering relative to host machine.
Lines beginning with # are ignored. Memory for name and val allocated by this function; use bio_hdrarg_free to free them.
fp | In: File to read | |
name | Out: array of argument name strings read | |
val | Out: corresponding value strings read | |
swap | Out: file needs byteswapping iff (*swap) |
Definition at line 153 of file bio.c.
References bio_readhdr(), ckd_calloc, ckd_salloc, and E_FATAL.
Referenced by bio_readhdr(), feat_read_lda(), and logmath_read().
SPHINXBASE_EXPORT void bio_verify_chksum | ( | FILE * | fp, | |
int32 | byteswap, | |||
uint32 | chksum | |||
) |
Read and verify checksum at the end of binary file.
Fails fatally if there is a mismatch.
fp | In: File to read | |
byteswap | In: Byteswap iff (swap != 0) | |
chksum | In: Value to compare with checksum in file |
Definition at line 440 of file bio.c.
References bio_verify_chksum(), and E_FATAL.
Referenced by bio_verify_chksum(), and logmath_read().
SPHINXBASE_EXPORT int32 bio_writehdr_version | ( | FILE * | fp, | |
char * | version | |||
) |
Write a simple binary file header, containing only the version string.
Also write the byte order magic word.
fp | Output: File to write | |
version | Input: A string of version |
Definition at line 135 of file bio.c.
References bio_writehdr_version().
Referenced by bio_writehdr_version().