@@ -2,6 +2,7 @@ package arrow.core.internal
2
2
3
3
import kotlinx.atomicfu.atomic
4
4
import kotlinx.atomicfu.updateAndGet
5
+ import kotlinx.atomicfu.getAndUpdate
5
6
6
7
/* *
7
8
* Internal wrapper for Atomic-FU Atomics to be used as local variables
@@ -15,15 +16,23 @@ class AtomicRefW<A>(a: A) {
15
16
}
16
17
get() = atomicRef.value
17
18
18
- fun getAndSet (a : A ) = atomicRef.getAndSet(a)
19
+ fun getAndSet (a : A ): A =
20
+ atomicRef.getAndSet(a)
19
21
20
- fun updateAndGet (function : (A ) -> A ) = atomicRef.updateAndGet(function)
22
+ fun updateAndGet (function : (A ) -> A ): A =
23
+ atomicRef.updateAndGet(function)
21
24
22
- fun compareAndSet (expect : A , update : A ) = atomicRef.compareAndSet(expect, update)
25
+ fun getAndUpdate (f : (A ) -> A ): A =
26
+ atomicRef.getAndUpdate(f)
23
27
24
- fun lazySet (a : A ) = atomicRef.lazySet(a)
28
+ fun compareAndSet (expect : A , update : A ): Boolean =
29
+ atomicRef.compareAndSet(expect, update)
25
30
26
- override fun toString (): String = value.toString()
31
+ fun lazySet (a : A ): Unit =
32
+ atomicRef.lazySet(a)
33
+
34
+ override fun toString (): String =
35
+ value.toString()
27
36
}
28
37
29
38
class AtomicBooleanW (a : Boolean ) {
@@ -35,15 +44,23 @@ class AtomicBooleanW(a: Boolean) {
35
44
}
36
45
get() = atomicRef.value
37
46
38
- fun getAndSet (a : Boolean ) = atomicRef.getAndSet(a)
47
+ fun getAndSet (a : Boolean ): Boolean =
48
+ atomicRef.getAndSet(a)
49
+
50
+ fun updateAndGet (function : (Boolean ) -> Boolean ): Boolean =
51
+ atomicRef.updateAndGet(function)
39
52
40
- fun updateAndGet (function : (Boolean ) -> Boolean ) = atomicRef.updateAndGet(function)
53
+ fun getAndUpdate (f : (Boolean ) -> Boolean ): Boolean =
54
+ atomicRef.getAndUpdate(f)
41
55
42
- fun compareAndSet (expect : Boolean , update : Boolean ) = atomicRef.compareAndSet(expect, update)
56
+ fun compareAndSet (expect : Boolean , update : Boolean ): Boolean =
57
+ atomicRef.compareAndSet(expect, update)
43
58
44
- fun lazySet (a : Boolean ) = atomicRef.lazySet(a)
59
+ fun lazySet (a : Boolean ): Unit =
60
+ atomicRef.lazySet(a)
45
61
46
- override fun toString (): String = value.toString()
62
+ override fun toString (): String =
63
+ value.toString()
47
64
}
48
65
49
66
class AtomicIntW (a : Int ) {
@@ -55,25 +72,39 @@ class AtomicIntW(a: Int) {
55
72
}
56
73
get() = atomicRef.value
57
74
58
- fun getAndSet (a : Int ) = atomicRef.getAndSet(a)
75
+ fun getAndSet (a : Int ): Int =
76
+ atomicRef.getAndSet(a)
77
+
78
+ fun getAndAdd (delta : Int ): Int =
79
+ atomicRef.getAndAdd(delta)
59
80
60
- fun getAndAdd (delta : Int ) = atomicRef.getAndAdd(delta)
81
+ fun addAndGet (delta : Int ): Int =
82
+ atomicRef.addAndGet(delta)
61
83
62
- fun addAndGet (delta : Int ) = atomicRef.addAndGet(delta)
84
+ fun getAndIncrement (): Int =
85
+ atomicRef.getAndIncrement()
63
86
64
- fun getAndIncrement () = atomicRef.getAndIncrement()
87
+ fun getAndDecrement (): Int =
88
+ atomicRef.getAndDecrement()
65
89
66
- fun getAndDecrement () = atomicRef.getAndDecrement()
90
+ fun incrementAndGet (): Int =
91
+ atomicRef.incrementAndGet()
67
92
68
- fun incrementAndGet () = atomicRef.incrementAndGet()
93
+ fun decrementAndGet (): Int =
94
+ atomicRef.decrementAndGet()
69
95
70
- fun decrementAndGet () = atomicRef.decrementAndGet()
96
+ fun updateAndGet (function : (Int ) -> Int ): Int =
97
+ atomicRef.updateAndGet(function)
71
98
72
- fun updateAndGet (function : (Int ) -> Int ) = atomicRef.updateAndGet(function)
99
+ fun getAndUpdate (f : (Int ) -> Int ): Int =
100
+ atomicRef.getAndUpdate(f)
73
101
74
- fun compareAndSet (expect : Int , update : Int ) = atomicRef.compareAndSet(expect, update)
102
+ fun compareAndSet (expect : Int , update : Int ): Boolean =
103
+ atomicRef.compareAndSet(expect, update)
75
104
76
- fun lazySet (a : Int ) = atomicRef.lazySet(a)
105
+ fun lazySet (a : Int ): Unit =
106
+ atomicRef.lazySet(a)
77
107
78
- override fun toString (): String = value.toString()
108
+ override fun toString (): String =
109
+ value.toString()
79
110
}
0 commit comments