Rqt-close - Odin

import "core:runtime" cleanup_my_resource :: proc(data: rawptr) handle := cast(^windows.HANDLE)data CloseHandle(handle^)

when ODIN_OS == "windows" close_fn :: proc(h: rawptr) windows.CloseHandle(transmute(windows.HANDLE)h) else when ODIN_OS == "linux" || ODIN_OS == "darwin" close_fn :: proc(fd: rawptr) sys.linux.close(transmute(int)fd) odin rqt-close

A typical Odin solution uses conditional compilation: odin rqt-close

close_resource :: proc(resource: ^Raw_Resource) when ODIN_OS == "windows" sys.windows.CloseHandle(resource.handle) else when ODIN_OS == "linux" sys.linux.close(resource.fd) resource.valid = false odin rqt-close

if my_handle != INVALID_HANDLE CloseHandle(my_handle) my_handle = INVALID_HANDLE

Example: