X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcbuffmt.h;h=4668f7f975d75d23bc4f34c6903cbaf19f2c792a;hb=f449c0a95327fd4e60a5b9d3c9d50fae0f8d835a;hp=59004b0f9758a07ec9511102f3adbc9b5c25ad0d;hpb=a28279d96f69f910da96ee86b271a6d81858fb72;p=crypto.git diff --git a/lib/silcutil/silcbuffmt.h b/lib/silcutil/silcbuffmt.h index 59004b0f..4668f7f9 100644 --- a/lib/silcutil/silcbuffmt.h +++ b/lib/silcutil/silcbuffmt.h @@ -4,7 +4,7 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2006 Pekka Riikonen + Copyright (C) 1997 - 2007 Pekka Riikonen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -23,13 +23,28 @@ * * SILC Buffer Format API provides functions for formatting different data * types into a buffer and retrieving different data types from a buffer - * into specified data types. It is especially useful to format packets, + * into specified data types. It is especially useful to encode packets, * protocol payloads and such. * * As the SilcBuffer API is not thread-safe these routines may not be used * in multithreaded environment with a same SilcBuffer context without * concurrency control. * + * EXAMPLE + * + * SilcBufferStruct buffer; + * + * memset(&buffer, 0, sizeof(buffer)); + * ret = silc_buffer_format(&buffer, + * SILC_STR_UINT32(intval), + * SILC_STR_UINT8(charval), + * SILC_STR_UINT64(longintval), + * SILC_STR_UINT16(str_len), + * SILC_STR_DATA(str, str_len), + * SILC_STR_END); + * if (ret < 0) + * error; + * ***/ #ifndef SILCBUFFMT_H @@ -39,7 +54,8 @@ * * SYNOPSIS * - * typedef int (*SilcBufferFormatFunc)(SilcBuffer buffer, + * typedef int (*SilcBuffeSFormatFunc)(SilcStack stack, + * SilcBuffer buffer, * void *value, * void *context); * @@ -48,37 +64,6 @@ * Formatting function callback given with SILC_STR_FUNC type. The * `buffer' is the buffer being formatted at the location where the * SILC_STR_FUNC was placed in formatting. The function should call - * silc_buffer_enlarge before it adds the data to the buffer to make - * sure that it has enough space. The buffer->head points to the - * start of the buffer and silc_buffer_headlen() gives the length - * of the currently formatted data area. It is also possible to use - * silc_buffer_format with `buffer' which will enlarge the buffer if - * needed. - * - * The `value' is the value given to SILC_STR_FUNC that is to be formatted - * into the buffer. It may be NULL if the function is not formatting - * new data into the buffer. The `context' is caller specific context. - * Returns -1 on error and length of the formatted value otherwise, and - * 0 if nothing was formatted. - * - ***/ -typedef int (*SilcBufferFormatFunc)(SilcBuffer buffer, void *value, - void *context); - -/****f* silcutil/SilcBufferFormatAPI/SilcBufferSFormatFunc - * - * SYNOPSIS - * - * typedef int (*SilcBufferSFormatFunc)(SilcStack stack, - * SilcBuffer buffer, - * void *value, - * void *context); - * - * DESCRIPTION - * - * Formatting function callback given with SILC_STR_FUNC type. The - * `buffer' is the buffer being formatted at the location where the - * SILC_STR_FUNC was placed in formatting. The function should call * silc_buffer_senlarge before it adds the data to the buffer to make * sure that it has enough space. The buffer->head points to the * start of the buffer and silc_buffer_headlen() gives the length @@ -92,13 +77,9 @@ typedef int (*SilcBufferFormatFunc)(SilcBuffer buffer, void *value, * Returns -1 on error and length of the formatted value otherwise, and * 0 if nothing was formatted. * - * This is same as SilcBufferFormatFunc except the SilcStack will be - * delivered. This callback must be used when SilcStack is used with - * formatting. - * ***/ -typedef int (*SilcBufferSFormatFunc)(SilcStack stack, SilcBuffer buffer, - void *value, void *context); +typedef int (*SilcBufferFormatFunc)(SilcStack stack, SilcBuffer buffer, + void *value, void *context); /****f* silcutil/SilcBufferFormatAPI/SilcBufferUnformatFunc * @@ -126,42 +107,8 @@ typedef int (*SilcBufferSFormatFunc)(SilcStack stack, SilcBuffer buffer, * unformatted. * ***/ -typedef int (*SilcBufferUnformatFunc)(SilcBuffer buffer, void **value, - void *context); - -/****f* silcutil/SilcBufferFormatAPI/SilcBufferSUnformatFunc - * - * SYNOPSIS - * - * typedef int (*SilcBufferSUnformatFunc)(SilcStack stack, - * SilcBuffer buffer, - * void **value, - * void *context); - * - * DESCRIPTION - * - * Unformatting function callback given with SILC_STR_FUNC type. The - * `buffer' is the buffer being unformatted and is at the location where - * the SILC_STR_FUNC was placed in unformatting. The function should - * check there is enough data in the `buffer' before trying to decode - * from it. - * - * If this function unformats anything from the buffer its value is to - * be returned to the `value' pointer. The implementation should itself - * decide whether the unformatted value is allocated or not. If this - * function does not unformat anything, nothing is returned to `value' - * - * The `context' is caller specific context. Returns -1 on error, and - * length of the unformatted value otherwise, and 0 if nothing was - * unformatted. - * - * This is same as SilcBufferUnformatFunc except the SilcStack will be - * delivered. This callback must be used when SilcStack is used with - * unformatting. - * - ***/ -typedef int (*SilcBufferSUnformatFunc)(SilcStack stack, SilcBuffer buffer, - void **value, void *context); +typedef int (*SilcBufferUnformatFunc)(SilcStack stack, SilcBuffer buffer, + void **value, void *context); /* Prototypes */ @@ -173,10 +120,10 @@ typedef int (*SilcBufferSUnformatFunc)(SilcStack stack, SilcBuffer buffer, * * DESCRIPTION * - * Formats a buffer from a variable argument list. Returns -1 on error - * and the length of the formatted buffer otherwise. The buffer is - * enlarged automatically during formatting, if it doesn't already have - * enough space. + * Formats a buffer from a variable argument list. Returns -1 if the + * system is out of memory and the length of the formatted buffer otherwise. + * The buffer is enlarged automatically during formatting, if it doesn't + * already have enough space. Sets silc_errno in case of error. * * EXAMPLE * @@ -187,10 +134,10 @@ typedef int (*SilcBufferSUnformatFunc)(SilcStack stack, SilcBuffer buffer, * * memset(&buffer, 0, sizeof(buffer)); * ret = silc_buffer_format(&buffer, - * SILC_STR_UI_INT(intval), - * SILC_STR_CHAR(charval), - * SILC_STR_UI_INT(intval), - * SILC_STR_SHORT(str_len), + * SILC_STR_UINT32(intval), + * SILC_STR_UINT8(charval), + * SILC_STR_UINT32(intval), + * SILC_STR_UINT16(str_len), * SILC_STR_DATA(str, str_len), * SILC_STR_END); * if (ret < 0) @@ -203,8 +150,8 @@ typedef int (*SilcBufferSUnformatFunc)(SilcStack stack, SilcBuffer buffer, * SilcBuffer buf; * buf = silc_buffer_alloc(0); * ret = silc_buffer_format(buf, - * SILC_STR_UI_INT(intval), - * SILC_STR_CHAR(charval), + * SILC_STR_UINT32(intval), + * SILC_STR_UINT8(charval), * SILC_STR_END); * if (ret < 0) * error; @@ -216,7 +163,7 @@ typedef int (*SilcBufferSUnformatFunc)(SilcStack stack, SilcBuffer buffer, * SilcBuffer buf; * buf = silc_buffer_alloc(2 + str_len); * ret = silc_buffer_format(buf, - * SILC_STR_UI_SHORT(str_len), + * SILC_STR_UINT16(str_len), * SILC_STR_DATA(str, str_len), * SILC_STR_END); * if (ret < 0) @@ -234,7 +181,11 @@ int silc_buffer_format(SilcBuffer dst, ...); * DESCRIPTION * * Same as silc_buffer_format but uses `stack' to allocate the memory. - * if `stack' is NULL reverts back to silc_buffer_format call. + * if `stack' is NULL reverts back to silc_buffer_format call. Returns + * -1 if system is out of memory. Sets silc_errno in case of error. + * + * Note that this call consumes the `stack'. The caller should push the + * stack before calling the function and pop it later. * ***/ int silc_buffer_sformat(SilcStack stack, SilcBuffer dst, ...); @@ -248,21 +199,26 @@ int silc_buffer_sformat(SilcStack stack, SilcBuffer dst, ...); * DESCRIPTION * * Formats a buffer from a variable argument list indicated by the `ap'. - * Returns -1 on error and the length of the formatted buffer otherwise. + * Returns -1 if system is out of memory and the length of the formatted + * buffer otherwise. * ***/ int silc_buffer_format_vp(SilcBuffer dst, va_list ap); -/****f* silcutil/SilcBufferFormatAPI/silc_buffer_format_vp +/****f* silcutil/SilcBufferFormatAPI/silc_buffer_sformat_vp * * SYNOPSIS * - * int silc_buffer_format_vp(SilcBuffer dst, va_list vp); + * int silc_buffer_sformat_vp(SilcStack stack, SilcBuffer dst, va_list vp); * * DESCRIPTION * * Same as silc_buffer_format_vp but uses `stack' to allocate the memory. - * if `stack' is NULL reverts back to silc_buffer_format_vp call. + * if `stack' is NULL reverts back to silc_buffer_format_vp call. Returns + * -1 if system is out of memory. Sets silc_errno in case of error. + * + * Note that this call consumes the `stack'. The caller should push the + * stack before calling the function and pop it later. * ***/ int silc_buffer_sformat_vp(SilcStack stack, SilcBuffer dst, va_list ap); @@ -276,13 +232,14 @@ int silc_buffer_sformat_vp(SilcStack stack, SilcBuffer dst, va_list ap); * DESCRIPTION * * Unformats a buffer from a variable argument list. Returns -1 on error - * and the length of the unformatted buffer otherwise. + * and the length of the unformatted buffer otherwise. Sets silc_errno + * in case of error. * * EXAMPLE * * ret = silc_buffer_unformat(buffer, - * SILC_STR_UI_INT(&intval), - * SILC_STR_CHAR(&charval), + * SILC_STR_UINT32(&intval), + * SILC_STR_UINT8(&charval), * SILC_STR_OFFSET(4), * SILC_STR_UI16_NSTRING_ALLOC(&str, &str_len), * SILC_STR_END); @@ -303,6 +260,9 @@ int silc_buffer_unformat(SilcBuffer src, ...); * Same as silc_buffer_unformat but uses `stack' to allocate the memory. * if `stack' is NULL reverts back to silc_buffer_format call. * + * Note that this call consumes the `stack'. The caller should push the + * stack before calling the function and pop it later. + * ***/ int silc_buffer_sunformat(SilcStack stack, SilcBuffer src, ...); @@ -331,6 +291,9 @@ int silc_buffer_unformat_vp(SilcBuffer src, va_list ap); * Same as silc_buffer_unformat_vp but uses `stack' to allocate the * memory. if `stack' is NULL reverts back to silc_buffer_format_vp call. * + * Note that this call consumes the `stack'. The caller should push the + * stack before calling the function and pop it later. + * ***/ int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap); @@ -344,10 +307,11 @@ int silc_buffer_sunformat_vp(SilcStack stack, SilcBuffer src, va_list ap); * * Formats a buffer from variable argument list of strings. Each * string must be NULL-terminated and the variable argument list must - * be end with SILC_STR_END argument. This allows that a string in + * be end with SILC_STRFMT_END argument. This allows that a string in * the list can be NULL, in which case it is skipped. This automatically * allocates the space for the buffer data but `dst' must be already - * allocated by the caller. + * allocated by the caller. Returns -1 if system is out of memory and + * sets silc_errno. * * EXAMPLE * @@ -368,148 +332,162 @@ int silc_buffer_strformat(SilcBuffer dst, ...); * * Formats a buffer from variable argument list of strings. Each * string must be NULL-terminated and the variable argument list must - * be end with SILC_STR_END argument. This allows that a string in + * be end with SILC_STRFMT_END argument. This allows that a string in * the list can be NULL, in which case it is skipped. This automatically * allocates the space for the buffer data but `dst' must be already * allocated by the caller. This function is equivalent to - * silc_buffer_strformat but allocates memory from `stack'. + * silc_buffer_strformat but allocates memory from `stack'. Returns -1 + * if system is out of memory and sets silc_errno. + * + * Note that this call consumes the `stack'. The caller should push the + * stack before calling the function and pop it later. * ***/ int silc_buffer_sstrformat(SilcStack stack, SilcBuffer dst, ...); -/****d* silcutil/SilcBufferFormatAPI/SilcBufferParamType +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_SINT8 * * NAME * - * typedef enum { ... } SilcBufferParamType; + * #define SILC_STR_SINT8() ... * * DESCRIPTION * - * Buffer parameter types. These are not needed when formatting or - * unformatting buffers. Use the macros such as SILC_STR_UI_CHAR and - * others instead. These types may be used when describing what a - * buffer looks like, and how it may be formatted and unformatted. - * - * SOURCE - */ -typedef enum { - SILC_PARAM_SI8_CHAR, /* Signed 8-bit char */ - SILC_PARAM_UI8_CHAR, /* Unsigned 8-bit char */ - SILC_PARAM_SI16_SHORT, /* Signed 16-bit int */ - SILC_PARAM_UI16_SHORT, /* Unsigned 16-bit int */ - SILC_PARAM_SI32_INT, /* Signed 32-bit int */ - SILC_PARAM_UI32_INT, /* Unsigned 32-bit int */ - SILC_PARAM_SI64_INT, /* Signed 64-bit int */ - SILC_PARAM_UI64_INT, /* Unsigned 64-bit int */ - SILC_PARAM_UI8_STRING, /* String (max len 8-bits)*/ - SILC_PARAM_UI16_STRING, /* String (max len 16-bits) */ - SILC_PARAM_UI32_STRING, /* String (max len 32-bits) */ - SILC_PARAM_BUFFER, /* SilcBuffer */ - - /* Internal types */ - SILC_PARAM_DATA, /* Binary data */ - SILC_PARAM_UI8_NSTRING, /* String (max len 8-bits) */ - SILC_PARAM_UI16_NSTRING, /* String (max len 16-bits) */ - SILC_PARAM_UI32_NSTRING, /* String (max len 32-bits) */ - SILC_PARAM_UI8_STRING_ALLOC, /* Alloc + memcpy */ - SILC_PARAM_UI16_STRING_ALLOC, /* Alloc + memcpy */ - SILC_PARAM_UI32_STRING_ALLOC, /* Alloc + memcpy */ - SILC_PARAM_UI8_NSTRING_ALLOC, /* Alloc + memcpy */ - SILC_PARAM_UI16_NSTRING_ALLOC, /* Alloc + memcpy */ - SILC_PARAM_UI32_NSTRING_ALLOC, /* Alloc + memcpy */ - SILC_PARAM_DATA_ALLOC, /* Alloc + memcpy */ - SILC_PARAM_BUFFER_ALLOC, /* Alloc + memcpy */ - - SILC_PARAM_OFFSET, - SILC_PARAM_ADVANCE, - SILC_PARAM_FUNC, - - SILC_PARAM_UI_XNSTRING, - SILC_PARAM_UI_XNSTRING_ALLOC, - - SILC_PARAM_END -} SilcBufferParamType; -/***/ - -/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_CHAR + * One 8-bit signed integer. + * + * Formatting: SILC_STR_SINT8(SilcInt8) + * Unformatting: SILC_STR_SINT8(SilcInt8 *) + * + ***/ +#define SILC_STR_SINT8(x) SILC_PARAM_SINT8, (x) + +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_UINT8 * * NAME * - * #define SILC_STR_UI_CHAR() ... - * #define SILC_STR_SI_CHAR() ... + * #define SILC_STR_UINT8() ... * * DESCRIPTION * - * One signed/unsigned character. + * One 8-bit unsigned integer. * - * Formatting: SILC_STR_SI_CHAR(char) - * SILC_STR_UI_CHAR(unsigned char) - * Unformatting: SILC_STR_SI_CHAR(char *) - * SILC_STR_UI_CHAR(unsigned char *) + * Formatting: SILC_STR_UINT8(SilcUInt8) + * Unformatting: SILC_STR_UINT8(SilcUInt8 *) * ***/ -#define SILC_STR_SI_CHAR(x) SILC_PARAM_SI8_CHAR, (x) -#define SILC_STR_UI_CHAR(x) SILC_PARAM_UI8_CHAR, (x) +#define SILC_STR_UINT8(x) SILC_PARAM_UINT8, (x) -/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_SHORT +/* Deprecated */ +#define SILC_STR_SI_CHAR(x) SILC_PARAM_SINT8, (x) +#define SILC_STR_UI_CHAR(x) SILC_PARAM_UINT8, (x) + +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_SINT16 * * NAME * - * #define SILC_STR_UI_SHORT() ... - * #define SILC_STR_SI_SHORT() ... + * #define SILC_STR_SINT16() ... * * DESCRIPTION * - * SilcInt16/SilcUInt16. + * SilcInt16. * - * Formatting: SILC_STR_SI_SHORT(short) - * SILC_STR_UI_SHORT(SilcUInt16) - * Unformatting: SILC_STR_SI_SHORT(short *) - * SILC_STR_UI_SHORT(SilcUInt16 *) + * Formatting: SILC_STR_SINT16(SilcInt16) + * Unformatting: SILC_STR_SINT16(SilcInt16 *) * ***/ -#define SILC_STR_SI_SHORT(x) SILC_PARAM_SI16_SHORT, (x) -#define SILC_STR_UI_SHORT(x) SILC_PARAM_UI16_SHORT, (x) +#define SILC_STR_SINT16(x) SILC_PARAM_SINT16, (x) -/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_INT +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_UINT16 * * NAME * - * #define SILC_STR_UI_INT() ... - * #define SILC_STR_SI_INT() ... + * #define SILC_STR_UINT16() ... * * DESCRIPTION * - * SilcInt32/SilcUInt32. + * SilcUInt16. * - * Formatting: SILC_STR_SI_INT(int) - * SILC_STR_UI_INT(SilcUInt32) - * Unformatting: SILC_STR_SI_INT(int *) - * SILC_STR_UI_INT(SilcUInt32 *) + * Formatting: SILC_STR_UINT16(SilcUInt16) + * Unformatting: SILC_STR_UINT16(SilcUInt16 *) * ***/ -#define SILC_STR_SI_INT(x) SILC_PARAM_SI32_INT, (x) -#define SILC_STR_UI_INT(x) SILC_PARAM_UI32_INT, (x) +#define SILC_STR_UINT16(x) SILC_PARAM_UINT16, (x) + +/* Deprecated */ +#define SILC_STR_SI_SHORT(x) SILC_PARAM_SINT16, (x) +#define SILC_STR_UI_SHORT(x) SILC_PARAM_UINT16, (x) -/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_INT64 +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_SINT32 * * NAME * - * #define SILC_STR_UI_INT64() ... - * #define SILC_STR_SI_INT64() ... + * #define SILC_STR_SINT32() ... * * DESCRIPTION * - * SilcInt64/SilcUInt64. + * SilcInt32. * - * Formatting: SILC_STR_SI_INT64(int) - * SILC_STR_UI_INT64(SilcUInt32) - * Unformatting: SILC_STR_SI_INT64(int *) - * SILC_STR_UI_INT64(SilcUInt32 *) + * Formatting: SILC_STR_SINT32(SilcInt32) + * Unformatting: SILC_STR_SINT32(SilcInt32 *) * ***/ -#define SILC_STR_SI_INT64(x) SILC_PARAM_SI64_INT, (x) -#define SILC_STR_UI_INT64(x) SILC_PARAM_UI64_INT, (x) +#define SILC_STR_SINT32(x) SILC_PARAM_SINT32, (x) + +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_UINT32 + * + * NAME + * + * #define SILC_STR_UINT32() ... + * + * DESCRIPTION + * + * SilcUInt32. + * + * Formatting: SILC_STR_UINT32(SilcUInt32) + * Unformatting: SILC_STR_UINT32(SilcUInt32 *) + * + ***/ +#define SILC_STR_UINT32(x) SILC_PARAM_UINT32, (x) + +/* Deprecated */ +#define SILC_STR_SI_INT(x) SILC_PARAM_SINT32, (x) +#define SILC_STR_UI_INT(x) SILC_PARAM_UINT32, (x) + +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_SINT64 + * + * NAME + * + * #define SILC_STR_SINT64() ... + * + * DESCRIPTION + * + * SilcInt64. + * + * Formatting: SILC_STR_SINT64(SilcInt64) + * Unformatting: SILC_STR_SINT64(SilcInt64 *) + * + ***/ +#define SILC_STR_SI_INT64(x) SILC_PARAM_SINT64, (x) + +/****d* silcutil/SilcBufferFormatAPI/SILC_STR_UINT64 + * + * NAME + * + * #define SILC_STR_UINT64() ... + * + * DESCRIPTION + * + * SilcUInt64. + * + * Formatting: SILC_STR_UINT64(SilcUInt64) + * Unformatting: SILC_STR_UINT64(SilcUInt64 *) + * + ***/ +#define SILC_STR_UI_INT64(x) SILC_PARAM_UINT64, (x) + +/* Deprecated */ +#define SILC_STR_SI_INT64(x) SILC_PARAM_SINT64, (x) +#define SILC_STR_UI_INT64(x) SILC_PARAM_UINT64, (x) /****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_STRING * @@ -555,11 +533,11 @@ typedef enum { * ***/ #define SILC_STR_UI8_STRING(x) SILC_PARAM_UI8_STRING, (x) -#define SILC_STR_UI8_STRING_ALLOC(x) SILC_PARAM_UI8_STRING_ALLOC, (x) +#define SILC_STR_UI8_STRING_ALLOC(x) SILC_PARAM_UI8_STRING | SILC_PARAM_ALLOC, (x) #define SILC_STR_UI16_STRING(x) SILC_PARAM_UI16_STRING, (x) -#define SILC_STR_UI16_STRING_ALLOC(x) SILC_PARAM_UI16_STRING_ALLOC, (x) +#define SILC_STR_UI16_STRING_ALLOC(x) SILC_PARAM_UI16_STRING | SILC_PARAM_ALLOC, (x) #define SILC_STR_UI32_STRING(x) SILC_PARAM_UI32_STRING, (x) -#define SILC_STR_UI32_STRING_ALLOC(x) SILC_PARAM_UI32_STRING_ALLOC, (x) +#define SILC_STR_UI32_STRING_ALLOC(x) SILC_PARAM_UI32_STRING | SILC_PARAM_ALLOC, (x) /****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_NSTRING * @@ -606,13 +584,13 @@ typedef enum { ***/ #define SILC_STR_UI8_NSTRING(x, l) SILC_PARAM_UI8_NSTRING, (x), (l) #define SILC_STR_UI8_NSTRING_ALLOC(x, l) \ - SILC_PARAM_UI8_NSTRING_ALLOC, (x), (l) + SILC_PARAM_UI8_NSTRING | SILC_PARAM_ALLOC, (x), (l) #define SILC_STR_UI16_NSTRING(x, l) SILC_PARAM_UI16_NSTRING, (x), (l) #define SILC_STR_UI16_NSTRING_ALLOC(x, l) \ - SILC_PARAM_UI16_NSTRING_ALLOC, (x), (l) + SILC_PARAM_UI16_NSTRING | SILC_PARAM_ALLOC, (x), (l) #define SILC_STR_UI32_NSTRING(x, l) SILC_PARAM_UI32_NSTRING, (x), (l) #define SILC_STR_UI32_NSTRING_ALLOC(x, l) \ - SILC_PARAM_UI32_NSTRING_ALLOC, (x), (l) + SILC_PARAM_UI32_NSTRING | SILC_PARAM_ALLOC, (x), (l) /****d* silcutil/SilcBufferFormatAPI/SILC_STR_DATA * @@ -635,12 +613,12 @@ typedef enum { * as argument in unformatting. * ***/ -#define SILC_STR_DATA(x, l) SILC_PARAM_DATA, (x), (l) -#define SILC_STR_DATA_ALLOC(x, l) SILC_PARAM_DATA_ALLOC, (x), (l) +#define SILC_STR_DATA(x, l) SILC_PARAM_UICHAR, (x), (l) +#define SILC_STR_DATA_ALLOC(x, l) SILC_PARAM_UICHAR | SILC_PARAM_ALLOC, (x), (l) /* Deprecated */ -#define SILC_STR_UI_XNSTRING(x, l) SILC_PARAM_UI_XNSTRING, (x), (l) -#define SILC_STR_UI_XNSTRING_ALLOC(x, l) SILC_PARAM_UI_XNSTRING_ALLOC, (x), (l) +#define SILC_STR_UI_XNSTRING(x, l) SILC_PARAM_UICHAR, (x), (l) +#define SILC_STR_UI_XNSTRING_ALLOC(x, l) SILC_PARAM_UICHAR | SILC_PARAM_ALLOC, (x), (l) /****d* silcutil/SilcBufferFormatAPI/SILC_STR_BUFFER * @@ -666,7 +644,7 @@ typedef enum { * ***/ #define SILC_STR_BUFFER(x) SILC_PARAM_BUFFER, (x) -#define SILC_STR_BUFFER_ALLOC(x) SILC_PARAM_BUFFER_ALLOC, (x) +#define SILC_STR_BUFFER_ALLOC(x) SILC_PARAM_BUFFER | SILC_PARAM_ALLOC, (x) /****d* silcutil/SilcBufferFormatAPI/SILC_STR_FUNC * @@ -702,7 +680,7 @@ typedef enum { * // Encode payload, encrypt and compute MAC. * silc_buffer_format(buf, * SILC_STR_FUNC(foo_encode_id, id, ctx), - * SILC_STR_UI_SHORT(len), + * SILC_STR_UINT16(len), * SILC_STR_DATA(data, len), * SILC_STR_FUNC(foo_buf_encrypt, NULL, key), * SILC_STR_FUNC(foo_buf_hmac, NULL, hmac), @@ -714,7 +692,7 @@ typedef enum { * SILC_STR_FUNC(foo_buf_hmac, NULL, hmac), * SILC_STR_FUNC(foo_buf_decrypt, NULL, key), * SILC_STR_FUNC(foo_decode_id, &id, ctx), - * SILC_STR_UI_SHORT(&len), + * SILC_STR_UINT16(&len), * SILC_STR_END); * ***/ @@ -756,8 +734,8 @@ typedef enum { * * Advance the buffer to the end of the data after the formatting is * done. In normal operation when the formatted data is written the - * buffer is located at the start of the data. With SILC_STR_ADVANCE - * the buffer will be located at the end of the data. This makes it + * buffer is positioned at the start of the data. With SILC_STR_ADVANCE + * the buffer will be positioned at the end of the data. This makes it * easy to add new data immediately after the previously added data. * The SILC_STR_ADVANCE may also be used in unformatting. *