fmt = va_arg(ap, SilcBufferParamType);
switch(fmt) {
- case SILC_BUFFER_PARAM_OFFSET:
+ case SILC_PARAM_OFFSET:
{
int offst = va_arg(ap, int);
if (!offst)
}
break;
}
- case SILC_BUFFER_PARAM_SI8_CHAR:
+ case SILC_PARAM_SI8_CHAR:
{
char x = (char)va_arg(ap, int);
FORMAT_HAS_SPACE(stack, dst, 1);
silc_buffer_pull(dst, 1);
break;
}
- case SILC_BUFFER_PARAM_UI8_CHAR:
+ case SILC_PARAM_UI8_CHAR:
{
unsigned char x = (unsigned char)va_arg(ap, int);
FORMAT_HAS_SPACE(stack, dst, 1);
silc_buffer_pull(dst, 1);
break;
}
- case SILC_BUFFER_PARAM_SI16_SHORT:
+ case SILC_PARAM_SI16_SHORT:
{
unsigned char xf[2];
SilcInt16 x = (SilcInt16)va_arg(ap, int);
silc_buffer_pull(dst, 2);
break;
}
- case SILC_BUFFER_PARAM_UI16_SHORT:
+ case SILC_PARAM_UI16_SHORT:
{
unsigned char xf[2];
SilcUInt16 x = (SilcUInt16)va_arg(ap, int);
silc_buffer_pull(dst, 2);
break;
}
- case SILC_BUFFER_PARAM_SI32_INT:
+ case SILC_PARAM_SI32_INT:
{
unsigned char xf[4];
SilcInt32 x = va_arg(ap, SilcInt32);
silc_buffer_pull(dst, 4);
break;
}
- case SILC_BUFFER_PARAM_UI32_INT:
+ case SILC_PARAM_UI32_INT:
{
unsigned char xf[4];
SilcUInt32 x = va_arg(ap, SilcUInt32);
silc_buffer_pull(dst, 4);
break;
}
- case SILC_BUFFER_PARAM_SI64_INT:
+ case SILC_PARAM_SI64_INT:
{
unsigned char xf[8];
SilcInt64 x = va_arg(ap, SilcInt64);
silc_buffer_pull(dst, sizeof(SilcInt64));
break;
}
- case SILC_BUFFER_PARAM_UI64_INT:
+ case SILC_PARAM_UI64_INT:
{
unsigned char xf[8];
SilcUInt64 x = va_arg(ap, SilcUInt64);
silc_buffer_pull(dst, sizeof(SilcUInt64));
break;
}
- case SILC_BUFFER_PARAM_UI8_STRING:
- case SILC_BUFFER_PARAM_UI16_STRING:
- case SILC_BUFFER_PARAM_UI32_STRING:
- case SILC_BUFFER_PARAM_UI8_STRING_ALLOC:
- case SILC_BUFFER_PARAM_UI16_STRING_ALLOC:
- case SILC_BUFFER_PARAM_UI32_STRING_ALLOC:
+ case SILC_PARAM_UI8_STRING:
+ case SILC_PARAM_UI16_STRING:
+ case SILC_PARAM_UI32_STRING:
+ case SILC_PARAM_UI8_STRING_ALLOC:
+ case SILC_PARAM_UI16_STRING_ALLOC:
+ case SILC_PARAM_UI32_STRING_ALLOC:
{
unsigned char *x = va_arg(ap, unsigned char *);
SilcUInt32 tmp_len = strlen(x);
silc_buffer_pull(dst, tmp_len);
break;
}
- case SILC_BUFFER_PARAM_UI8_NSTRING:
- case SILC_BUFFER_PARAM_UI16_NSTRING:
- case SILC_BUFFER_PARAM_UI32_NSTRING:
- case SILC_BUFFER_PARAM_UI_XNSTRING:
- case SILC_BUFFER_PARAM_DATA:
- case SILC_BUFFER_PARAM_UI8_NSTRING_ALLOC:
- case SILC_BUFFER_PARAM_UI16_NSTRING_ALLOC:
- case SILC_BUFFER_PARAM_UI32_NSTRING_ALLOC:
- case SILC_BUFFER_PARAM_UI_XNSTRING_ALLOC:
- case SILC_BUFFER_PARAM_DATA_ALLOC:
+ case SILC_PARAM_UI8_NSTRING:
+ case SILC_PARAM_UI16_NSTRING:
+ case SILC_PARAM_UI32_NSTRING:
+ case SILC_PARAM_UI_XNSTRING:
+ case SILC_PARAM_DATA:
+ case SILC_PARAM_UI8_NSTRING_ALLOC:
+ case SILC_PARAM_UI16_NSTRING_ALLOC:
+ case SILC_PARAM_UI32_NSTRING_ALLOC:
+ case SILC_PARAM_UI_XNSTRING_ALLOC:
+ case SILC_PARAM_DATA_ALLOC:
{
unsigned char *x = va_arg(ap, unsigned char *);
SilcUInt32 tmp_len = va_arg(ap, SilcUInt32);
}
break;
}
- case SILC_BUFFER_PARAM_END:
+ case SILC_PARAM_BUFFER:
+ case SILC_PARAM_BUFFER_ALLOC:
+ {
+ SilcBuffer x = va_arg(ap, SilcBuffer);
+ unsigned char xf[4];
+ if (x && silc_buffer_len(x)) {
+ FORMAT_HAS_SPACE(stack, dst, silc_buffer_len(x) + 4);
+ SILC_PUT32_MSB(silc_buffer_len(x), xf);
+ silc_buffer_put(dst, xf, 4);
+ silc_buffer_pull(dst, 4);
+ silc_buffer_put(dst, silc_buffer_data(x), silc_buffer_len(x));
+ silc_buffer_pull(dst, silc_buffer_len(x));
+ }
+ }
+ break;
+ case SILC_PARAM_END:
goto ok;
break;
- case SILC_BUFFER_PARAM_ADVANCE:
+ case SILC_PARAM_ADVANCE:
advance = TRUE;
break;
default:
fmt = va_arg(ap, SilcBufferParamType);
switch(fmt) {
- case SILC_BUFFER_PARAM_OFFSET:
+ case SILC_PARAM_OFFSET:
{
int offst = va_arg(ap, int);
if (!offst)
}
break;
}
- case SILC_BUFFER_PARAM_SI8_CHAR:
+ case SILC_PARAM_SI8_CHAR:
{
char *x = va_arg(ap, char *);
UNFORMAT_HAS_SPACE(src, 1);
silc_buffer_pull(src, 1);
break;
}
- case SILC_BUFFER_PARAM_UI8_CHAR:
+ case SILC_PARAM_UI8_CHAR:
{
unsigned char *x = va_arg(ap, unsigned char *);
UNFORMAT_HAS_SPACE(src, 1);
silc_buffer_pull(src, 1);
break;
}
- case SILC_BUFFER_PARAM_SI16_SHORT:
+ case SILC_PARAM_SI16_SHORT:
{
SilcInt16 *x = va_arg(ap, SilcInt16 *);
UNFORMAT_HAS_SPACE(src, 2);
silc_buffer_pull(src, 2);
break;
}
- case SILC_BUFFER_PARAM_UI16_SHORT:
+ case SILC_PARAM_UI16_SHORT:
{
SilcUInt16 *x = va_arg(ap, SilcUInt16 *);
UNFORMAT_HAS_SPACE(src, 2);
silc_buffer_pull(src, 2);
break;
}
- case SILC_BUFFER_PARAM_SI32_INT:
+ case SILC_PARAM_SI32_INT:
{
SilcInt32 *x = va_arg(ap, SilcInt32 *);
UNFORMAT_HAS_SPACE(src, 4);
silc_buffer_pull(src, 4);
break;
}
- case SILC_BUFFER_PARAM_UI32_INT:
+ case SILC_PARAM_UI32_INT:
{
SilcUInt32 *x = va_arg(ap, SilcUInt32 *);
UNFORMAT_HAS_SPACE(src, 4);
silc_buffer_pull(src, 4);
break;
}
- case SILC_BUFFER_PARAM_SI64_INT:
+ case SILC_PARAM_SI64_INT:
{
SilcInt64 *x = va_arg(ap, SilcInt64 *);
UNFORMAT_HAS_SPACE(src, sizeof(SilcInt64));
silc_buffer_pull(src, sizeof(SilcInt64));
break;
}
- case SILC_BUFFER_PARAM_UI64_INT:
+ case SILC_PARAM_UI64_INT:
{
SilcUInt64 *x = va_arg(ap, SilcUInt64 *);
UNFORMAT_HAS_SPACE(src, sizeof(SilcUInt64));
silc_buffer_pull(src, sizeof(SilcUInt64));
break;
}
- case SILC_BUFFER_PARAM_UI8_STRING:
+ case SILC_PARAM_UI8_STRING:
{
SilcUInt8 len2;
unsigned char **x = va_arg(ap, unsigned char **);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI16_STRING:
+ case SILC_PARAM_UI16_STRING:
{
SilcUInt16 len2;
unsigned char **x = va_arg(ap, unsigned char **);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI8_STRING_ALLOC:
+ case SILC_PARAM_UI8_STRING_ALLOC:
{
SilcUInt8 len2;
unsigned char **x = va_arg(ap, unsigned char **);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI16_STRING_ALLOC:
+ case SILC_PARAM_UI16_STRING_ALLOC:
{
SilcUInt16 len2;
unsigned char **x = va_arg(ap, unsigned char **);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI32_STRING:
+ case SILC_PARAM_UI32_STRING:
{
SilcUInt32 len2;
unsigned char **x = va_arg(ap, unsigned char **);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI32_STRING_ALLOC:
+ case SILC_PARAM_UI32_STRING_ALLOC:
{
SilcUInt32 len2;
unsigned char **x = va_arg(ap, unsigned char **);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI8_NSTRING:
+ case SILC_PARAM_UI8_NSTRING:
{
SilcUInt8 len2;
unsigned char **x = va_arg(ap, unsigned char **);
- SilcUInt8 *len = va_arg(ap, SilcUInt8 *);
+ SilcUInt8 *len3 = va_arg(ap, SilcUInt8 *);
UNFORMAT_HAS_SPACE(src, 1);
len2 = (SilcUInt8)src->data[0];
silc_buffer_pull(src, 1);
UNFORMAT_HAS_SPACE(src, len2);
- if (len)
- *len = len2;
+ if (len3)
+ *len3 = len2;
if (x)
*x = src->data;
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI16_NSTRING:
+ case SILC_PARAM_UI16_NSTRING:
{
SilcUInt16 len2;
unsigned char **x = va_arg(ap, unsigned char **);
- SilcUInt16 *len = va_arg(ap, SilcUInt16 *);
+ SilcUInt16 *len3 = va_arg(ap, SilcUInt16 *);
UNFORMAT_HAS_SPACE(src, 2);
SILC_GET16_MSB(len2, src->data);
silc_buffer_pull(src, 2);
UNFORMAT_HAS_SPACE(src, len2);
- if (len)
- *len = len2;
+ if (len3)
+ *len3 = len2;
if (x)
*x = src->data;
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI8_NSTRING_ALLOC:
+ case SILC_PARAM_UI8_NSTRING_ALLOC:
{
SilcUInt8 len2;
unsigned char **x = va_arg(ap, unsigned char **);
- SilcUInt8 *len = va_arg(ap, SilcUInt8 *);
+ SilcUInt8 *len3 = va_arg(ap, SilcUInt8 *);
UNFORMAT_HAS_SPACE(src, 1);
len2 = (SilcUInt8)src->data[0];
silc_buffer_pull(src, 1);
UNFORMAT_HAS_SPACE(src, len2);
- if (len)
- *len = len2;
+ if (len3)
+ *len3 = len2;
if (x && len2) {
*x = silc_calloc(len2 + 1, sizeof(unsigned char));
memcpy(*x, src->data, len2);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI16_NSTRING_ALLOC:
+ case SILC_PARAM_UI16_NSTRING_ALLOC:
{
SilcUInt16 len2;
unsigned char **x = va_arg(ap, unsigned char **);
- SilcUInt16 *len = va_arg(ap, SilcUInt16 *);
+ SilcUInt16 *len3 = va_arg(ap, SilcUInt16 *);
UNFORMAT_HAS_SPACE(src, 2);
SILC_GET16_MSB(len2, src->data);
silc_buffer_pull(src, 2);
UNFORMAT_HAS_SPACE(src, len2);
- if (len)
- *len = len2;
+ if (len3)
+ *len3 = len2;
if (x && len2) {
*x = silc_calloc(len2 + 1, sizeof(unsigned char));
memcpy(*x, src->data, len2);
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI32_NSTRING:
+ case SILC_PARAM_UI32_NSTRING:
{
SilcUInt32 len2;
unsigned char **x = va_arg(ap, unsigned char **);
- SilcUInt32 *len = va_arg(ap, SilcUInt32 *);
+ SilcUInt32 *len3 = va_arg(ap, SilcUInt32 *);
UNFORMAT_HAS_SPACE(src, 4);
SILC_GET32_MSB(len2, src->data);
silc_buffer_pull(src, 4);
UNFORMAT_HAS_SPACE(src, len2);
- if (len)
- *len = len2;
+ if (len3)
+ *len3 = len2;
if (x)
*x = src->data;
silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI_XNSTRING:
- case SILC_BUFFER_PARAM_DATA:
+ case SILC_PARAM_UI_XNSTRING:
+ case SILC_PARAM_DATA:
{
unsigned char **x = va_arg(ap, unsigned char **);
- SilcUInt32 len = va_arg(ap, SilcUInt32);
- UNFORMAT_HAS_SPACE(src, len);
- if (len && x)
+ SilcUInt32 len2 = va_arg(ap, SilcUInt32);
+ UNFORMAT_HAS_SPACE(src, len2);
+ if (len2 && x)
*x = src->data;
- silc_buffer_pull(src, len);
+ silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_UI_XNSTRING_ALLOC:
- case SILC_BUFFER_PARAM_DATA_ALLOC:
+ case SILC_PARAM_UI_XNSTRING_ALLOC:
+ case SILC_PARAM_DATA_ALLOC:
{
unsigned char **x = va_arg(ap, unsigned char **);
- SilcUInt32 len = va_arg(ap, SilcUInt32);
- UNFORMAT_HAS_SPACE(src, len);
- if (len && x) {
- *x = silc_calloc(len + 1, sizeof(unsigned char));
- memcpy(*x, src->data, len);
+ SilcUInt32 len2 = va_arg(ap, SilcUInt32);
+ UNFORMAT_HAS_SPACE(src, len2);
+ if (len2 && x) {
+ *x = silc_calloc(len2 + 1, sizeof(unsigned char));
+ memcpy(*x, src->data, len2);
}
- silc_buffer_pull(src, len);
+ silc_buffer_pull(src, len2);
break;
}
- case SILC_BUFFER_PARAM_END:
+ case SILC_PARAM_BUFFER:
+ {
+ SilcBuffer x = va_arg(ap, SilcBuffer);
+ SilcUInt32 len2;
+ UNFORMAT_HAS_SPACE(src, 4);
+ SILC_GET32_MSB(len2, src->data);
+ silc_buffer_pull(src, 4);
+ UNFORMAT_HAS_SPACE(src, len2);
+ silc_buffer_set(x, src->data, len2);
+ silc_buffer_pull(src, len2);
+ }
+ break;
+ case SILC_PARAM_BUFFER_ALLOC:
+ {
+ SilcBuffer x = va_arg(ap, SilcBuffer);
+ SilcUInt32 len2;
+ UNFORMAT_HAS_SPACE(src, 4);
+ SILC_GET32_MSB(len2, src->data);
+ silc_buffer_pull(src, 4);
+ UNFORMAT_HAS_SPACE(src, len2);
+ silc_buffer_format(x,
+ SILC_STR_DATA(src->data, len2),
+ SILC_STR_END);
+ silc_buffer_pull(src, len2);
+ }
+ break;
+ case SILC_PARAM_END:
goto ok;
break;
- case SILC_BUFFER_PARAM_ADVANCE:
+ case SILC_PARAM_ADVANCE:
break;
default:
SILC_LOG_DEBUG(("Bad buffer formatting type `%d'. Could not "
if (!string)
continue;
- if (string == (char *)SILC_BUFFER_PARAM_END)
+ if (string == (char *)SILC_PARAM_END)
goto ok;
slen = strlen(string);
if (!string)
continue;
- if (string == (char *)SILC_BUFFER_PARAM_END)
+ if (string == (char *)SILC_PARAM_END)
goto ok;
slen = strlen(string);
***/
int silc_buffer_sstrformat(SilcStack stack, SilcBuffer dst, ...);
-/* Macros for expanding parameters into variable function argument list.
- These are passed to silc_buffer_format and silc_buffer_unformat
- functions. */
-
-/* Buffer parameter types.
-
- _SI_ = signed
- _UI_ = unsigned
-
- Any XXX_STRING_ALLOC types will allocate space for the data and
- memcpy the data to the pointer sent as argument (in unformatting).
-
- Any XXX_STRING will not allocate or copy any data. Instead it
- will set the pointer to the data. Note that the data pointer
- returned (in unformatting) must not be freed.
-
-*/
+/****d* silcutil/SilcBufferFormatAPI/SilcBufferParamType
+ *
+ * NAME
+ *
+ * typedef enum { ... } SilcBufferParamType;
+ *
+ * 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_BUFFER_PARAM_SI8_CHAR,
- SILC_BUFFER_PARAM_UI8_CHAR,
-
- SILC_BUFFER_PARAM_SI16_SHORT,
- SILC_BUFFER_PARAM_UI16_SHORT,
-
- SILC_BUFFER_PARAM_SI32_INT,
- SILC_BUFFER_PARAM_UI32_INT,
-
- SILC_BUFFER_PARAM_SI64_INT,
- SILC_BUFFER_PARAM_UI64_INT,
-
- SILC_BUFFER_PARAM_UI8_STRING, /* No copy */
- SILC_BUFFER_PARAM_UI8_STRING_ALLOC, /* Alloc + memcpy */
- SILC_BUFFER_PARAM_UI16_STRING, /* No copy */
- SILC_BUFFER_PARAM_UI16_STRING_ALLOC, /* Alloc + memcpy */
- SILC_BUFFER_PARAM_UI32_STRING, /* No copy */
- SILC_BUFFER_PARAM_UI32_STRING_ALLOC, /* Alloc + memcpy */
- SILC_BUFFER_PARAM_UI8_NSTRING, /* No copy */
- SILC_BUFFER_PARAM_UI8_NSTRING_ALLOC, /* Alloc + memcpy */
- SILC_BUFFER_PARAM_UI16_NSTRING, /* No copy */
- SILC_BUFFER_PARAM_UI16_NSTRING_ALLOC, /* Alloc + memcpy */
- SILC_BUFFER_PARAM_UI32_NSTRING, /* No copy */
- SILC_BUFFER_PARAM_UI32_NSTRING_ALLOC, /* Alloc + memcpy */
- SILC_BUFFER_PARAM_UI_XNSTRING, /* No copy */
- SILC_BUFFER_PARAM_UI_XNSTRING_ALLOC, /* Alloc + memcpy */
- SILC_BUFFER_PARAM_DATA, /* No copy */
- SILC_BUFFER_PARAM_DATA_ALLOC, /* Alloc + memcpy */
-
- SILC_BUFFER_PARAM_OFFSET,
- SILC_BUFFER_PARAM_ADVANCE,
-
- SILC_BUFFER_PARAM_END
+ 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_UI_XNSTRING,
+ SILC_PARAM_UI_XNSTRING_ALLOC,
+
+ SILC_PARAM_END
} SilcBufferParamType;
+/***/
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_CHAR
*
* SILC_STR_UI_CHAR(unsigned char *)
*
***/
-#define SILC_STR_SI_CHAR(x) SILC_BUFFER_PARAM_SI8_CHAR, (x)
-#define SILC_STR_UI_CHAR(x) SILC_BUFFER_PARAM_UI8_CHAR, (x)
+#define SILC_STR_SI_CHAR(x) SILC_PARAM_SI8_CHAR, (x)
+#define SILC_STR_UI_CHAR(x) SILC_PARAM_UI8_CHAR, (x)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_SHORT
*
*
* DESCRIPTION
*
- * Signed/SilcUInt16.
+ * SilcInt16/SilcUInt16.
*
* Formatting: SILC_STR_SI_SHORT(short)
* SILC_STR_UI_SHORT(SilcUInt16)
* SILC_STR_UI_SHORT(SilcUInt16 *)
*
***/
-#define SILC_STR_SI_SHORT(x) SILC_BUFFER_PARAM_SI16_SHORT, (x)
-#define SILC_STR_UI_SHORT(x) SILC_BUFFER_PARAM_UI16_SHORT, (x)
+#define SILC_STR_SI_SHORT(x) SILC_PARAM_SI16_SHORT, (x)
+#define SILC_STR_UI_SHORT(x) SILC_PARAM_UI16_SHORT, (x)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_INT
*
*
* DESCRIPTION
*
- * Signed/SilcUInt32.
+ * SilcInt32/SilcUInt32.
*
* Formatting: SILC_STR_SI_INT(int)
* SILC_STR_UI_INT(SilcUInt32)
* SILC_STR_UI_INT(SilcUInt32 *)
*
***/
-#define SILC_STR_SI_INT(x) SILC_BUFFER_PARAM_SI32_INT, (x)
-#define SILC_STR_UI_INT(x) SILC_BUFFER_PARAM_UI32_INT, (x)
+#define SILC_STR_SI_INT(x) SILC_PARAM_SI32_INT, (x)
+#define SILC_STR_UI_INT(x) SILC_PARAM_UI32_INT, (x)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_INT64
*
*
* DESCRIPTION
*
- * Signed/SilcUInt64.
+ * SilcInt64/SilcUInt64.
*
* Formatting: SILC_STR_SI_INT64(int)
* SILC_STR_UI_INT64(SilcUInt32)
* SILC_STR_UI_INT64(SilcUInt32 *)
*
***/
-#define SILC_STR_SI_INT64(x) SILC_BUFFER_PARAM_SI64_INT, (x)
-#define SILC_STR_UI_INT64(x) SILC_BUFFER_PARAM_UI64_INT, (x)
+#define SILC_STR_SI_INT64(x) SILC_PARAM_SI64_INT, (x)
+#define SILC_STR_UI_INT64(x) SILC_PARAM_UI64_INT, (x)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_STRING
*
* as argument in unformatting.
*
***/
-#define SILC_STR_UI8_STRING(x) SILC_BUFFER_PARAM_UI8_STRING, (x)
-#define SILC_STR_UI8_STRING_ALLOC(x) SILC_BUFFER_PARAM_UI8_STRING_ALLOC, (x)
-#define SILC_STR_UI16_STRING(x) SILC_BUFFER_PARAM_UI16_STRING, (x)
-#define SILC_STR_UI16_STRING_ALLOC(x) SILC_BUFFER_PARAM_UI16_STRING_ALLOC, (x)
-#define SILC_STR_UI32_STRING(x) SILC_BUFFER_PARAM_UI32_STRING, (x)
-#define SILC_STR_UI32_STRING_ALLOC(x) SILC_BUFFER_PARAM_UI32_STRING_ALLOC, (x)
+#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_UI16_STRING(x) SILC_PARAM_UI16_STRING, (x)
+#define SILC_STR_UI16_STRING_ALLOC(x) SILC_PARAM_UI16_STRING_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)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_*_NSTRING
*
* as argument in unformatting.
*
***/
-#define SILC_STR_UI8_NSTRING(x, l) SILC_BUFFER_PARAM_UI8_NSTRING, (x), (l)
+#define SILC_STR_UI8_NSTRING(x, l) SILC_PARAM_UI8_NSTRING, (x), (l)
#define SILC_STR_UI8_NSTRING_ALLOC(x, l) \
- SILC_BUFFER_PARAM_UI8_NSTRING_ALLOC, (x), (l)
-#define SILC_STR_UI16_NSTRING(x, l) SILC_BUFFER_PARAM_UI16_NSTRING, (x), (l)
+ SILC_PARAM_UI8_NSTRING_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_BUFFER_PARAM_UI16_NSTRING_ALLOC, (x), (l)
-#define SILC_STR_UI32_NSTRING(x, l) SILC_BUFFER_PARAM_UI32_NSTRING, (x), (l)
+ SILC_PARAM_UI16_NSTRING_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_BUFFER_PARAM_UI32_NSTRING_ALLOC, (x), (l)
+ SILC_PARAM_UI32_NSTRING_ALLOC, (x), (l)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_DATA
*
*
* DESCRIPTION
*
- * Binary data formatting. Second argument is the lenght of the data.
+ * Binary data formatting. Second argument is the length of the data.
*
* Formatting: SILC_STR_DATA(unsigned char *, SilcUInt32)
* Unformatting: SILC_STR_DATA(unsigned char **, SilcUInt32)
* as argument in unformatting.
*
***/
-#define SILC_STR_DATA(x, l) SILC_BUFFER_PARAM_DATA, (x), (l)
-#define SILC_STR_DATA_ALLOC(x, l) \
- SILC_BUFFER_PARAM_DATA_ALLOC, (x), (l)
+#define SILC_STR_DATA(x, l) SILC_PARAM_DATA, (x), (l)
+#define SILC_STR_DATA_ALLOC(x, l) SILC_PARAM_DATA_ALLOC, (x), (l)
/* Deprecated */
-#define SILC_STR_UI_XNSTRING(x, l) SILC_BUFFER_PARAM_UI_XNSTRING, (x), (l)
-#define SILC_STR_UI_XNSTRING_ALLOC(x, l) \
- SILC_BUFFER_PARAM_UI_XNSTRING_ALLOC, (x), (l)
+#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)
+
+/****d* silcutil/SilcBufferFormatAPI/SILC_STR_BUFFER
+ *
+ * NAME
+ *
+ * #define SILC_STR_BUFFER() ...
+ * #define SILC_STR_BUFFER_ALLOC() ...
+ *
+ * DESCRIPTION
+ *
+ * SilcBuffer formatting.
+ *
+ * Formatting: SILC_STR_DATA(SilcBuffer)
+ * Unformatting: SILC_STR_DATA(SilcBuffer)
+ *
+ * This type can be used to format and unformat SilcBuffer. The lenght
+ * of the buffer will be automatically encoded into the buffer as a 32-bit
+ * integer. In unformatting the SilcBuffer context must be pre-allocated.
+ *
+ * _ALLOC routines automatically allocates memory inside SilcBuffer in
+ * unformatting.
+ *
+ ***/
+#define SILC_STR_BUFFER(x) SILC_BUFFER_DATA, (x)
+#define SILC_STR_BUFFER_ALLOC(x) SILC_PARAM_BUFFER_ALLOC, (x)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_OFFSET
*
* can be used in formatting and unformatting at the same time.
*
***/
-#define SILC_STR_OFFSET(x) SILC_BUFFER_PARAM_OFFSET, (x)
+#define SILC_STR_OFFSET(x) SILC_PARAM_OFFSET, (x)
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_ADVANCE
*
* silc_buffer_push(buffer, silc_buffer_truelen(buffer));
*
***/
-#define SILC_STR_ADVANCE SILC_BUFFER_PARAM_ADVANCE
+#define SILC_STR_ADVANCE SILC_PARAM_ADVANCE
/****d* silcutil/SilcBufferFormatAPI/SILC_STR_END
*
* argument list or error will occur.
*
***/
-#define SILC_STR_END SILC_BUFFER_PARAM_END
+#define SILC_STR_END SILC_PARAM_END
/****d* silcutil/SilcBufferFormatAPI/SILC_STRFMT_END
*