## GMimePartIter GMimePartIter — MIME part iterators |

## Synopsis

                        GMimePartIter;
    GMimePartIter *     g_mime_part_iter_new                (GMimeObject *toplevel);
    void                g_mime_part_iter_free               (GMimePartIter *iter);
    void                g_mime_part_iter_reset              (GMimePartIter *iter);
    gboolean            g_mime_part_iter_jump_to            (GMimePartIter *iter,
                                                             const char *path);
    gboolean            g_mime_part_iter_is_valid           (GMimePartIter *iter);
    gboolean            g_mime_part_iter_next               (GMimePartIter *iter);
    gboolean            g_mime_part_iter_prev               (GMimePartIter *iter);
    GMimeObject *       g_mime_part_iter_get_toplevel       (GMimePartIter *iter);
    GMimeObject *       g_mime_part_iter_get_current        (GMimePartIter *iter);
    GMimeObject *       g_mime_part_iter_get_parent         (GMimePartIter *iter);
    char *              g_mime_part_iter_get_path           (GMimePartIter *iter);
    gboolean            g_mime_part_iter_replace            (GMimePartIter *iter,
                                                             GMimeObject *replacement);
    gboolean            g_mime_part_iter_remove             (GMimePartIter *iter);

## Description

GMimePartIter is an iterator for traversing a GMimeObject tree in Depth-First order.

## Details

### GMimePartIter

    typedef struct _GMimePartIter GMimePartIter;

A MIME part iterator.

### g_mime_part_iter_new ()

    GMimePartIter *     g_mime_part_iter_new                (GMimeObject *toplevel);

Creates a new GMimePartIter for iterating over `toplevel`'s subparts.

`toplevel` : | a GMimeObject to use as the toplevel
Returns : | a newly allocated GMimePartIter which should be freed using `g_mime_part_iter_free()` when finished with it.

### g_mime_part_iter_free ()

    void                g_mime_part_iter_free               (GMimePartIter *iter);

Frees the memory allocated by `g_mime_part_iter_new()`.

`iter` : | a GMimePartIter

### g_mime_part_iter_reset ()

    void                g_mime_part_iter_reset              (GMimePartIter *iter);

Resets the state of `iter` to its initial state.

`iter` : | a GMimePartIter

### g_mime_part_iter_jump_to ()

    gboolean            g_mime_part_iter_jump_to            (GMimePartIter *iter,
                                                             const char *path);

Updates the state of `iter` to point to the GMimeObject specified by `path`.

`iter` : | a GMimePartIter
`path` : | a string representing the path to jump to
Returns : | `TRUE` if the GMimeObject specified by `path` exists or `FALSE` otherwise.

### g_mime_part_iter_is_valid ()

    gboolean            g_mime_part_iter_is_valid           (GMimePartIter *iter);

Checks that the current state of `iter` is valid.

`iter` : | a GMimePartIter
Returns : | `TRUE` if `iter` is valid or `FALSE` otherwise.

### g_mime_part_iter_next ()

    gboolean            g_mime_part_iter_next               (GMimePartIter *iter);

Advances to the next part in the MIME structure used to initialize `iter`.

`iter` : | a GMimePartIter
Returns : | `TRUE` if successful or `FALSE` otherwise.

### g_mime_part_iter_prev ()

    gboolean            g_mime_part_iter_prev               (GMimePartIter *iter);

Rewinds to the previous part in the MIME structure used to initialize `iter`.

`iter` : | a GMimePartIter
Returns : | `TRUE` if successful or `FALSE` otherwise.

### g_mime_part_iter_get_toplevel ()

    GMimeObject *       g_mime_part_iter_get_toplevel       (GMimePartIter *iter);

Gets the toplevel GMimeObject used to initialize `iter`.

`iter` : | a GMimePartIter
Returns : | the toplevel GMimeObject. [transfer none]

### g_mime_part_iter_get_current ()

    GMimeObject *       g_mime_part_iter_get_current        (GMimePartIter *iter);

Gets the GMimeObject at the current GMimePartIter position.

`iter` : | a GMimePartIter
Returns : | the current GMimeObject or `NULL` if the state of `iter` is invalid. [transfer none]

### g_mime_part_iter_get_parent ()

    GMimeObject *       g_mime_part_iter_get_parent         (GMimePartIter *iter);

Gets the parent of the GMimeObject at the current GMimePartIter position.

`iter` : | a GMimePartIter
Returns : | the parent GMimeObject or `NULL` if the state of `iter` is invalid. [transfer none]

### g_mime_part_iter_get_path ()

    char *              g_mime_part_iter_get_path           (GMimePartIter *iter);

Gets the path of the current GMimeObject in the MIME structure used to initialize `iter`.

`iter` : | a GMimePartIter
Returns : | a newly allocated string representation of the path to the GMimeObject at the current GMimePartIter position.

### g_mime_part_iter_replace ()

    gboolean            g_mime_part_iter_replace            (GMimePartIter *iter,
                                                             GMimeObject *replacement);

Replaces the GMimeObject at the current position with `replacement`.

`iter` : | a GMimePartIter
`replacement` : | a GMimeObject
Returns : | `TRUE` if the part at the current position was replaced or `FALSE` otherwise.

### g_mime_part_iter_remove ()

    gboolean            g_mime_part_iter_remove             (GMimePartIter *iter);

Removes the GMimeObject at the current position from its parent. If successful, `iter` is advanced to the next position (since the current position will become invalid).

`iter` : | a GMimePartIter
Returns : | `TRUE` if the part at the current position was removed or `FALSE` otherwise.

## See Also

GMimeObject