Skip to content

Generate nested struct if anonymous struct or union has a field name #172

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jan 8, 2025

Conversation

lithiumtoast
Copy link
Member

@lithiumtoast lithiumtoast commented Jan 8, 2025

Found in SDL3:

typedef struct SDL_GamepadBinding
{
    SDL_GamepadBindingType input_type;
    union
    {
        int button;

        struct
        {
            int axis;
            int axis_min;
            int axis_max;
        } axis;

        struct
        {
            int hat;
            int hat_mask;
        } hat;

    } input;

    SDL_GamepadBindingType output_type;
    union
    {
        SDL_GamepadButton button;

        struct
        {
            SDL_GamepadAxis axis;
            int axis_min;
            int axis_max;
        } axis;

    } output;
} SDL_GamepadBinding;
    [StructLayout(LayoutKind.Explicit, Size = 32, Pack = 4)]
    public partial struct SDL_GamepadBinding
    {
        [FieldOffset(0)]
        public SDL_GamepadBindingType input_type; // size = 4

        [FieldOffset(4)]
        public SDL_GamepadBinding_Input input; // size = 12

        [FieldOffset(16)]
        public SDL_GamepadBindingType output_type; // size = 4

        [FieldOffset(20)]
        public SDL_GamepadBinding_Output output; // size = 12

        [StructLayout(LayoutKind.Explicit, Size = 12, Pack = 4)]
        public partial struct SDL_GamepadBinding_Input
        {
            [FieldOffset(0)]
            public int button; // size = 4

            [FieldOffset(0)]
            public SDL_GamepadBinding_Input_Axis axis; // size = 12

            [FieldOffset(0)]
            public SDL_GamepadBinding_Input_Hat hat; // size = 8

            [StructLayout(LayoutKind.Explicit, Size = 12, Pack = 4)]
            public partial struct SDL_GamepadBinding_Input_Axis
            {
                [FieldOffset(0)]
                public int axis; // size = 4

                [FieldOffset(4)]
                public int axis_min; // size = 4

                [FieldOffset(8)]
                public int axis_max; // size = 4
            }

            [StructLayout(LayoutKind.Explicit, Size = 8, Pack = 4)]
            public partial struct SDL_GamepadBinding_Input_Hat
            {
                [FieldOffset(0)]
                public int hat; // size = 4

                [FieldOffset(4)]
                public int hat_mask; // size = 4
            }
        }

        [StructLayout(LayoutKind.Explicit, Size = 12, Pack = 4)]
        public partial struct SDL_GamepadBinding_Output
        {
            [FieldOffset(0)]
            public SDL_GamepadButton button; // size = 4

            [FieldOffset(0)]
            public SDL_GamepadBinding_Output_Axis axis; // size = 12

            [StructLayout(LayoutKind.Explicit, Size = 12, Pack = 4)]
            public partial struct SDL_GamepadBinding_Output_Axis
            {
                [FieldOffset(0)]
                public SDL_GamepadAxis axis; // size = 4

                [FieldOffset(4)]
                public int axis_min; // size = 4

                [FieldOffset(8)]
                public int axis_max; // size = 4
            }
        }
    }

@lithiumtoast lithiumtoast merged commit 2a6a549 into main Jan 8, 2025
3 checks passed
@lithiumtoast lithiumtoast deleted the dev branch January 8, 2025 00:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant