summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Meyering <jim@meyering.net>1999-01-25 14:52:13 +0000
committerJim Meyering <jim@meyering.net>1999-01-25 14:52:13 +0000
commit5be2c8c550d9adb32302e0c6717abd95ea114e0d (patch)
tree733f5f00abc0a2930fcbceb136f616db81cde025
parent37b539523a6672332fec8bf7c6b3ccaefe35bb08 (diff)
downloadgnulib-5be2c8c550d9adb32302e0c6717abd95ea114e0d.tar.gz
(ARRAY_CARDINALITY): Define.
(ARGMATCH_ASSERT): New macro.
-rw-r--r--lib/argmatch.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/argmatch.h b/lib/argmatch.h
index 1cca39f602..d3f25cc333 100644
--- a/lib/argmatch.h
+++ b/lib/argmatch.h
@@ -35,6 +35,17 @@
# 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