-/* Unsigned string. Second argument is the length of the string.
-
- Formatting: SILC_STR_UI32_NSTRING(unsigned char *, SilcUInt32)
- Unformatting: SILC_STR_UI32_NSTRING(unsigned char **, SilcUInt32 *)
-
- Unformatting procedure will check for length of the string from the
- buffer before trying to get the string out. Thus, one *must* format the
- length as UI_INT or UI_SHORT into the buffer *before* formatting the
- actual string to the buffer, and, in unformatting one must ignore the
- length of the string because unformatting procedure will take it
- automatically.
-
- Example:
-
- Formatting: ..., SILC_STR_UI_INT(strlen(string)),
- SILC_STR_UI32_NSTRING(string, strlen(string)), ...
- Unformatting: ..., SILC_STR_UI32_NSTRING(&string, &len), ...
-
- I.e., you ignore the formatted length field in unformatting. If you don't
- the unformatting procedure might fail and it definitely does not unformat
- the data reliably. The length taken from the buffer is returned to the
- pointer sent as argument (&len in above example).
-
- UI/SI16 and UI/SI32 means that the length is considered to be either
- short (16 bits) or int (32 bits) in unformatting.
-
- _ALLOC routines automatically allocates memory for the variable sent
- as argument in unformatting.
-
-*/
-#define SILC_STR_UI8_NSTRING(x, l) SILC_BUFFER_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)
-#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)
-#define SILC_STR_UI32_NSTRING_ALLOC(x, l) \
- SILC_BUFFER_PARAM_UI32_NSTRING_ALLOC, (x), (l)
-
-/* Extended Unsigned string formatting. Second argument is the length of
- the string.
-
- Formatting: This is equal to using *_NSTRING
- Unformatting: SILC_STR_UI_XNSTRING(unsigned char **, SilcUInt32)
-
- This type can be used to take arbitrary length string from the buffer
- by sending the requested amount of bytes as argument. This differs
- from *_STRING and *_NSTRING so that this doesn't try to find the
- length of the data from the buffer but the length of the data is
- sent as argument. This a handy way to unformat fixed length strings
- from the buffer without having the length of the string formatted
- in the buffer.
-
- _ALLOC routines automatically allocates memory for the variable sent
- as argument in unformatting.
-
-*/
-#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)
-
-/* Marks end of the argument list. This must be at the end of the
- argument list or error will occur. */
-#define SILC_STR_END SILC_BUFFER_PARAM_END
-
-/* Prototypes */
-
-/****f* silcutil/SilcBufferFormatAPI/silc_buffer_format