+/*
+ * item manipulation
+ */
+list_item item_create();
+void item_empty(list_item item);
+void item_free(list_item *item);
+void item_copy(list_item dest, list_item src);
+void item_duplicate(list_item dest, list_item src);
+
+int item_fput(list_item item, int i, char *val);
+char *item_fget(list_item item, int i);
+
+/*
+ * database field read
+ */
+char *real_db_field_get(int item, int i, int std);
+#define db_fget(item, i) real_db_field_get(item, i, 1)
+#define db_fget_byid(item, i) real_db_field_get(item, i, 0)
+#define db_name_get(item) db_fget(item, NAME)
+#define db_email_get(item) db_fget(item, EMAIL)
+
+/*
+ * database field write
+ */
+int real_db_field_put(int item, int i, int std, char *val);
+#define db_fput(item, i, val) \
+ real_db_field_put(item, i, 1, val)
+#define db_fput_byid(item, i, val) \
+ real_db_field_put(item, i, 0, val)
+
+/*
+ * database item read
+ */
+list_item db_item_get(int i);
+
+
+/*
+ * Various macros
+ */
+
+#define have_multiple_emails(item) \
+ strchr(db_email_get(item), ',')
+
+#endif /* _DATABASE_H */
+