From dce719f6c1eedcb378289fc90120bc252556aa61 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 14 May 2020 18:40:16 +0200 Subject: [PATCH] condition: introduce generic function type for condition_to_string()-like functions Let's add a typedef for a function type we use at multiple places. --- src/shared/condition.c | 12 +++++++++--- src/shared/condition.h | 10 ++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/shared/condition.c b/src/shared/condition.c index 2dbc14938ac..fef37057db9 100644 --- a/src/shared/condition.c +++ b/src/shared/condition.c @@ -779,7 +779,12 @@ int condition_test(Condition *c) { return b; } -bool condition_test_list(Condition *first, const char *(*to_string)(ConditionType t), condition_test_logger_t logger, void *userdata) { +bool condition_test_list( + Condition *first, + condition_to_string_t to_string, + condition_test_logger_t logger, + void *userdata) { + Condition *c; int triggered = -1; @@ -828,9 +833,10 @@ bool condition_test_list(Condition *first, const char *(*to_string)(ConditionTyp return triggered != 0; } -void condition_dump(Condition *c, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t)) { +void condition_dump(Condition *c, FILE *f, const char *prefix, condition_to_string_t to_string) { assert(c); assert(f); + assert(to_string); prefix = strempty(prefix); @@ -844,7 +850,7 @@ void condition_dump(Condition *c, FILE *f, const char *prefix, const char *(*to_ condition_result_to_string(c->result)); } -void condition_dump_list(Condition *first, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t)) { +void condition_dump_list(Condition *first, FILE *f, const char *prefix, condition_to_string_t to_string) { Condition *c; LIST_FOREACH(conditions, c, first) diff --git a/src/shared/condition.h b/src/shared/condition.h index 6064ccdaed5..fa00f6ea983 100644 --- a/src/shared/condition.h +++ b/src/shared/condition.h @@ -74,11 +74,13 @@ static inline Condition* condition_free_list(Condition *first) { } int condition_test(Condition *c); -typedef int (*condition_test_logger_t)(void *userdata, int level, int error, const char *file, int line, const char *func, const char *format, ...) _printf_(7, 8); -bool condition_test_list(Condition *first, const char *(*to_string)(ConditionType t), condition_test_logger_t logger, void *userdata); -void condition_dump(Condition *c, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t)); -void condition_dump_list(Condition *c, FILE *f, const char *prefix, const char *(*to_string)(ConditionType t)); +typedef int (*condition_test_logger_t)(void *userdata, int level, int error, const char *file, int line, const char *func, const char *format, ...) _printf_(7, 8); +typedef const char* (*condition_to_string_t)(ConditionType t); +bool condition_test_list(Condition *first, condition_to_string_t, condition_test_logger_t logger, void *userdata); + +void condition_dump(Condition *c, FILE *f, const char *prefix, condition_to_string_t to_string); +void condition_dump_list(Condition *c, FILE *f, const char *prefix, condition_to_string_t to_string); const char* condition_type_to_string(ConditionType t) _const_; ConditionType condition_type_from_string(const char *s) _pure_;