From 79158dabbc57f09228e3e648e04277cd22aae0e6 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sun, 22 Jul 2018 21:32:46 +0200 Subject: [PATCH] Rename _map into _for_each. --- doc/API.txt | 1 + m-algo.h | 32 ++++++++++++++++---------------- tests/test-malgo.c | 10 +++++----- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/doc/API.txt b/doc/API.txt index 4acf97d8..c9f4bfd7 100644 --- a/doc/API.txt +++ b/doc/API.txt @@ -18,5 +18,6 @@ V0.2.*: * worker_sync takes a 'worker_t' as an additional parameter since it only requires one argument. * ALGO _contains ==> _contain_p since it is a predicate '_p' and it shall be in infinitive form. + * Rename algo _map into _for_each (Standard name). diff --git a/m-algo.h b/m-algo.h index 05f334fb..147d26f9 100644 --- a/m-algo.h +++ b/m-algo.h @@ -37,11 +37,11 @@ /* Map a function or a macro to all elements of a container. USAGE: - ALGO_MAP(container, containerOplist, function[, extra arguments of function]) */ -#define ALGO_MAP(container, cont_oplist, ...) \ + ALGO_FOR_EACH(container, containerOplist, function[, extra arguments of function]) */ +#define ALGO_FOR_EACH(container, cont_oplist, ...) \ M_IF_NARGS_EQ1(__VA_ARGS__) \ - (ALGOI_MAP(container, M_GLOBAL_OPLIST(cont_oplist), __VA_ARGS__), \ - ALGOI_MAP_ARG(container, M_GLOBAL_OPLIST(cont_oplist), __VA_ARGS__ )) + (ALGOI_FOR_EACH(container, M_GLOBAL_OPLIST(cont_oplist), __VA_ARGS__), \ + ALGOI_FOR_EACH_ARG(container, M_GLOBAL_OPLIST(cont_oplist), __VA_ARGS__ )) /* Extract a subset of a container to fill in another container. @@ -63,8 +63,8 @@ M_IF_NARGS_EQ1(__VA_ARGS__) \ (ALGOI_REDUCE(dest, M_GLOBAL_OPLIST(cont), M_GLOBAL_OPLIST(contOp), __VA_ARGS__), \ M_IF_NARGS_EQ2(__VA_ARGS__) \ - (ALGOI_REDUCE_MAP(dest, M_GLOBAL_OPLIST(cont), M_GLOBAL_OPLIST(contOp), __VA_ARGS__), \ - ALGOI_REDUCE_MAP_ARG(dest, M_GLOBAL_OPLIST(cont), M_GLOBAL_OPLIST(contOp), __VA_ARGS__) ) ) + (ALGOI_REDUCE_FOR_EACH(dest, M_GLOBAL_OPLIST(cont), M_GLOBAL_OPLIST(contOp), __VA_ARGS__), \ + ALGOI_REDUCE_FOR_EACH_ARG(dest, M_GLOBAL_OPLIST(cont), M_GLOBAL_OPLIST(contOp), __VA_ARGS__) ) ) /* Initialize & set a container with a variable array list. @@ -237,7 +237,7 @@ } \ \ static inline void \ - M_C(name, _map) (container_t l, void (*f)(type_t const) ) \ + M_C(name, _for_each) (container_t l, void (*f)(type_t) ) \ { \ for M_EACH(item, l, cont_oplist) { \ f(*item); \ @@ -711,18 +711,18 @@ //TODO: Algorithm missing // nth_element ( http://softwareengineering.stackexchange.com/questions/284767/kth-selection-routine-floyd-algorithm-489 ) -//, average, find_if, count_if, ... +//, average -#define ALGOI_MAP(container, cont_oplist, func) do { \ +#define ALGOI_FOR_EACH(container, cont_oplist, func) do { \ for M_EACH(item, container, cont_oplist) { \ - func(*item); \ - } \ + func(*item); \ + } \ } while (0) -#define ALGOI_MAP_ARG(container, cont_oplist, func, ...) do { \ +#define ALGOI_FOR_EACH_ARG(container, cont_oplist, func, ...) do { \ for M_EACH(item, container, cont_oplist) { \ - func(__VA_ARGS__, *item); \ - } \ + func(__VA_ARGS__, *item); \ + } \ } while (0) #define ALGOI_EXTRACT(contDst, contDstOplist, \ @@ -786,7 +786,7 @@ } \ } while (0) -#define ALGOI_REDUCE_MAP(dest, cont, cont_oplist, reduceFunc, mapFunc) do { \ +#define ALGOI_REDUCE_FOR_EACH(dest, cont, cont_oplist, reduceFunc, mapFunc) do { \ bool m_init_done = false; \ M_GET_SUBTYPE cont_oplist m_tmp; \ M_GET_INIT M_GET_OPLIST cont_oplist (m_tmp); \ @@ -802,7 +802,7 @@ M_GET_CLEAR M_GET_OPLIST cont_oplist (m_tmp); \ } while (0) -#define ALGOI_REDUCE_MAP_ARG(dest, cont, cont_oplist, reduceFunc, mapFunc, ...) do { \ +#define ALGOI_REDUCE_FOR_EACH_ARG(dest, cont, cont_oplist, reduceFunc, mapFunc, ...) do { \ bool m_init_done = false; \ M_GET_SUBTYPE cont_oplist m_tmp; \ M_GET_INIT M_GET_OPLIST cont_oplist (m_tmp); \ diff --git a/tests/test-malgo.c b/tests/test-malgo.c index 507cdd30..b630d125 100644 --- a/tests/test-malgo.c +++ b/tests/test-malgo.c @@ -116,9 +116,9 @@ static void test_list(void) assert (algo_list_none_of_p(l, func_test_pos) == false); #define f(x) assert((x) >= 0 && (x) < 100); - ALGO_MAP(l, LIST_OPLIST(list_int), f); + ALGO_FOR_EACH(l, LIST_OPLIST(list_int), f); #define g(y, x) assert((x) >= 0 && (x) < y); - ALGO_MAP(l, LIST_OPLIST(list_int), g, 100); + ALGO_FOR_EACH(l, LIST_OPLIST(list_int), g, 100); assert( algo_list_count_if(l, func_test_42) == 1); assert( algo_list_count_if(l, func_test_101) == 0); @@ -203,13 +203,13 @@ static void test_array(void) assert (array_int_end_p (it)); #define f(x) assert((x) >= 0 && (x) < 100); - ALGO_MAP(l, ARRAY_OPLIST(array_int), f); - ALGO_MAP(l, array_int_t, f); + ALGO_FOR_EACH(l, ARRAY_OPLIST(array_int), f); + ALGO_FOR_EACH(l, array_int_t, f); g_min = 0; g_max = 99; g_count = 0; - algo_array_map(l, g_f); + algo_array_for_each(l, g_f); assert(g_count == 101); int n;