## GMimeObject GMimeObject — Abstract MIME objects |

## Synopsis

    struct              GMimeObject;
    void                (*GMimeObjectForeachFunc)           (GMimeObject *parent,
                                                             GMimeObject *part,
                                                             gpointer user_data);
    void                g_mime_object_register_type         (const char *type,
                                                             const char *subtype,
                                                             GType object_type);
    GMimeObject *       g_mime_object_new                   (GMimeContentType *content_type);
    GMimeObject *       g_mime_object_new_type              (const char *type,
                                                             const char *subtype);
    void                g_mime_object_set_content_type      (GMimeObject *object,
                                                             GMimeContentType *content_type);
    GMimeContentType *  g_mime_object_get_content_type      (GMimeObject *object);
    void                g_mime_object_set_content_type_parameter
                                                            (GMimeObject *object,
                                                             const char *name,
                                                             const char *value);
    const char *        g_mime_object_get_content_type_parameter
                                                            (GMimeObject *object,
                                                             const char *name);
    void                g_mime_object_set_disposition       (GMimeObject *object,
                                                             const char *disposition);
    const char *        g_mime_object_get_disposition       (GMimeObject *object);
    void                g_mime_object_set_content_disposition
                                                            (GMimeObject *object,
                                                             GMimeContentDisposition *disposition);
    GMimeContentDisposition * g_mime_object_get_content_disposition
                                                            (GMimeObject *object);
    void                g_mime_object_set_content_disposition_parameter
                                                            (GMimeObject *object,
                                                             const char *attribute,
                                                             const char *value);
    const char *        g_mime_object_get_content_disposition_parameter
                                                            (GMimeObject *object,
                                                             const char *attribute);
    void                g_mime_object_set_content_id        (GMimeObject *object,
                                                             const char *content_id);
    const char *        g_mime_object_get_content_id        (GMimeObject *object);
    void                g_mime_object_prepend_header        (GMimeObject *object,
                                                             const char *header,
                                                             const char *value);
    void                g_mime_object_append_header         (GMimeObject *object,
                                                             const char *header,
                                                             const char *value);
    gboolean            g_mime_object_remove_header         (GMimeObject *object,
                                                             const char *header);
    void                g_mime_object_set_header            (GMimeObject *object,
                                                             const char *header,
                                                             const char *value);
    const char *        g_mime_object_get_header            (GMimeObject *object,
                                                             const char *header);
    char *              g_mime_object_get_headers           (GMimeObject *object);
    GMimeHeaderList *   g_mime_object_get_header_list       (GMimeObject *object);
    ssize_t             g_mime_object_write_to_stream       (GMimeObject *object,
                                                             GMimeStream *stream);
    char *              g_mime_object_to_string             (GMimeObject *object);
    void                g_mime_object_encode                (GMimeObject *object,
                                                             GMimeEncodingConstraint constraint);

## Object Hierarchy

      GObject
       +----GMimeObject
             +----GMimeMessage
             +----GMimePart
             +----GMimeMultipart
             +----GMimeMessagePart

## Description

GMimeObject is an abstract class from which all message and MIME parts are derived.

## Details

### struct GMimeObject

    struct GMimeObject;

Base class for all MIME parts.

### GMimeObjectForeachFunc ()

    void                (*GMimeObjectForeachFunc)           (GMimeObject *parent,
                                                             GMimeObject *part,
                                                             gpointer user_data);

The function signature for a callback to `g_mime_message_foreach()` and `g_mime_multipart_foreach()`.

`parent` : | parent GMimeObject
`part` : | a GMimeObject
`user_data` : | User-supplied callback data.

### g_mime_object_register_type ()

    void                g_mime_object_register_type         (const char *type,
                                                             const char *subtype,
                                                             GType object_type);

Registers the object type `object_type` for use with the `g_mime_object_new_type()` convenience function.

Note: You may use the wildcard "*" to match any type and/or subtype.

`type` : | mime type
`subtype` : | mime subtype
`object_type` : | object type

### g_mime_object_new ()

    GMimeObject *       g_mime_object_new                   (GMimeContentType *content_type);

Performs a lookup of registered GMimeObject subclasses, registered using `g_mime_object_register_type()`, to find an appropriate class capable of handling MIME parts of the specified Content-Type. If no class has been registered to handle that type, it looks for a registered class that can handle `content_type`'s media type. If that also fails, then it will use the generic part class, GMimePart.

`content_type` : | a GMimeContentType object
Returns : | an appropriate GMimeObject registered to handle MIME parts appropriate for `content_type`.

### g_mime_object_new_type ()

    GMimeObject *       g_mime_object_new_type              (const char *type,
                                                             const char *subtype);

Performs a lookup of registered GMimeObject subclasses, registered using `g_mime_object_register_type()`, to find an appropriate class capable of handling MIME parts of type `type`/`subtype`. If no class has been registered to handle that type, it looks for a registered class that can handle `type`. If that also fails, then it will use the generic part class, GMimePart.

`type` : | mime type
`subtype` : | mime subtype
Returns : | an appropriate GMimeObject registered to handle mime-types of `type`/`subtype`.

### g_mime_object_set_content_type ()

    void                g_mime_object_set_content_type      (GMimeObject *object,
                                                             GMimeContentType *content_type);

Sets the content-type for the specified MIME object and then serializes it to the Content-Type header field.

`object` : | a GMimeObject
`content_type` : | a GMimeContentType object

### g_mime_object_get_content_type ()

    GMimeContentType *  g_mime_object_get_content_type      (GMimeObject *object);

Gets the GMimeContentType object for the given MIME object or `NULL` on fail.

`object` : | a GMimeObject
Returns : | the content-type object for the specified MIME object. [transfer none]

### g_mime_object_set_content_type_parameter ()

    void                g_mime_object_set_content_type_parameter
                                                            (GMimeObject *object,
                                                             const char *name,
                                                             const char *value);

Sets the content-type param `name` to the value `value`.

Note: The `name` string should be in US-ASCII while the `value` string should be in UTF-8.

`object` : | a GMimeObject
`name` : | param name
`value` : | param value

### g_mime_object_get_content_type_parameter ()

    const char *        g_mime_object_get_content_type_parameter
                                                            (GMimeObject *object,
                                                             const char *name);

Gets the value of the content-type param `name` set on the MIME part `object`.

`object` : | a GMimeObject
`name` : | param name
Returns : | the value of the requested content-type param or `NULL` if the param doesn't exist. If the param is set, the returned string will be in UTF-8.

### g_mime_object_set_disposition ()

    void                g_mime_object_set_disposition       (GMimeObject *object,
                                                             const char *disposition);

Sets the disposition to `disposition` which may be one of GMIME_DISPOSITION_ATTACHMENT or GMIME_DISPOSITION_INLINE or, by your choice, any other string which would indicate how the MIME part should be displayed by the MUA.

`object` : | a GMimeObject
`disposition` : | disposition ("attachment" or "inline")

### g_mime_object_get_disposition ()

    const char *        g_mime_object_get_disposition       (GMimeObject *object);

Gets the MIME object's disposition if set or `NULL` otherwise.

`object` : | a GMimeObject
Returns : | the disposition string which is probably one of GMIME_DISPOSITION_ATTACHMENT or GMIME_DISPOSITION_INLINE.

### g_mime_object_set_content_disposition ()

    void                g_mime_object_set_content_disposition
                                                            (GMimeObject *object,
                                                             GMimeContentDisposition *disposition);

Set the content disposition for the specified mime part and then serializes it to the Content-Disposition header field.

`object` : | a GMimeObject
`disposition` : | a GMimeContentDisposition object

### g_mime_object_get_content_disposition ()

    GMimeContentDisposition * g_mime_object_get_content_disposition
                                                            (GMimeObject *object);

Gets the GMimeContentDisposition for the specified MIME object.

`object` : | a GMimeObject
Returns : | the GMimeContentDisposition set on the MIME object. [transfer none]

### g_mime_object_set_content_disposition_parameter ()

    void                g_mime_object_set_content_disposition_parameter
                                                            (GMimeObject *object,
                                                             const char *attribute,
                                                             const char *value);

Add a content-disposition parameter to the specified mime part.

Note: The `name` string should be in US-ASCII while the `value` string should be in UTF-8.

`object` : | a GMimeObject
`value` : | parameter value

### g_mime_object_get_content_disposition_parameter ()

    const char *        g_mime_object_get_content_disposition_parameter
                                                            (GMimeObject *object,
                                                             const char *attribute);

Gets the value of the Content-Disposition parameter specified by `name`, or `NULL` if the parameter does not exist.

`object` : | a GMimeObject
Returns : | the value of the requested content-disposition param or `NULL` if the param doesn't exist. If the param is set, the returned string will be in UTF-8.

### g_mime_object_set_content_id ()

    void                g_mime_object_set_content_id        (GMimeObject *object,
                                                             const char *content_id);

Sets the Content-Id of the MIME object.

`object` : | a GMimeObject
`content_id` : | content-id (addr-spec portion)

### g_mime_object_get_content_id ()

    const char *        g_mime_object_get_content_id        (GMimeObject *object);

Gets the Content-Id of the MIME object or NULL if one is not set.

`object` : | a GMimeObject
Returns : | a const pointer to the Content-Id header.

### g_mime_object_prepend_header ()

    void                g_mime_object_prepend_header        (GMimeObject *object,
                                                             const char *header,
                                                             const char *value);

Prepends a raw, unprocessed header to the MIME object.

Note: `value` should be encoded with a function such as `g_mime_utils_header_encode_text()`.

`object` : | a GMimeObject
`header` : | header name
`value` : | header value

### g_mime_object_append_header ()

    void                g_mime_object_append_header         (GMimeObject *object,
                                                             const char *header,
                                                             const char *value);

Appends a raw, unprocessed header to the MIME object.

Note: `value` should be encoded with a function such as `g_mime_utils_header_encode_text()`.

`object` : | a GMimeObject
`header` : | header name
`value` : | header value

### g_mime_object_remove_header ()

    gboolean            g_mime_object_remove_header         (GMimeObject *object,
                                                             const char *header);

Removed the specified header if it exists.

`object` : | a GMimeObject
`header` : | header name
Returns : | `TRUE` if the header was removed or `FALSE` if it could not be found.

### g_mime_object_set_header ()

    void                g_mime_object_set_header            (GMimeObject *object,
                                                             const char *header,
                                                             const char *value);

Sets an arbitrary raw, unprocessed header on the MIME object.

Note: `value` should be encoded with a function such as `g_mime_utils_header_encode_text()`.

`object` : | a GMimeObject
`header` : | header name
`value` : | header value

### g_mime_object_get_header ()

    const char *        g_mime_object_get_header            (GMimeObject *object,
                                                             const char *header);

Gets the raw, unprocessed value of the requested header.

`object` : | a GMimeObject
`header` : | header name
Returns : | the raw, unprocessed value of the requested header if it exists or `NULL` otherwise. Note: The returned value should be decoded with a function such as `g_mime_utils_header_decode_text()` before displaying to the user.

### g_mime_object_get_headers ()

    char *              g_mime_object_get_headers           (GMimeObject *object);

Allocates a string buffer containing all of the MIME object's raw headers.

`object` : | a GMimeObject
Returns : | an allocated string containing all of the raw MIME headers. Note: The returned string will not be suitable for display.

### g_mime_object_get_header_list ()

    GMimeHeaderList *   g_mime_object_get_header_list       (GMimeObject *object);

Get the header list for `object`.

`object` : | a GMimeObject
Returns : | the GMimeHeaderList for `object`. Do not free this pointer when you are done with it. [transfer none]

### g_mime_object_write_to_stream ()

    ssize_t             g_mime_object_write_to_stream       (GMimeObject *object,
                                                             GMimeStream *stream);

Write the contents of the MIME object to `stream`.

`object` : | a GMimeObject
`stream` : | stream
Returns : | the number of bytes written or `-1` on fail.

### g_mime_object_to_string ()

    char *              g_mime_object_to_string             (GMimeObject *object);

Allocates a string buffer containing the contents of `object`.

`object` : | a GMimeObject
Returns : | an allocated string containing the contents of the mime object.

### g_mime_object_encode ()

    void                g_mime_object_encode                (GMimeObject *object,
                                                             GMimeEncodingConstraint constraint);

Calculates and sets the most efficient Content-Transfer-Encoding for this GMimeObject and all child parts based on the `constraint` provided.

`object` : | a GMimeObject
`constraint` : | a GMimeEncodingConstraint