aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorRaymaekers Luca <luca@spacehb.net>2025-03-18 11:26:40 +0100
committerRaymaekers Luca <luca@spacehb.net>2025-03-18 11:26:40 +0100
commitfee81a2dbda7791f462adc70e080e4bb6e96365f (patch)
tree22eeb8e39ecf018bbad00a7e327d47bf8e389c14 /examples
parentc1cbf799aef1393fecd707b6121c8a3d94d0a773 (diff)
Bug fixes
Fixed not outputting '@' if no keyword follows Fixed not outputting newline after @expand expression
Diffstat (limited to 'examples')
-rw-r--r--examples/table.c27
-rwxr-xr-xexamples/table.metabin0 -> 15488 bytes
-rw-r--r--examples/table.meta.c21
3 files changed, 48 insertions, 0 deletions
diff --git a/examples/table.c b/examples/table.c
new file mode 100644
index 0000000..63edb16
--- /dev/null
+++ b/examples/table.c
@@ -0,0 +1,27 @@
+#include <stdio.h>
+
+@table(name, str) MyEnumTable
+{
+ { A "A" }
+ { B "Beau Gosse" }
+ { C "C" }
+}
+
+typedef enum {
+@expand(MyEnumTable a)
+` MyEnum_$(a.name),`
+ MyEnum_Count
+} MyEnum;
+
+char *StringTable[MyEnum_Count] = {
+@expand(MyEnumTable a)
+` $(a.str),`
+};
+
+int
+main(int Argc, char *Args[])
+{
+ printf("@: %s\n", StringTable[MyEnum_B]);
+
+ return 0;
+}
diff --git a/examples/table.meta b/examples/table.meta
new file mode 100755
index 0000000..2976f54
--- /dev/null
+++ b/examples/table.meta
Binary files differ
diff --git a/examples/table.meta.c b/examples/table.meta.c
new file mode 100644
index 0000000..5534457
--- /dev/null
+++ b/examples/table.meta.c
@@ -0,0 +1,21 @@
+#include <stdio.h>
+
+
+
+typedef enum {
+ MyEnum_A, // "A" MyEnum_B, // "Beau Gosse" MyEnum_C, // "C" MyEnum_Count
+} MyEnum;
+
+char *StringTable[MyEnum_Count] = {
+ "A",
+ "Beau Gosse",
+ "C",
+};
+
+int
+main(int Argc, char *Args[])
+{
+ printf("%s\n", StringTable[MyEnum_B]);
+
+ return 0;
+}