Provided by: libmatio-doc_1.5.3-1_all bug

NAME

     Mat_VarReadNextInfo — Reads the information for the next variable in a MATLAB MAT file.

SYNOPSIS

     #include <matio.h>

     matvar_t *
     Mat_VarReadNextInfo(mat_t *mat);

DESCRIPTION

     The Mat_VarReadNextInfo() function reads the information for the next variable stored in the
     open MAT file.

RETURN VALUES

     If there is another variable in the MAT file and is read successfully, a pointer to the
     MATLAB variable structure is returned. If there are no more variables, or there was an error
     reading the variable, NULL is returned.

EXAMPLES

     This example program opens a MAT file named by the first argument to the program, and uses
     Mat_VarReadNextInfo() to read the information about each variable in the file. For each
     variable read,the name, size, and class are printed in a format similar to the MATLAB whos
     command.

     #include <stdlib.h>
     #include <stdio.h>
     #include "matio.h"

     static char *mxclass[16] = {"cell", "struct", "object","char","sparse",
                                 "double","single","int8", "uint8","int16","uint16",
                                 "int32","uint32","int64","uint64","function"
                                };

     int
     main(int argc,char **argv)
     {
         mat_t    *matfp;
         matvar_t *matvar;
         size_t    nbytes;
         int       i;
         char size[32] = {' ',};

         matfp = Mat_Open(argv[1],MAT_ACC_RDONLY);
         if ( NULL == matfp ) {
             fprintf(stderr,"Error opening MAT file %s0,argv[1]);
             return EXIT_FAILURE;
         }

         printf("%-20s       %-10s     %-10s     %-18s0,"Name","Size","Bytes",
                "Class");
         while ( NULL != (matvar = Mat_VarReadNextInfo(matfp)) ) {
             printf("%-20s", matvar->name);
             if ( matvar->rank > 0 ) {
                 int cnt = 0;
                 printf("%8d", matvar->dims[0]);
                 for ( i = 1; i < matvar->rank; i++ ) {
                     if ( ceil(log10(matvar->dims[i]))+1 < 32 )
                         cnt += sprintf(size+cnt,"x%d", matvar->dims[i]);
                 }
                 printf("%-10s",size);
             } else {
                 printf("                    ");
             }
             printf("  %-18s0,mxclass[matvar->class_type-1]);

             Mat_VarFree(matvar);
         }

         Mat_Close(matfp);
         return EXIT_SUCCESS;
     }

SEE ALSO

     Mat_VarRead(3), Mat_VarReadNextInfo(3),