freedreno/registers: C++ struct casting
authorRob Clark <robdclark@chromium.org>
Sun, 23 Apr 2023 14:55:55 +0000 (07:55 -0700)
committerMarge Bot <emma+marge@anholt.net>
Mon, 24 Apr 2023 22:42:04 +0000 (22:42 +0000)
Using C style `(struct foo){ ..args..}` at least confuses eclipse, so
for C++ code use `{ ..args.. }` instead.

Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/22646>

src/freedreno/registers/gen_header.py

index 4a933a4..4e11b8d 100644 (file)
@@ -221,10 +221,10 @@ class Bitset(object):
                        skip = ""
 
                if reg.array:
-                       print("#define %s(__i, ...) pack_%s(__i, (struct %s) { __VA_ARGS__ })%s\n" %
+                       print("#define %s(__i, ...) pack_%s(__i, __struct_cast(%s) { __VA_ARGS__ })%s\n" %
                                  (prefix, prefix, prefix, skip))
                else:
-                       print("#define %s(...) pack_%s((struct %s) { __VA_ARGS__ })%s\n" %
+                       print("#define %s(...) pack_%s(__struct_cast(%s) { __VA_ARGS__ })%s\n" %
                                  (prefix, prefix, prefix, skip))
 
 
@@ -649,6 +649,12 @@ def main():
        print("#include <assert.h>")
        print()
 
+       print("#ifdef __cplusplus");
+       print("#define __struct_cast(X)")
+       print("#else")
+       print("#define __struct_cast(X) (struct X)")
+       print("#endif")
+
        try:
                p.parse(rnn_path, xml_file)
        except Error as e: