From 90d65d3eacae0574f5326e3359488825ff931d4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C4=81vis=20Mos=C4=81ns?= Date: Mon, 2 Feb 2026 18:43:52 +0200 Subject: [PATCH] Support unnamed structs/unions/enums --- lib/ffi_generator/clang/cursor.rb | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/ffi_generator/clang/cursor.rb b/lib/ffi_generator/clang/cursor.rb index 2d79ac0..df52a5b 100644 --- a/lib/ffi_generator/clang/cursor.rb +++ b/lib/ffi_generator/clang/cursor.rb @@ -1,3 +1,5 @@ +require 'zlib' + module FFIGenerate module Clang @@ -84,7 +86,15 @@ def result_type end def spelling - String.from_c(C.get_cursor_spelling(@c)).to_s + spelling = String.from_c(C.get_cursor_spelling(@c)).to_s + # Fix names for unnamed items + if [:struct_decl, :union_decl, :enum_decl].include?(kind) && spelling.match?(/(struct|union|enum) \(unnamed at/) + usr = String.from_c(C.get_cursor_usr(@c)).to_s + prefix = usr.split('@')[2] + prefix = 'unnamed' unless prefix + spelling = prefix + Zlib::crc32(usr).to_s + end + spelling end def ==(other)