procs_darwin.odin 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #+private
  2. package runtime
  3. @(priority_index=-1e5)
  4. foreign import ObjC "system:objc"
  5. @(priority_index=-1e6)
  6. foreign import libSystem "system:System"
  7. import "base:intrinsics"
  8. objc_id :: ^intrinsics.objc_object
  9. objc_Class :: ^intrinsics.objc_class
  10. objc_SEL :: ^intrinsics.objc_selector
  11. objc_Ivar :: ^intrinsics.objc_ivar
  12. objc_BOOL :: bool
  13. objc_super :: struct {
  14. receiver: objc_id,
  15. super_class: objc_Class,
  16. }
  17. objc_IMP :: proc "c" (object: objc_id, sel: objc_SEL, #c_vararg args: ..any) -> objc_id
  18. foreign ObjC {
  19. sel_registerName :: proc "c" (name: cstring) -> objc_SEL ---
  20. objc_msgSend :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) ---
  21. objc_msgSend_fpret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) -> f64 ---
  22. objc_msgSend_fp2ret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) -> complex128 ---
  23. objc_msgSend_stret :: proc "c" (self: objc_id, op: objc_SEL, #c_vararg args: ..any) ---
  24. // See: https://github.com/opensource-apple/objc4/blob/cd5e62a5597ea7a31dccef089317abb3a661c154/runtime/objc-abi.h#L111
  25. objc_msgSendSuper2 :: proc "c" (super: rawptr, op: objc_SEL, #c_vararg args: ..any) -> objc_id ---
  26. objc_msgSendSuper2_stret :: proc "c" (super: ^objc_super, op: objc_SEL, #c_vararg args: ..any) ---
  27. objc_lookUpClass :: proc "c" (name: cstring) -> objc_Class ---
  28. objc_allocateClassPair :: proc "c" (superclass: objc_Class, name: cstring, extraBytes: uint) -> objc_Class ---
  29. objc_registerClassPair :: proc "c" (cls : objc_Class) ---
  30. class_addMethod :: proc "c" (cls: objc_Class, name: objc_SEL, imp: objc_IMP, types: cstring) -> objc_BOOL ---
  31. class_addIvar :: proc "c" (cls: objc_Class, name: cstring, size: uint, alignment: u8, types: cstring) -> objc_BOOL ---
  32. class_getInstanceVariable :: proc "c" (cls : objc_Class, name: cstring) -> objc_Ivar ---
  33. class_getInstanceSize :: proc "c" (cls : objc_Class) -> uint ---
  34. class_getSuperclass :: proc "c" (cls : objc_Class) -> objc_Class ---
  35. ivar_getOffset :: proc "c" (v: objc_Ivar) -> uintptr ---
  36. object_getClass :: proc "c" (obj: objc_id) -> objc_Class ---
  37. }
  38. foreign libSystem {
  39. _NSConcreteGlobalBlock: intrinsics.objc_class
  40. _NSConcreteStackBlock: intrinsics.objc_class
  41. _Block_object_assign :: proc "c" (rawptr, rawptr, i32) ---
  42. _Block_object_dispose :: proc "c" (rawptr, i32) ---
  43. }