+DO_INIT(address_t, address);
+static inline void address_wipe(address_t *addr) {
+ p_delete(&addr->personal);
+ p_delete(&addr->mailbox);
+}
+
+DO_NEW(address_t, address);
+DO_DELETE(address_t, address);
+DO_SLIST(address_t, address, address_delete);
+
+/****************************************************************************/
+/* rfc822 header parameters */
+/****************************************************************************/
+
+typedef struct parameter_t {
+ struct parameter_t *next;
+ char *attribute;
+ char *value;
+} parameter_t;
+
+DO_INIT(parameter_t, parameter);
+static inline void parameter_wipe(parameter_t *param) {
+ p_delete(¶m->attribute);
+ p_delete(¶m->value);
+}
+
+DO_NEW(parameter_t, parameter);
+DO_DELETE(parameter_t, parameter);
+DO_SLIST(parameter_t, parameter, parameter_delete);
+
+char *parameter_getval(parameter_t *, const char *);
+void parameter_setval(parameter_t **, const char *, const char *);
+void parameter_delval(parameter_t ** p, const char *);
+void parameter_set_boundary(parameter_t **);
+
+int parameter_equal(const parameter_t *, const parameter_t *);
+
+/****************************************************************************/
+/* rfc822 envelopes */
+/****************************************************************************/
+