]> Savannah Git Hosting - gnulib.git/commitdiff
(ARRAY_CARDINALITY): Define.
authorJim Meyering <jim@meyering.net>
Mon, 25 Jan 1999 14:52:13 +0000 (14:52 +0000)
committerJim Meyering <jim@meyering.net>
Mon, 25 Jan 1999 14:52:13 +0000 (14:52 +0000)
(ARGMATCH_ASSERT): New macro.

lib/argmatch.h

index 1cca39f60282e1f6675fb02a68e282ee9f9c01a1..d3f25cc3331c41f0623d10a6e733258f153cd0b7 100644 (file)
 #  endif  /* GCC.  */
 # endif  /* Not PARAMS.  */
 
+/* Assert there are as many real arguments as there are values
+   (argument list ends with a NULL guard).  There is no execution
+   cost, since it will be statically evalauted to `assert (0)' or
+   `assert (1)'.  Unfortunately there is no -Wassert-0. */
+
+# undef ARRAY_CARDINALITY
+# define ARRAY_CARDINALITY(Array) (sizeof ((Array)) / sizeof (*(Array)))
+
+# define ARGMATCH_ASSERT(Arglist, Vallist)      \
+  assert (ARRAY_CARDINALITY ((Arglist)) == ARRAY_CARDINALITY ((Vallist)) + 1)
+
 /* Return the index of the element of ARGLIST (NULL terminated) that
    matches with ARG.  If VALLIST is not NULL, then use it to resolve
    false ambiguities (i.e., different matches of ARG but corresponding