
/*
 * arraycmp.h - a general-purpose array comparer in C
 * and C++ using compile-time genericity
 */
#include <generic.h>

#define arraycmp(T) name2(T, arraycmp)

#define arraycmpdeclare(T) \
    int arraycmp(T) \
        (const T a1[], const T a2[], size_t n)

#define arraycmpimplement(T) \
    arraycmpdeclare(T) \
    { \
    size_t i; \
    int cmp; \
\
    for (i = 0; i < n; ++i) \
        if ((cmp = name2(T, cf)(a1[i], a2[i])) != 0) \
            return cmp; \
    return 0; \
    }

