39 lines
1.1 KiB
C
39 lines
1.1 KiB
C
#include "m-algo.h"
|
|
#include "m-array.h"
|
|
#include "m-string.h"
|
|
|
|
/* Define an array of int */
|
|
ARRAY_DEF(vector_int, int)
|
|
/* Register the oplist of this array of int globally */
|
|
#define M_OPL_vector_int_t() ARRAY_OPLIST(vector_int)
|
|
|
|
/* Set s (string_t) to the integer i */
|
|
#define str_ui(s, i) string_printf(s, "%d", i)
|
|
|
|
/* Concat two strings by insertion a '-' within them */
|
|
#define str_cat(s1, s2) (string_cat_str(s1, "-"), string_cat(s1, s2))
|
|
|
|
int main(void)
|
|
{
|
|
// Let s be a string_t and initilize it.
|
|
M_LET(s, string_t)
|
|
// Let v be a vector of integer and initialize it.
|
|
M_LET( (v, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10), vector_int_t) {
|
|
int sum, product;
|
|
|
|
// Compute the sum of theses integers.
|
|
ALGO_REDUCE(sum, v, vector_int_t, add);
|
|
|
|
// Compute the product of theses integers.
|
|
ALGO_REDUCE(product, v, vector_int_t, mul);
|
|
|
|
/* Example of reduction with a transformation of the type from int to string_t */
|
|
ALGO_REDUCE( (s, string_t), v, vector_int_t, str_cat, str_ui);
|
|
|
|
printf ("sum: %d\n"
|
|
"product: %d\n"
|
|
"dash str: %s\n", sum, product, string_get_cstr(s));
|
|
}
|
|
return 0;
|
|
}
|