summary refs log tree commit diff
path: root/imap.h
diff options
context:
space:
mode:
Diffstat (limited to 'imap.h')
-rw-r--r--imap.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/imap.h b/imap.h
index f9b3106..a7b4b64 100644
--- a/imap.h
+++ b/imap.h
@@ -99,6 +99,17 @@ struct Data {
 	};
 };
 
+static inline struct Data dataCheck(struct Data data, enum Type type) {
+	const char *Types[] = { "atom", "number", "string", "list" };
+	if (data.type != type) {
+		errx(
+			EX_PROTOCOL, "expected %s, found %s",
+			Types[type], Types[data.type]
+		);
+	}
+	return data;
+}
+
 static inline void listPush(struct List *list, struct Data data) {
 	if (list->len == list->cap) {
 		list->cap = (list->cap ? list->cap * 2 : 4);