chiark / gitweb /
Switch to a variadic macro for generating alternate substitutions
authorBen Harris <bjh21@bjh21.me.uk>
Sat, 18 Jan 2025 17:55:42 +0000 (17:55 +0000)
committerBen Harris <bjh21@bjh21.me.uk>
Sun, 19 Jan 2025 00:49:30 +0000 (00:49 +0000)
bedstead.c

index 401ee0f9fd532104c420da6d1859b50efdb3edaa..c286f4fd3f90bde0a77b8981cfaaefec465062e2 100644 (file)
@@ -2968,38 +2968,40 @@ static struct gsub_feature {
        ALTSET(c, ALT3(a, b, c))
 #define CV2(base, a) CROSSALT2(base, base a)
 #define CV3(base, a, b) CROSSALT3(base, base a, base b)
+#define GET_MACRO(_1, _2, _3, x, ...) x
+#define CV(...) GET_MACRO(__VA_ARGS__, CV3, CV2)(__VA_ARGS__)
        /*
         * Where possible, Character Variant features have numbers
         * that are 32 less than the ASCII code of the base character.
         */
        { "cv07", SCRIPT_ALL, .name = "apostrophe variants",
-         .xml = ALTSUB(CV07(CV2)) },
+         .xml = ALTSUB(CV07(CV)) },
        { "cv12", SCRIPT_ALL, .name = "comma variants",
-         .xml = ALTSUB(CV12(CV2)) },
+         .xml = ALTSUB(CV12(CV)) },
        { "cv14", SCRIPT_ALL, .name = "full-stop variants",
-         .xml = ALTSUB(CV14(CV2)) },
+         .xml = ALTSUB(CV14(CV)) },
        { "cv26", SCRIPT_ALL, .name = "colon variants",
-         .xml = ALTSUB(CV26(CV2)) },
+         .xml = ALTSUB(CV26(CV)) },
        { "cv27", SCRIPT_ALL, .name = "semicolon variants",
-         .xml = ALTSUB(CV27(CV2)) },
+         .xml = ALTSUB(CV27(CV)) },
        { "cv31", SCRIPT_ALL, .name = "question-mark variants",
-         .xml = ALTSUB(CV31(CV2)) },
+         .xml = ALTSUB(CV31(CV)) },
        { "cv38", SCRIPT_ALL, .name = "capital-D variants",
-         .xml = ALTSUB(CV38(CV3)) },
+         .xml = ALTSUB(CV38(CV)) },
        { "cv42", SCRIPT_ALL, .name = "capital-J variants",
-         .xml = ALTSUB(CV42(CV2)) },
+         .xml = ALTSUB(CV42(CV)) },
        { "cv44", SCRIPT_ALL, .name = "capital-L variants",
-         .xml = ALTSUB(CV44(CV2)) },
+         .xml = ALTSUB(CV44(CV)) },
        { "cv61", SCRIPT_ALL, .name = "small-u-grave variants",
-         .xml = ALTSUB(CV61(CV2)) },
+         .xml = ALTSUB(CV61(CV)) },
        { "cv74", SCRIPT_ALL, .name = "small-j variants",
-         .xml = ALTSUB(CV74(CV2)) },
+         .xml = ALTSUB(CV74(CV)) },
        { "cv79", SCRIPT_ALL, .name = "small-o variants",
-         .xml = ALTSUB(CV79(CV2)) },
+         .xml = ALTSUB(CV79(CV)) },
        { "cv84", SCRIPT_ALL, .name = "small-t variants",
-         .xml = ALTSUB(CV84(CV2)) },
+         .xml = ALTSUB(CV84(CV)) },
        { "cv96", SCRIPT_ALL, .name = "cedilla variants",
-         .xml = ALTSUB(CV96(CV2)) },
+         .xml = ALTSUB(CV96(CV)) },
        { "ss14", SCRIPT_ALL,  ".sep4", .name = "4-cell separated graphics" },
        { "ss16", SCRIPT_ALL,  ".sep6", .name = "6-cell separated graphics" },
 };