## 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);
    char const *        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. [transfer full]

### gsf_infile_child_by_name ()

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

The function returns a named child of the given infile. This only works for an immediate child. If you need to go several levels down use gsf_infile_child_by_aname, for example.

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. [transfer full]

### gsf_infile_child_by_vname ()

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

Apart from the way arguments are specified, this is the same as gsf_infile_child_by_aname. Please see the documentation there.

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

### gsf_infile_child_by_aname ()

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

This function finds a child that is several directory levels down the tree. If, for example, the names "foo", "bar", and "baz" are given, then this function first finds the "foo" directory in the root infile, then locates "bar" within that directory, and finally locates "baz" within that and returns the "baz" child. In other words, this function finds the "foo/bar/baz" child.

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. [transfer full]

### gsf_infile_child_by_vaname ()

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

Apart from argument types, this is the same as gsf_infile_child_by_aname. Please see the documentation there. 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. [transfer full]

### gsf_infile_name_by_index ()

    char const *        gsf_infile_name_by_index            (GsfInfile *infile,
                                                             int i);

`infile` : | An GsfInfile
`i` : | zero-based index of child to find.
Returns : | the utf8 encoded name of the `i`-th child. [transfer none]