aboutsummaryrefslogtreecommitdiff
path: root/toys.h
diff options
context:
space:
mode:
authorRob Landley <rob@landley.net>2015-12-13 16:52:26 -0600
committerRob Landley <rob@landley.net>2015-12-13 16:52:26 -0600
commitf96bb3d8e7ec3882c70b861b998d8573083ffe55 (patch)
treefdf93b80adb5dcbf23ce68202abe5da6ce6c66b7 /toys.h
parentfc7543b7f63c159d966ca6b71caf17f877eae985 (diff)
downloadtoybox-f96bb3d8e7ec3882c70b861b998d8573083ffe55.tar.gz
Start of TAGGED_ARRAY() infrastructure.
This lets you have struct arrays with a string as the first member, ala: struct {char *name; int x, y} blah thingy[] = TAGGED_ARRAY(BLAH, {"one", 1, 2}, {"two", 3, 4}, {"three", 5, 6} ); And it produces #defines for the array index of each, ala: #define BLAH_one 0 #define BLAH_two 1 #define BLAH_three 2 So you can use thingy[BLAH_two].x and still reorder the elements at will. Note: if you screw up the array initializers, temporarily replace TAGGED_ARRAY(BLAH, with { and the ); with }; and the compiler will give you better error messages. (With the macro the compiler reports errors on the TAGGED_ARRAY line, not where the comma is missing in its contents.) Currently the TAGGED_ARRAY( and ); must be on their own lines, and the { and start of each attached string must be on the same line.
Diffstat (limited to 'toys.h')
-rw-r--r--toys.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/toys.h b/toys.h
index 6aa7d479..8bd3be27 100644
--- a/toys.h
+++ b/toys.h
@@ -78,6 +78,7 @@
#include "generated/newtoys.h"
#include "generated/flags.h"
#include "generated/globals.h"
+#include "generated/tags.h"
// These live in main.c