#ifndef SILCSNPRINTF_H
#define SILCSNPRINTF_H
+/****f* silcutil/SilcSnprintf/SilcSnprintfRender
+ *
+ * SYNOPSIS
+ *
+ * typedef char *(*SilcSnprintfRender)(void *data);
+ *
+ * DESCRIPTION
+ *
+ * Snprintf rendering function. This function can be used with '%@'
+ * formatting character. The `data' is rendered into a string and
+ * allocated string is returned. If NULL is returned the rendering
+ * is skipped and ignored. If the returned string does not fit to
+ * the destination buffer it may be truncated.
+ *
+ * EXAMPLE
+ *
+ * char *id_render(void *data)
+ * {
+ * ...render...
+ * return id_string;
+ * }
+ *
+ * // Call id_render function to render the 'client_id'.
+ * silc_snprintf(buf, sizeof(buf), "Client ID %@", id_render, client_id);
+ *
+ ***/
+typedef char *(*SilcSnprintfRender)(void *data);
+
/****f* silcutil/SilcSnprintf/silc_snprintf
*
* SYNOPSIS
* snprintf(3) and printf(3) formatting. Returns the number of character
* in `str' or negative value on error.
*
+ * This also supports '%@' formatting to render data and structures
+ * using SilcSnprintfRender.
+ *
***/
int silc_snprintf(char *str, size_t count, const char *fmt, ...);