Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions arrow-libs/core/arrow-atomic/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,13 +1,8 @@
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi

plugins {
id("arrow.kotlin")
}

kotlin {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions.freeCompilerArgs.add("-Xexpect-actual-classes")

sourceSets {
commonTest {
dependencies {
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
@file:OptIn(ExperimentalAtomicApi::class)

package arrow.atomic

import kotlin.concurrent.atomics.ExperimentalAtomicApi
import kotlin.concurrent.atomics.AtomicReference as KtAtomicReference

public actual class Atomic<V> actual constructor(initialValue: V) {
private val inner = KtAtomicReference(initialValue)

public actual fun get(): V = inner.load()
public actual fun set(value: V) { inner.store(value) }
public actual fun getAndSet(value: V): V = inner.exchange(value)

/**
* Compare current value with expected and set to new if they're the same. Note, 'compare' is checking
* the actual object id, not 'equals'.
*/
public actual fun compareAndSet(expected: V, new: V): Boolean = inner.compareAndSet(expected, new)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
@file:OptIn(ExperimentalAtomicApi::class)

package arrow.atomic

import kotlin.concurrent.atomics.ExperimentalAtomicApi
import kotlin.concurrent.atomics.decrementAndFetch
import kotlin.concurrent.atomics.incrementAndFetch
import kotlin.concurrent.atomics.AtomicInt as KtAtomicInt

public actual class AtomicInt actual constructor(initialValue: Int) {
private val inner = KtAtomicInt(initialValue)

public actual fun get(): Int = inner.load()
public actual fun set(newValue: Int) { inner.store(newValue) }
public actual fun getAndSet(value: Int): Int = inner.exchange(value)

public actual fun incrementAndGet(): Int = inner.incrementAndFetch()
public actual fun decrementAndGet(): Int = inner.decrementAndFetch()

public actual fun addAndGet(delta: Int): Int = inner.addAndFetch(delta)

public actual fun compareAndSet(expected: Int, new: Int): Boolean = inner.compareAndSet(expected, new)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
@file:OptIn(ExperimentalAtomicApi::class)

package arrow.atomic

import kotlin.concurrent.atomics.AtomicLong as KtAtomicLong
import kotlin.concurrent.atomics.ExperimentalAtomicApi
import kotlin.concurrent.atomics.decrementAndFetch
import kotlin.concurrent.atomics.incrementAndFetch

public actual class AtomicLong actual constructor(initialValue: Long) {
private val inner = KtAtomicLong(initialValue)

public actual fun get(): Long = inner.load()
public actual fun set(newValue: Long) { inner.store(newValue) }
public actual fun getAndSet(value: Long): Long = inner.exchange(value)

public actual fun incrementAndGet(): Long = inner.incrementAndFetch()
public actual fun decrementAndGet(): Long = inner.decrementAndFetch()

public actual fun addAndGet(delta: Long): Long = inner.addAndFetch(delta)

public actual fun compareAndSet(expected: Long, new: Long): Boolean = inner.compareAndSet(expected, new)
}

This file was deleted.

This file was deleted.

This file was deleted.

Loading