%module union_parameter %warnfilter(SWIGWARN_PARSE_KEYWORD) type; // 'type' is a Go keyword, renamed as 'Xtype' %inline %{ typedef unsigned char Uint8; typedef struct SDL_ActiveEvent { Uint8 type; /* SDL_ACTIVEEVENT */ Uint8 gain; /* Whether given states were gained or lost (1/0) */ Uint8 state; /* A mask of the focus states */ } SDL_ActiveEvent; /* Keyboard event structure */ typedef struct SDL_KeyboardEvent { Uint8 type; /* SDL_KEYDOWN or SDL_KEYUP */ int which; /* The keyboard device index */ int state; /* SDL_PRESSED or SDL_RELEASED */ } SDL_KeyboardEvent; typedef union { Uint8 type; SDL_ActiveEvent active; SDL_KeyboardEvent key; } SDL_Event; int SDL_PollEvent (SDL_Event *ev) { static int toggle = 0; if (toggle == 0) { ev->type = 1; ev->active.gain = 20; ev->active.state = 30; } else { ev->type = 2; ev->key.which = 2000; ev->key.state = 3000; } toggle = 1 - toggle; return 1; } %}