aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2025-12-08 14:35:22 +0000
committergingerBill <gingerBill@users.noreply.github.com>2025-12-08 14:35:22 +0000
commite6827393cf2f385a4cd13d605c5280ace33a84f2 (patch)
tree4f0bb9d2f7e8cb189ca7b7ea641f3869705a39b5
parent3a3239294c9e4a7504bfb60e3cb5f8229fe6a326 (diff)
Add `raw_union_tag` struct tag fields to many types in `vendor`
-rw-r--r--core/fmt/fmt.odin9
-rw-r--r--vendor/cgltf/cgltf.odin4
-rw-r--r--vendor/commonmark/cmark.odin12
-rw-r--r--vendor/ggpo/ggpo.odin18
-rw-r--r--vendor/kb_text_shape/kb_text_shape_types.odin4
-rw-r--r--vendor/miniaudio/device_io_types.odin8
-rw-r--r--vendor/sdl3/sdl3_events.odin114
-rw-r--r--vendor/sdl3/sdl3_gamepad.odin10
8 files changed, 110 insertions, 69 deletions
diff --git a/core/fmt/fmt.odin b/core/fmt/fmt.odin
index c05b8eb62..c958c2d2e 100644
--- a/core/fmt/fmt.odin
+++ b/core/fmt/fmt.odin
@@ -2076,9 +2076,6 @@ handle_tag :: proc(state: ^Info_State, data: rawptr, info: reflect.Type_Info_Str
__handle_raw_union_tag :: proc(fi: ^Info, v: any, the_verb: rune, info: runtime.Type_Info_Struct, type_name: string) -> (ok: bool) {
- if fi.state.parent_struct == nil {
- return false
- }
ut := type_info_of(v.id)
if !reflect.is_raw_union(ut) {
@@ -2104,8 +2101,14 @@ __handle_raw_union_tag :: proc(fi: ^Info, v: any, the_verb: rune, info: runtime.
tag := reflect.struct_field_value_by_name(fi.state.parent_struct, tag_name, true)
if tag == nil {
+ // try the current type just in case the tag is also stored here
+ tag = reflect.struct_field_value_by_name(v, tag_name, false)
+ }
+ if tag == nil {
return false
}
+
+
tag_info := reflect.type_info_base(type_info_of(tag.id))
#partial switch ti in tag_info.variant {
case reflect.Type_Info_Enum:
diff --git a/vendor/cgltf/cgltf.odin b/vendor/cgltf/cgltf.odin
index aeceb14c5..db1d1c6c0 100644
--- a/vendor/cgltf/cgltf.odin
+++ b/vendor/cgltf/cgltf.odin
@@ -511,8 +511,8 @@ camera :: struct {
name: cstring,
type: camera_type,
data: struct #raw_union {
- perspective: camera_perspective,
- orthographic: camera_orthographic,
+ perspective: camera_perspective `raw_union_tag:"type=.perspective"`,
+ orthographic: camera_orthographic `raw_union_tag:"type=.orthographic"`,
},
extras: extras_t,
extensions_count: uint,
diff --git a/vendor/commonmark/cmark.odin b/vendor/commonmark/cmark.odin
index fd1be45fd..574b977e0 100644
--- a/vendor/commonmark/cmark.odin
+++ b/vendor/commonmark/cmark.odin
@@ -154,12 +154,12 @@ Node :: struct {
flags: Node_Flags,
as: struct #raw_union {
- list: List,
- code: Code,
- heading: Heading,
- link: Link,
- custom: Custom,
- html_block_type: c.int,
+ list: List `raw_union_tag:"type=.List"`,
+ code: Code `raw_union_tag:"type=.Code"`,
+ heading: Heading `raw_union_tag:"type=.Heading"`,
+ link: Link `raw_union_tag:"type=.Link"`,
+ custom: Custom `raw_union_tag:"type=.Custom"`,
+ html_block_type: c.int `raw_union_tag:"type=.HTML_Block"`,
},
}
diff --git a/vendor/ggpo/ggpo.odin b/vendor/ggpo/ggpo.odin
index 80b6a0d4a..01e03b6cb 100644
--- a/vendor/ggpo/ggpo.odin
+++ b/vendor/ggpo/ggpo.odin
@@ -59,11 +59,11 @@ Player :: struct {
type: PlayerType,
player_num: c.int,
using u: struct #raw_union {
- local: struct {},
+ local: struct {} `raw_union_tag:"type=.LOCAL"`,
remote: struct {
ip_address: [32]byte,
port: u16,
- },
+ } `raw_union_tag:"type=.REMOTE"`,
},
}
@@ -132,28 +132,28 @@ Event :: struct {
using u: struct #raw_union {
connected: struct {
player: PlayerHandle,
- },
+ } `raw_union_tag:"code=.CONNECTED_TO_PEER"`,
synchronizing: struct {
player: PlayerHandle,
count: c.int,
total: c.int,
- },
+ } `raw_union_tag:"code=.SYNCHRONIZING_WITH_PEER"`,
synchronized: struct {
player: PlayerHandle,
- },
+ } `raw_union_tag:"code=.SYNCHRONIZED_WITH_PEER"`,
disconnected: struct {
player: PlayerHandle,
- },
+ } `raw_union_tag:"code=.DISCONNECTED_FROM_PEER"`,
timesync: struct {
frames_ahead: c.int,
- },
+ } `raw_union_tag:"code=.TIMESYNC"`,
connection_interrupted: struct {
player: PlayerHandle,
disconnect_timeout: c.int,
- },
+ } `raw_union_tag:"code=.connection_interrupted"`,
connection_resumed: struct {
player: PlayerHandle,
- },
+ } `raw_union_tag:"code=.connection_resumed"`,
},
}
diff --git a/vendor/kb_text_shape/kb_text_shape_types.odin b/vendor/kb_text_shape/kb_text_shape_types.odin
index 2d29267ae..fa3c47f85 100644
--- a/vendor/kb_text_shape/kb_text_shape_types.odin
+++ b/vendor/kb_text_shape/kb_text_shape_types.odin
@@ -1776,8 +1776,8 @@ allocator_op :: struct {
Kind: allocator_op_kind,
using op: struct #raw_union {
- Allocate: allocator_op_allocate,
- Free: allocator_op_free,
+ Allocate: allocator_op_allocate `raw_union_tag:"Kind=.ALLOCATE"`,
+ Free: allocator_op_free `raw_union_tag:"Kind=.FREE"`,
},
}
diff --git a/vendor/miniaudio/device_io_types.odin b/vendor/miniaudio/device_io_types.odin
index 9d64602f8..f9b8ecb40 100644
--- a/vendor/miniaudio/device_io_types.odin
+++ b/vendor/miniaudio/device_io_types.odin
@@ -93,16 +93,16 @@ device_notification :: struct {
data: struct #raw_union {
started: struct {
_unused: c.int,
- },
+ } `raw_union_tag:"type=.started"`,
stopped: struct {
_unused: c.int,
- },
+ } `raw_union_tag:"type=.stopped"`,
rerouted: struct {
_unused: c.int,
- },
+ } `raw_union_tag:"type=.rerouted"`,
interruption: struct {
_unused: c.int,
- },
+ } `raw_union_tag:"type=.interruption_began,.interruption_ended,"`,
},
}
diff --git a/vendor/sdl3/sdl3_events.odin b/vendor/sdl3/sdl3_events.odin
index 3f64f85fa..999fe58b7 100644
--- a/vendor/sdl3/sdl3_events.odin
+++ b/vendor/sdl3/sdl3_events.odin
@@ -519,44 +519,82 @@ UserEvent :: struct {
Event :: struct #raw_union {
- type: EventType, /**< Event type, shared with all events, Uint32 to cover user events which are not in the SDL_EventType enumeration */
- common: CommonEvent, /**< Common event data */
- display: DisplayEvent, /**< Display event data */
- window: WindowEvent, /**< Window event data */
- kdevice: KeyboardDeviceEvent, /**< Keyboard device change event data */
- key: KeyboardEvent, /**< Keyboard event data */
- edit: TextEditingEvent, /**< Text editing event data */
- edit_candidates: TextEditingCandidatesEvent, /**< Text editing candidates event data */
- text: TextInputEvent, /**< Text input event data */
- mdevice: MouseDeviceEvent, /**< Mouse device change event data */
- motion: MouseMotionEvent, /**< Mouse motion event data */
- button: MouseButtonEvent, /**< Mouse button event data */
- wheel: MouseWheelEvent, /**< Mouse wheel event data */
- jdevice: JoyDeviceEvent, /**< Joystick device change event data */
- jaxis: JoyAxisEvent, /**< Joystick axis event data */
- jball: JoyBallEvent, /**< Joystick ball event data */
- jhat: JoyHatEvent, /**< Joystick hat event data */
- jbutton: JoyButtonEvent, /**< Joystick button event data */
- jbattery: JoyBatteryEvent, /**< Joystick battery event data */
- gdevice: GamepadDeviceEvent, /**< Gamepad device event data */
- gaxis: GamepadAxisEvent, /**< Gamepad axis event data */
- gbutton: GamepadButtonEvent, /**< Gamepad button event data */
- gtouchpad: GamepadTouchpadEvent, /**< Gamepad touchpad event data */
- gsensor: GamepadSensorEvent, /**< Gamepad sensor event data */
- adevice: AudioDeviceEvent, /**< Audio device event data */
- cdevice: CameraDeviceEvent, /**< Camera device event data */
- sensor: SensorEvent, /**< Sensor event data */
- quit: QuitEvent, /**< Quit request event data */
- user: UserEvent, /**< Custom event data */
- tfinger: TouchFingerEvent, /**< Touch finger event data */
- pproximity: PenProximityEvent, /**< Pen proximity event data */
- ptouch: PenTouchEvent, /**< Pen tip touching event data */
- pmotion: PenMotionEvent, /**< Pen motion event data */
- pbutton: PenButtonEvent, /**< Pen button event data */
- paxis: PenAxisEvent, /**< Pen axis event data */
- render: RenderEvent, /**< Render event data */
- drop: DropEvent, /**< Drag and drop event data */
- clipboard: ClipboardEvent, /**< Clipboard event data */
+ /**< Event type, shared with all events, Uint32 to cover user events which are not in the SDL_EventType enumeration */
+ type: EventType `raw_union_tag:"type=FIRST"`,
+ /**< Common event data */
+ common: CommonEvent `raw_union_tag:"type=TERMINATE,LOW_MEMORY,WILL_ENTER_BACKGROUND,DID_ENTER_BACKGROUND,WILL_ENTER_FOREGROUND,DID_ENTER_FOREGROUND,LOCALE_CHANGED,SYSTEM_THEME_CHANGED,POLL_SENTINEL"`,
+ /**< Display event data */
+ display: DisplayEvent `raw_union_tag:"type=DISPLAY_ORIENTATION,DISPLAY_ADDED,DISPLAY_REMOVED,DISPLAY_MOVED,DISPLAY_DESKTOP_MODE_CHANGED,DISPLAY_CURRENT_MODE_CHANGED,DISPLAY_CONTENT_SCALE_CHANGED"`,
+ /**< Window event data */
+ window: WindowEvent `raw_union_tag:"type=WINDOW_SHOWN,WINDOW_HIDDEN,WINDOW_EXPOSED,WINDOW_MOVED,WINDOW_RESIZED,WINDOW_PIXEL_SIZE_CHANGED,WINDOW_METAL_VIEW_RESIZED,WINDOW_MINIMIZED,WINDOW_MAXIMIZED,WINDOW_RESTORED,WINDOW_MOUSE_ENTER,WINDOW_MOUSE_LEAVE,WINDOW_FOCUS_GAINED,WINDOW_FOCUS_LOST,WINDOW_CLOSE_REQUESTED,WINDOW_HIT_TEST,WINDOW_ICCPROF_CHANGED,WINDOW_DISPLAY_CHANGED,WINDOW_DISPLAY_SCALE_CHANGED,WINDOW_SAFE_AREA_CHANGED,WINDOW_OCCLUDED,WINDOW_ENTER_FULLSCREEN,WINDOW_LEAVE_FULLSCREEN,WINDOW_DESTROYED"`,
+ /**< Keyboard device change event data */
+ kdevice: KeyboardDeviceEvent `raw_union_tag:"type=KEYMAP_CHANGED,KEYBOARD_ADDED,KEYBOARD_REMOVED"`,
+ /**< Keyboard event data */
+ key: KeyboardEvent `raw_union_tag:"type=KEY_DOWN,KEY_UP"`,
+ /**< Text editing event data */
+ edit: TextEditingEvent `raw_union_tag:"type=TEXT_EDITING"`,
+ /**< Text editing candidates event data */
+ edit_candidates: TextEditingCandidatesEvent `raw_union_tag:"type=TEXT_EDITING_CANDIDATES"`,
+ /**< Text input event data */
+ text: TextInputEvent `raw_union_tag:"type=TEXT_INPUT"`,
+ /**< Mouse device change event data */
+ mdevice: MouseDeviceEvent `raw_union_tag:"type=MOUSE_ADDED,MOUSE_REMOVED"`,
+ /**< Mouse motion event data */
+ motion: MouseMotionEvent `raw_union_tag:"type=MOUSE_MOTION"`,
+ /**< Mouse button event data */
+ button: MouseButtonEvent `raw_union_tag:"type=MOUSE_BUTTON_DOWN,MOUSE_BUTTON_UP"`,
+ /**< Mouse wheel event data */
+ wheel: MouseWheelEvent `raw_union_tag:"type=MOUSE_WHEEL"`,
+ /**< Joystick device change event data */
+ jdevice: JoyDeviceEvent `raw_union_tag:"type=JOYSTICK_ADDED,JOYSTICK_REMOVED,JOYSTICK_UPDATE_COMPLETE"`,
+ /**< Joystick axis event data */
+ jaxis: JoyAxisEvent `raw_union_tag:"type=JOYSTICK_AXIS_MOTION"`,
+ /**< Joystick ball event data */
+ jball: JoyBallEvent `raw_union_tag:"type=JOYSTICK_BALL_MOTION"`,
+ /**< Joystick hat event data */
+ jhat: JoyHatEvent `raw_union_tag:"type=JOYSTICK_HAT_MOTION"`,
+ /**< Joystick button event data */
+ jbutton: JoyButtonEvent `raw_union_tag:"type=JOYSTICK_BUTTON_DOWN,JOYSTICK_BUTTON_UP"`,
+ /**< Joystick battery event data */
+ jbattery: JoyBatteryEvent `raw_union_tag:"type=JOYSTICK_BATTERY_UPDATED"`,
+ /**< Gamepad device event data */
+ gdevice: GamepadDeviceEvent `raw_union_tag:"type=GAMEPAD_ADDED,GAMEPAD_REMOVED,GAMEPAD_REMAPPED,GAMEPAD_UPDATE_COMPLETE,GAMEPAD_STEAM_HANDLE_UPDATED"`,
+ /**< Gamepad axis event data */
+ gaxis: GamepadAxisEvent `raw_union_tag:"type=GAMEPAD_AXIS_MOTION"`,
+ /**< Gamepad button event data */
+ gbutton: GamepadButtonEvent `raw_union_tag:"type=GAMEPAD_BUTTON_DOWN,GAMEPAD_BUTTON_UP"`,
+ /**< Gamepad touchpad event data */
+ gtouchpad: GamepadTouchpadEvent `raw_union_tag:"type=GAMEPAD_TOUCHPAD_DOWN,GAMEPAD_TOUCHPAD_MOTION,GAMEPAD_TOUCHPAD_UP"`,
+ /**< Gamepad sensor event data */
+ gsensor: GamepadSensorEvent `raw_union_tag:"type=GAMEPAD_SENSOR_UPDATE"`,
+ /**< Audio device event data */
+ adevice: AudioDeviceEvent `raw_union_tag:"type=AUDIO_DEVICE_ADDED,AUDIO_DEVICE_REMOVED,AUDIO_DEVICE_FORMAT_CHANGED"`,
+ /**< Camera device event data */
+ cdevice: CameraDeviceEvent `raw_union_tag:"type=CAMERA_DEVICE_ADDED,CAMERA_DEVICE_REMOVED,CAMERA_DEVICE_APPROVED,CAMERA_DEVICE_DENIED"`,
+ /**< Sensor event data */
+ sensor: SensorEvent `raw_union_tag:"type=SENSOR_UPDATE"`,
+ /**< Quit request event data */
+ quit: QuitEvent `raw_union_tag:"type=QUIT"`,
+ /**< Custom event data */
+ user: UserEvent `raw_union_tag:"type=USER"`,
+ /**< Touch finger event data */
+ tfinger: TouchFingerEvent `raw_union_tag:"type=FINGER_DOWN,FINGER_UP,FINGER_MOTION,FINGER_CANCELED"`,
+ /**< Pen proximity event data */
+ pproximity: PenProximityEvent `raw_union_tag:"type=PEN_PROXIMITY_IN,PEN_PROXIMITY_OUT"`,
+ /**< Pen tip touching event data */
+ ptouch: PenTouchEvent `raw_union_tag:"type=PEN_DOWN,PEN_UP"`,
+ /**< Pen motion event data */
+ pmotion: PenMotionEvent `raw_union_tag:"type=PEN_MOTION"`,
+ /**< Pen button event data */
+ pbutton: PenButtonEvent `raw_union_tag:"type=PEN_BUTTON_DOWN,PEN_BUTTON_UP"`,
+ /**< Pen axis event data */
+ paxis: PenAxisEvent `raw_union_tag:"type=PEN_AXIS"`,
+ /**< Render event data */
+ render: RenderEvent `raw_union_tag:"type=RENDER_TARGETS_RESET,RENDER_DEVICE_RESET,RENDER_DEVICE_LOST"`,
+ /**< Drag and drop event data */
+ drop: DropEvent `raw_union_tag:"type=DROP_FILE,DROP_TEXT,DROP_BEGIN,DROP_COMPLETE,DROP_POSITION"`,
+ /**< Clipboard event data */
+ clipboard: ClipboardEvent `raw_union_tag:"type=CLIPBOARD_UPDATE"`,
/* This is necessary for ABI compatibility between Visual C++ and GCC.
Visual C++ will respect the push pack pragma and use 52 bytes (size of
diff --git a/vendor/sdl3/sdl3_gamepad.odin b/vendor/sdl3/sdl3_gamepad.odin
index 225accaee..2366f8704 100644
--- a/vendor/sdl3/sdl3_gamepad.odin
+++ b/vendor/sdl3/sdl3_gamepad.odin
@@ -81,29 +81,29 @@ GamepadBindingType :: enum c.int {
GamepadBinding :: struct {
input_type: GamepadBindingType,
input: struct #raw_union {
- button: c.int,
+ button: c.int `raw_union_tag:"input_type=.BUTTON"`,
axis: struct {
axis: c.int,
axis_min: c.int,
axis_max: c.int,
- },
+ } `raw_union_tag:"input_type=.AXIS"`,
hat: struct {
hat: c.int,
hat_mask: c.int,
- },
+ } `raw_union_tag:"input_type=.HAT"`,
},
output_type: GamepadBindingType,
output: struct #raw_union {
- button: GamepadButton,
+ button: GamepadButton `raw_union_tag:"output_type=.BUTTON"`,
axis: struct {
axis: GamepadAxis,
axis_min: c.int,
axis_max: c.int,
- },
+ } `raw_union_tag:"output_type=.AXIS"`,
},
}