From 76ef061dec97bbf80c684f4494e7354b3730ef51 Mon Sep 17 00:00:00 2001 From: Patrick Pelissier Date: Sat, 30 Dec 2023 16:22:34 +0100 Subject: [PATCH] Add basic example of generic interface --- example/ex11-generic01.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 example/ex11-generic01.c diff --git a/example/ex11-generic01.c b/example/ex11-generic01.c new file mode 100644 index 00000000..36abfb1f --- /dev/null +++ b/example/ex11-generic01.c @@ -0,0 +1,25 @@ +#include "m-list.h" +#include "m-generic.h" + +LIST_DEF(list_uint, unsigned int) +// Register for M_LET & M_EACH +#define M_OPL_list_uint_t() LIST_OPLIST(list_uint, M_BASIC_OPLIST) +// Register for Generic: +#define M_GENERIC_ORG_1() (USER) +#define M_GENERIC_ORG_USER_COMP_1() (CORE) +#define M_GENERIC_ORG_USER_COMP_CORE_OPLIST_1() M_OPL_list_uint_t() + +int main(void) +{ + M_LET(list, list_uint_t) { + // We can push in the list. It will call the registered method. + push(list, 42); + push(list, 17); + // We can iterate over the list + for each(item, list) { + M_PRINT("ITEM=", *item, "\n"); + } + // We can print directly the list. It will use the registered method + M_PRINT("List = ", list, "\n"); + } +}