aboutsummaryrefslogtreecommitdiff
path: root/core/sys/darwin/Foundation/NSLock.odin
blob: 168380669c47cf047b967dee7ec9e04983b6e01a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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")
}