forked from LeenkxTeam/LNXSDK
68 lines
1.6 KiB
Haxe
68 lines
1.6 KiB
Haxe
package haxe.atomic;
|
|
|
|
#if !(target.atomics || core_api)
|
|
#error "This target does not support atomic operations."
|
|
#end
|
|
|
|
/**
|
|
Atomic integer.
|
|
(js) The Atomics and SharedArrayBuffer objects need to be available. Errors will be thrown if this is not the case.
|
|
**/
|
|
@:coreType
|
|
abstract AtomicInt {
|
|
public function new(value:Int):Void;
|
|
|
|
/**
|
|
Atomically adds `b` to `a`.
|
|
Returns the original value of `a`.
|
|
**/
|
|
public function add(b:Int):Int;
|
|
|
|
/**
|
|
Atomically substracts `b` from `a`.
|
|
Returns the original value of `a`.
|
|
**/
|
|
public function sub(b:Int):Int;
|
|
|
|
/**
|
|
Atomically computes the bitwise and of `a` and `b` and stores it in `a`.
|
|
Returns the original value of `a`.
|
|
**/
|
|
public function and(b:Int):Int;
|
|
|
|
/**
|
|
Atomically computes the bitwise or of `a` and `b` and stores it in `a`.
|
|
Returns the original value of `a`.
|
|
**/
|
|
public function or(b:Int):Int;
|
|
|
|
/**
|
|
Atomically computes the bitwise xor of `a` and `b` and stores it in `a`.
|
|
Returns the original value of `a`.
|
|
**/
|
|
public function xor(b:Int):Int;
|
|
|
|
/**
|
|
Atomically compares the value of `a` with `expected` and replaces `a` with `replacement` if they are equal..
|
|
Returns the original value of `a`.
|
|
**/
|
|
public function compareExchange(expected:Int, replacement:Int):Int;
|
|
|
|
/**
|
|
Atomically exchanges `a` with `value`.
|
|
Returns the original value of `a`.
|
|
**/
|
|
public function exchange(value:Int):Int;
|
|
|
|
/**
|
|
Atomically fetches the value of `a`.
|
|
**/
|
|
public function load():Int;
|
|
|
|
/**
|
|
Atomically stores `value` into `a`.
|
|
Returns the value that has been stored.
|
|
**/
|
|
public function store(value:Int):Int;
|
|
}
|