-/* If passed to msg() as CLASS, the return value will cause the message
- to be displayed only if `verbosity' is at least LEVEL. */
-#define VM(LEVEL) (MM | ((LEVEL) << ERR_VERBOSITY_SHIFT))
+/* What kind of message is this? */
+enum msg_category
+ {
+ MSG_GENERAL, /* General info. */
+ MSG_SYNTAX, /* Messages that relate to syntax files. */
+ MSG_DATA /* Messages that relate to data files. */
+ };
+
+/* How important a condition is it? */
+enum msg_severity
+ {
+ MSG_ERROR,
+ MSG_WARNING,
+ MSG_NOTE
+ };
+
+static inline enum msg_category
+msg_class_to_category (enum msg_class class)
+{
+ return class / 3;
+}
+
+static inline enum msg_severity
+msg_class_to_severity (enum msg_class class)
+{
+ return class % 3;
+}
+
+static inline enum msg_class
+msg_class_from_category_and_severity (enum msg_category category,
+ enum msg_severity severity)
+{
+ return category * 3 + severity;
+}