|  |  |  | Camel Reference Manual |  | 
|---|---|---|---|---|
                    CamelMimeFilterYenc;
enum                CamelMimeFilterYencDirection;
#define             CAMEL_MIME_YDECODE_STATE_INIT
#define             CAMEL_MIME_YENCODE_STATE_INIT
#define             CAMEL_MIME_YDECODE_STATE_EOLN
#define             CAMEL_MIME_YDECODE_STATE_ESCAPE
#define             CAMEL_MIME_YDECODE_STATE_BEGIN
#define             CAMEL_MIME_YDECODE_STATE_PART
#define             CAMEL_MIME_YDECODE_STATE_DECODE
#define             CAMEL_MIME_YDECODE_STATE_END
#define             CAMEL_MIME_YENCODE_CRC_INIT
#define             CAMEL_MIME_YENCODE_CRC_FINAL        (crc)
CamelMimeFilter*    camel_mime_filter_yenc_new          (CamelMimeFilterYencDirection direction);
void                camel_mime_filter_yenc_set_state    (CamelMimeFilterYenc *yenc,
                                                         int state);
void                camel_mime_filter_yenc_set_crc      (CamelMimeFilterYenc *yenc,
                                                         guint32 crc);
guint32             camel_mime_filter_yenc_get_pcrc     (CamelMimeFilterYenc *yenc);
guint32             camel_mime_filter_yenc_get_crc      (CamelMimeFilterYenc *yenc);
size_t              camel_ydecode_step                  (unsigned char *in,
                                                         size_t inlen,
                                                         unsigned char *out,
                                                         int *state,
                                                         guint32 *pcrc,
                                                         guint32 *crc);
size_t              camel_yencode_step                  (unsigned char *in,
                                                         size_t inlen,
                                                         unsigned char *out,
                                                         int *state,
                                                         guint32 *pcrc,
                                                         guint32 *crc);
size_t              camel_yencode_close                 (unsigned char *in,
                                                         size_t inlen,
                                                         unsigned char *out,
                                                         int *state,
                                                         guint32 *pcrc,
                                                         guint32 *crc);
typedef struct {
	CamelMimeFilter parent_object;
	
	CamelMimeFilterYencDirection direction;
	
	int part;
	
	int state;
	guint32 pcrc;
	guint32 crc;
} CamelMimeFilterYenc;
typedef enum {
	CAMEL_MIME_FILTER_YENC_DIRECTION_ENCODE,
	CAMEL_MIME_FILTER_YENC_DIRECTION_DECODE
} CamelMimeFilterYencDirection;
CamelMimeFilter* camel_mime_filter_yenc_new (CamelMimeFilterYencDirection direction);
Create a new CamelMimeFilterYenc filter object.
| direction: | encode direction | 
| Returns : | a new CamelMimeFilterYenc object | 
void camel_mime_filter_yenc_set_state (CamelMimeFilterYenc *yenc, int state);
Sets the current state of the yencoder/ydecoder
| yenc: | a CamelMimeFilterYenc object | 
| state: | encode/decode state | 
void camel_mime_filter_yenc_set_crc (CamelMimeFilterYenc *yenc, guint32 crc);
Sets the current crc32 value on the yEnc filter yenc to crc.
| yenc: | a CamelMimeFilterYenc object | 
| crc: | crc32 value | 
guint32 camel_mime_filter_yenc_get_pcrc (CamelMimeFilterYenc *yenc);
Get the computed part crc or (guint32) -1 on fail.
| yenc: | a CamelMimeFilterYenc object | 
| Returns : | the computed part crc or (guint32) -1on fail. | 
guint32 camel_mime_filter_yenc_get_crc (CamelMimeFilterYenc *yenc);
Get the computed crc or (guint32) -1 on fail.
| yenc: | a CamelMimeFiletrYenc object | 
| Returns : | the computed crc or (guint32) -1 on fail. | 
size_t              camel_ydecode_step                  (unsigned char *in,
                                                         size_t inlen,
                                                         unsigned char *out,
                                                         int *state,
                                                         guint32 *pcrc,
                                                         guint32 *crc);
Performs a 'decode step' on a chunk of yEncoded data of length
inlen pointed to by in and writes to out. Assumes the =ybegin
and =ypart lines have already been stripped off.
To get the crc32 value of the part, use CAMEL_MIME_YENCODE_CRC_FINAL
(pcrc). If there are more parts, you should reuse crc without
re-initializing. Once all parts have been decoded, you may get the
combined crc32 value of all the parts using CAMEL_MIME_YENCODE_CRC_FINAL
(crc).
| in: | input buffer | 
| inlen: | input buffer length | 
| out: | output buffer | 
| state: | ydecode state | 
| pcrc: | part crc state | 
| crc: | crc state | 
| Returns : | the number of bytes decoded | 
size_t              camel_yencode_step                  (unsigned char *in,
                                                         size_t inlen,
                                                         unsigned char *out,
                                                         int *state,
                                                         guint32 *pcrc,
                                                         guint32 *crc);
Performs an yEncode 'encode step' on a chunk of raw data of length
inlen pointed to by in and writes to out.
state should be initialized to CAMEL_MIME_YENCODE_STATE_INIT before
beginning making the first call to this function. Subsequent calls
should reuse state.
Along the same lines, pcrc and crc should be initialized to
CAMEL_MIME_YENCODE_CRC_INIT before using.
| in: | input buffer | 
| inlen: | input buffer length | 
| out: | output buffer | 
| state: | yencode state | 
| pcrc: | part crc state | 
| crc: | crc state | 
| Returns : | the number of bytes encoded | 
size_t              camel_yencode_close                 (unsigned char *in,
                                                         size_t inlen,
                                                         unsigned char *out,
                                                         int *state,
                                                         guint32 *pcrc,
                                                         guint32 *crc);
Call this function when finished encoding data with camel_yencode_step to flush off the remaining state.
CAMEL_MIME_YENCODE_CRC_FINAL (pcrc) will give you the crc32 of the
encoded "part". If there are more "parts" to encode, you should
re-use crc when encoding the next "parts" and then use
CAMEL_MIME_YENCODE_CRC_FINAL (crc) to get the combined crc32 value of
all the parts.
| in: | input buffer | 
| inlen: | input buffer length | 
| out: | output buffer | 
| state: | yencode state | 
| pcrc: | part crc state | 
| crc: | crc state | 
| Returns : | the number of bytes encoded. |