aboutsummaryrefslogtreecommitdiff
path: root/core/sys/darwin/Foundation/NSLock.odin
diff options
context:
space:
mode:
Diffstat (limited to 'core/sys/darwin/Foundation/NSLock.odin')
-rw-r--r--core/sys/darwin/Foundation/NSLock.odin53
1 files changed, 53 insertions, 0 deletions
diff --git a/core/sys/darwin/Foundation/NSLock.odin b/core/sys/darwin/Foundation/NSLock.odin
new file mode 100644
index 000000000..168380669
--- /dev/null
+++ b/core/sys/darwin/Foundation/NSLock.odin
@@ -0,0 +1,53 @@
+package objc_Foundation
+
+Locking :: struct($T: typeid) {using _: Object}
+
+Locking_lock :: proc "c" (self: ^Locking($T)) {
+ msgSend(nil, self, "lock")
+}
+Locking_unlock :: proc "c" (self: ^Locking($T)) {
+ msgSend(nil, self, "unlock")
+}
+
+@(objc_class="NSCondition")
+Condition :: struct {using _: Locking(Condition) }
+
+
+@(objc_type=Condition, objc_name="alloc", objc_is_class_method=true)
+Condition_alloc :: proc "c" () -> ^Condition {
+ return msgSend(^Condition, Condition, "alloc")
+}
+
+@(objc_type=Condition, objc_name="init")
+Condition_init :: proc "c" (self: ^Condition) -> ^Condition {
+ return msgSend(^Condition, self, "init")
+}
+
+@(objc_type=Condition, objc_name="wait")
+Condition_wait :: proc "c" (self: ^Condition) {
+ msgSend(nil, self, "wait")
+}
+
+@(objc_type=Condition, objc_name="waitUntilDate")
+Condition_waitUntilDate :: proc "c" (self: ^Condition, limit: ^Date) -> BOOL {
+ return msgSend(BOOL, self, "waitUntilDate:", limit)
+}
+
+@(objc_type=Condition, objc_name="signal")
+Condition_signal :: proc "c" (self: ^Condition) {
+ msgSend(nil, self, "signal")
+}
+
+@(objc_type=Condition, objc_name="broadcast")
+Condition_broadcast :: proc "c" (self: ^Condition) {
+ msgSend(nil, self, "broadcast")
+}
+
+@(objc_type=Condition, objc_name="lock")
+Condition_lock :: proc "c" (self: ^Condition) {
+ msgSend(nil, self, "lock")
+}
+@(objc_type=Condition, objc_name="unlock")
+Condition_unlock :: proc "c" (self: ^Condition) {
+ msgSend(nil, self, "unlock")
+} \ No newline at end of file