Provided by: libmatio-doc_1.5.28-1build1_all bug

NAME

       Mat_VarCreateStruct — Creates a structure variable.

SYNOPSIS

       #include <matio.h>

       matvar_t *
       Mat_VarCreateStruct(const char *name,       int rank,       const size_t *dims,      const char **fields,
           unsigned nfields);

DESCRIPTION

       The Mat_VarCreateStruct() function creates a structure variable named name that can be written to  a  MAT
       file.

RETURN VALUES

       If  the  structure  variable  was successfully created, a pointer to the variable is returned.  Otherwise
       NULL is returned.  The  structure  variable  pointer  should  be  free'd  when  no  longer  needed  using
       Mat_VarFree().   The  names  of  the fields are copied in the function, and thus should be released after
       calling the function if necessary.

EXAMPLES

       This example program opens a MAT file named by the first argument to the program, and writes a  structure
       named a to the file.

       #include "matio.h"

       int
       main(int argc, char **argv)
       {
           mat_t    *matfp;
           matvar_t *matvar;
           matvar_t *field;
           const char *fields[2] = {"field1", "field2"};
           double       data1 = 1, data2 = 2;
           size_t       dims[2] = {1, 1};

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

           dims[0] = 1; dims[1] = 1;
           matvar = Mat_VarCreateStruct("a", 2, dims, fields, 2);
           if ( NULL == matvar ) {
               Mat_Close(matfp);
               return EXIT_FAILURE;
           }

           field = Mat_VarCreate(NULL, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, &data1,
                       MAT_F_DONT_COPY_DATA);
           Mat_VarSetStructFieldByName(matvar, "field1", 0, field);

           field = Mat_VarCreate(NULL, MAT_C_DOUBLE, MAT_T_DOUBLE, 2, dims, &data2,
                       MAT_F_DONT_COPY_DATA);
           Mat_VarSetStructFieldByName(matvar, "field2", 0, field);

           Mat_VarWrite(matfp, matvar, MAT_COMPRESSION_NONE);
           Mat_VarFree(matvar);

           Mat_Close(matfp);
           return EXIT_SUCCESS;
       }

SEE ALSO

       Mat_VarCreate(3), Mat_VarSetStructFieldByName(3)

Debian                                          November 20, 2023                         MAT_VARCREATESTRUCT(3)