commit 860e81dd634e47beaa4b9bc2a97e9a165f6df4ff
Author:     Laslo Hunhold <[email protected]>
AuthorDate: Fri Jan 7 18:16:33 2022 +0100
Commit:     Laslo Hunhold <[email protected]>
CommitDate: Fri Jan 7 18:16:33 2022 +0100

    Insert numbers instead of enum-names into mono-table
    
    Even though it all worked and made it a tiny bit more "semantic",
    the generated table weighed in at around 500K (around 5 times larger
    than necessary) and given we work with the values as uint8_t's anyway,
    it doesn't make a difference to enter them as such.
    
    Signed-off-by: Laslo Hunhold <[email protected]>

diff --git a/gen/properties.c b/gen/properties.c
index 88bcbba..b134dd9 100644
--- a/gen/properties.c
+++ b/gen/properties.c
@@ -1,5 +1,6 @@
 /* See LICENSE file for copyright and license details. */
 #include <errno.h>
+#include <inttypes.h>
 #include <stddef.h>
 #include <stdint.h>
 #include <stdio.h>
@@ -296,7 +297,7 @@ print_lookup_table(char *name, size_t *data, size_t datalen)
               (maxval <= UINT_LEAST32_MAX) ? "uint_least32_t" :
                                              "uint_least64_t";
 
-       printf("const %s %s[] = {\n\t", type, name);
+       printf("static const %s %s[] = {\n\t", type, name);
        for (i = 0; i < datalen; i++) {
                printf("%zu", data[i]);
                if (i + 1 == datalen) {
@@ -317,16 +318,14 @@ print_lookup_table(char *name, size_t *data, size_t 
datalen)
  */
 static void
 print_enum_lookup_table(char *name, size_t *offset, size_t offsetlen,
-                        const struct properties *prop,
-                        const struct property_spec *spec,
-                        const char *enumprefix)
+                        const struct properties *prop)
 {
        size_t i;
 
-       printf("const uint8_t %s[] = {\n\t", name);
+       printf("static const uint8_t %s[] = {\n\t", name);
        for (i = 0; i < offsetlen; i++) {
-               printf("%s_%s", enumprefix,
-                      spec[*((uint_least8_t *)&(prop[offset[i]]))].enumname);
+               printf("%"PRIuLEAST8,
+                      *((const uint_least8_t *)&(prop[offset[i]])));
                if (i + 1 == offsetlen) {
                        printf("\n");
                } else if ((i + 1) % 8 != 0) {
@@ -392,8 +391,7 @@ main(int argc, char *argv[])
 
        print_lookup_table("major", mm.major, 0x1100);
        printf("\n");
-       print_enum_lookup_table("minor", mm.minor, mm.minorlen, comp.data, 
char_break_property, "CHAR_BREAK_PROP");
-       printf("\n");
+       print_enum_lookup_table("minor", mm.minor, mm.minorlen, comp.data);
 
        /* free data */
        free(prop);

Reply via email to