(sel:str, restype=id_, argtypes=[], retain=False, clsmeth=False)
| 28 | dispatch_data_create = returns_retained(dispatch_data_create) |
| 29 | |
| 30 | def msg(sel:str, restype=id_, argtypes=[], retain=False, clsmeth=False): |
| 31 | # Using attribute access returns a new reference so setting restype is safe |
| 32 | (sender:=lib["objc_msgSend"]).restype, sender.argtypes = restype, [id_, id_]+list(argtypes) if argtypes else [] |
| 33 | def f(ptr, *args): return sender(ptr._objc_class_ if clsmeth else ptr, getsel(sel.encode()), *args) |
| 34 | return returns_retained(f) if retain else f |
| 35 | |
| 36 | if TYPE_CHECKING: |
| 37 | import _ctypes |
no test coverage detected