## GMimeFilterBest

GMimeFilterBest — Determine the best charset/encoding to use for a stream

## Synopsis

                        GMimeFilterBest;
    enum                GMimeBestEncoding;
    enum                GMimeFilterBestFlags;
    GMimeFilter*        g_mime_filter_best_new              (GMimeFilterBestFlags flags);
    const char*         g_mime_filter_best_charset          (GMimeFilterBest *best);
    GMimeContentEncoding g_mime_filter_best_encoding        (GMimeFilterBest *best,
                                                             GMimeBestEncoding required);

## Object Hierarchy

      GObject
       +----GMimeFilter
             +----GMimeFilterBest

## Description

A GMimeFilter which is meant to determine the best charset and/or transfer encoding suitable for the stream which is filtered through it.

## Details

### GMimeFilterBest

    typedef struct _GMimeFilterBest GMimeFilterBest;

A filter for calculating the best encoding and/or charset to encode the data passed through it.

### enum GMimeBestEncoding

    typedef enum {
    	GMIME_BEST_ENCODING_7BIT,
    	GMIME_BEST_ENCODING_8BIT,
    	GMIME_BEST_ENCODING_BINARY
    } GMimeBestEncoding;

Used with `g_mime_filter_best_encoding()` as the 'required' argument. These values provide a means of letting the filter know what the encoding requirements are for the stream.

`GMIME_BEST_ENCODING_7BIT` | The stream data must fit within the 7bit ASCII range.
`GMIME_BEST_ENCODING_8BIT` | The stream data may have bytes with the high bit set, but no null bytes.
`GMIME_BEST_ENCODING_BINARY` | The stream may contain any binary data.

### enum GMimeFilterBestFlags

    typedef enum {
    	GMIME_FILTER_BEST_CHARSET  = (1 << 0),
    	GMIME_FILTER_BEST_ENCODING = (1 << 1)
    } GMimeFilterBestFlags;

Bit flags to enable charset and/or encoding scanning to make educated guesses as to what the best charset and/or encodings to use for the content passed through the filter.

`GMIME_FILTER_BEST_CHARSET` | Enable best-charset detection.
`GMIME_FILTER_BEST_ENCODING` | Enable best-encoding detection.

### g_mime_filter_best_new ()

    GMimeFilter*        g_mime_filter_best_new              (GMimeFilterBestFlags flags);

Creates a new GMimeFilterBest filter. `flags` are used to determine which information to keep statistics of. If the GMIME_FILTER_BEST_CHARSET bit is set, the filter will be able to compute the best charset for encoding the stream of data filtered. If the GMIME_FILTER_BEST_ENCODING bit is set, the filter will be able to compute the best Content-Transfer-Encoding for use with the stream being filtered.

Note: In order for the `g_mime_filter_best_charset()` function to work, the stream being filtered MUST already be encoded in UTF-8.

`flags` : | filter flags
Returns : | a new best filter with flags `flags`.

### g_mime_filter_best_charset ()

    const char*         g_mime_filter_best_charset          (GMimeFilterBest *best);

Calculates the best charset for encoding the stream filtered through the `best` filter.

`best` : | best filter
Returns : | a pointer to a string containing the name of the charset best suited for the text filtered through `best`.

### g_mime_filter_best_encoding ()

    GMimeContentEncoding g_mime_filter_best_encoding        (GMimeFilterBest *best,
                                                             GMimeBestEncoding required);

Calculates the best Content-Transfer-Encoding for the stream filtered through `best` that fits within the `required` encoding.

`best` : | best filter
`required` : | encoding that all data must fit within
Returns : | the best encoding for the stream filtered by `best`.

## See Also

GMimeFilter