Provided by: libxdffileio-dev_0.3-1_amd64 bug

NAME

       xdf_read - Read samples from a xDF file

SYNOPSIS

       #include <xdfio.h>

       int xdf_read(struct xdf* xdf, unsigned int ns, ...);

DESCRIPTION

       xdf_read()  reads  ns  samples  from the xDF file referenced by xdf. This file should have
       been opened with mode XDF_READ and xdf_prepare_arrays(3)  should  have  been  successfully
       called on it.  xdf_read() will fail otherwise).

       The  data to be read will be transferred into arrays specified by pointers provided in the
       variable list of arguments of the function.  The  function  expects  the  same  number  of
       arrays as specified by previous call to xdf_define_arrays(3). The internal organisation of
       the  data  in  the  arrays  should  have  been  specified   previously   with   calls   to
       xdf_set_chconf(3).

       In addition, it is important to note that none of the arrays should overlap.

RETURN VALUE

       The function returns the number of the samples successfully read from the xDF file in case
       of success. The number of samples read can be smaller than the number requested in the end
       of the file is reached. In case of error, -1 is returned and errno is set appropriately.

ERRORS

       EINVAL xdf is NULL

       EPERM  No successfull call to xdf_prepare_transfer(3) have been done on xdf or it has been
              opened using the mode XDF_WRITE.

       EINTR  The call was interrupted by a signal before any data was written; see signal(7).

       EIO    A low-level I/O error occurred while reading from the inode.

       ESTALE Stale file handle. This error can occur for NFS and for other file systems

EXAMPLE

              /* Assume xdf references a xDF file opened for reading whose
              channels source their data in 2 arrays of float whose strides
              are the length of respectively 4 and 6 float values,
              i.e. 16 and 24 bytes (in most platforms)*/
              #define NS    3
              float array1[NS][4], array2[NS][6];
              unsigned int strides = {4*sizeof(float), 6*sizeof(float)};
              unsigned int i;

              xdf_define_arrays(xdf, 2, strides);
              if (xdf_prepare_transfer(xdf))
                   return 1;

              for (i=0; i<45; i+=NS) {
                   /* Write the values to the file */
                      if (xdf_write(xdf, NS, array1, array2))
                        return 1;

                   /* Use the values contained in array1 and array2*/
                   ...

              }

              xdf_close(xdf);

SEE ALSO

       xdf_set_chconf(3), xdf_define_arrays(3), xdf_prepare_transfer(3)