mood.c: Introduce DEFINE_MOOD_METHOD and DEFINE_MOOD_METHOD_WITH_CLEANUP.
authorAndre Noll <maan@systemlinux.org>
Sat, 29 Sep 2007 13:32:12 +0000 (15:32 +0200)
committerAndre Noll <maan@systemlinux.org>
Sat, 29 Sep 2007 13:32:12 +0000 (15:32 +0200)
This simplifies the definition of the mood_methods array.

mood.c

diff --git a/mood.c b/mood.c
index b7ee99e..fdf8cdc 100644 (file)
--- a/mood.c
+++ b/mood.c
@@ -310,31 +310,21 @@ static int compute_mood_score(const struct osl_row *aft_row, struct mood *m,
        return 1;
 }
 
+#define DEFINE_MOOD_METHOD(_name) \
+.parser = mm_ ## _name ## _parser, \
+.score_function = mm_ ## _name ## _score_function, \
+.name = #_name
+
+#define DEFINE_MOOD_METHOD_WITH_CLEANUP(_name) \
+       DEFINE_MOOD_METHOD(_name), \
+       .cleanup = mm_ ## _name ## _cleanup
+
 static const struct mood_method mood_methods[] = {
-{
-       .parser = mm_no_attributes_set_parser,
-       .score_function = mm_no_attributes_set_score_function,
-       .name = "no_attributes_set"
-},
-{
-       .parser = mm_played_rarely_parser,
-       .score_function = mm_played_rarely_score_function,
-       .name = "played_rarely"
-},
-{
-       .parser = mm_is_set_parser,
-       .score_function = mm_is_set_score_function,
-       .name = "is_set"
-},
-{
-       .parser = mm_name_like_parser,
-       .score_function = mm_name_like_score_function,
-       .cleanup = mm_name_like_cleanup,
-       .name = "name_like"
-},
-{
-       .parser = NULL
-}
+       {DEFINE_MOOD_METHOD(no_attributes_set)},
+       {DEFINE_MOOD_METHOD(played_rarely)},
+       {DEFINE_MOOD_METHOD(is_set)},
+       {DEFINE_MOOD_METHOD_WITH_CLEANUP(name_like)},
+       {.parser = NULL}
 };
 
 static void cleanup_list_entry(struct mood_item *item)