## Infile reading structed files Infile reading structed files |

## Synopsis

                        GsfInfile;
    int                 gsf_infile_num_children             (GsfInfile *infile);
    GsfInput*           gsf_infile_child_by_index           (GsfInfile *infile,
                                                             int i);
    GsfInput*           gsf_infile_child_by_name            (GsfInfile *infile,
                                                             char const *name);
    GsfInput*           gsf_infile_child_by_vname           (GsfInfile *infile,
                                                             ...);
    GsfInput*           gsf_infile_child_by_aname           (GsfInfile *infile,
                                                             char const *names[]);
    GsfInput*           gsf_infile_child_by_vaname          (GsfInfile *infile,
                                                             va_list names);
    charconst *         gsf_infile_name_by_index            (GsfInfile *infile,
                                                             int i);

## Object Hierarchy

      GObject
       +----GsfInput
             +----GsfInfile
                   +----GsfInfileMSOle
                   +----GsfInfileStdio
                   +----GsfInfileZip
                   +----GsfStructuredBlob

## Description

## Details

### GsfInfile

    typedef struct _GsfInfile GsfInfile;

### gsf_infile_num_children ()

    int                 gsf_infile_num_children             (GsfInfile *infile);

`infile` : | the structured storage
Returns : | the number of children the storage has, or -1 if the storage can not have children.

### gsf_infile_child_by_index ()

    GsfInput*           gsf_infile_child_by_index           (GsfInfile *infile,
                                                             int i);

TODO : For 2.0 api will change to include a GError.

`infile` : | GsfInfile
`i` : | target index
Returns : | a newly created child which must be unrefed.

### gsf_infile_child_by_name ()

    GsfInput*           gsf_infile_child_by_name            (GsfInfile *infile,
                                                             char const *name);

TODO : For 2.0 api will change to include a GError.

`infile` : | GsfInfile
`name` : | target name
Returns : | a newly created child which must be unrefed.

### gsf_infile_child_by_vname ()

    GsfInput*           gsf_infile_child_by_vname           (GsfInfile *infile,
                                                             ...);

`infile` : |
`...` : | A `NULL` terminated list of names
Returns : | a newly created child which must be unrefed.

### gsf_infile_child_by_aname ()

    GsfInput*           gsf_infile_child_by_aname           (GsfInfile *infile,
                                                             char const *names[]);

New in 1.14.9.

`infile` : | GsfInfile
`names` : | A `NULL` terminated array of names (e.g. from g_strsplit)
Returns : | a newly created child which must be unrefed.

### gsf_infile_child_by_vaname ()

    GsfInput*           gsf_infile_child_by_vaname          (GsfInfile *infile,
                                                             va_list names);

New in 1.14.9.

`infile` : | GsfInfile
`names` : | A `NULL` terminated array of names (e.g. from g_strsplit)
Returns : | a newly created child which must be unrefed.

### gsf_infile_name_by_index ()

    charconst *         gsf_infile_name_by_index            (GsfInfile *infile,
                                                             int i);

`infile` : |
`i` : |
Returns : | the utf8 encoded name of the `i`-th child DO NOT FREE THE STRING.