include/bio.h File Reference

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.


Detailed Description

Cross platform binary IO to process files in sphinx3 format.

Definition in file bio.h.


Define Documentation

#define REVERSE_SENSE_SWAP_INT16 (  ) 

"reversed senses" SWAP, ARCHAN: This is still incorporated in Sphinx 3 because lm3g2dmp used it.

Don't think that I am very happy with it.

Definition at line 102 of file bio.h.


Function Documentation

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.

Parameters:
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):.

  • 4-byte array size (returned in n_el)
  • memory allocated for the array and read (returned in buf)

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.

Parameters:
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:.

  • 4-byte # rows, # columns (returned in d1, d2, d3)
  • memory allocated for the array and read (returned in buf)

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).

  • 4-byte # matrices, # rows, # columns (returned in d1, d2, d3)
  • memory allocated for the array and read (returned in buf)

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).

Returns:
the number of elemens written (like fwrite).
Parameters:
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.

Parameters:
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.
Returns:
: 0 if successful, -1 otherwise.
Parameters:
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.

Parameters:
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.

Returns:
: 0 if successful, -1 otherwise.
Parameters:
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().


Generated on Mon Aug 24 16:06:36 2009 for SphinxBase by  doxygen 1.5.8