use core::sync::atomic::Ordering;
use super::BrandedAtomic;
use crate::atomic::order::{AtomicOrder, OrderingSource};
use crate::atomic::traits::AtomicInt;
use crate::token::ReadPermit;
impl<'brand, A: AtomicInt> BrandedAtomic<'brand, A> {
order_pair! {
fn fetch_add;
fn fetch_add_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_add(value, order.rmw_order())
}
order_pair! {
fn fetch_sub;
fn fetch_sub_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_sub(value, order.rmw_order())
}
order_pair! {
fn fetch_and;
fn fetch_and_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_and(value, order.rmw_order())
}
order_pair! {
fn fetch_or;
fn fetch_or_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_or(value, order.rmw_order())
}
order_pair! {
fn fetch_xor;
fn fetch_xor_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_xor(value, order.rmw_order())
}
order_pair! {
fn fetch_nand;
fn fetch_nand_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_nand(value, order.rmw_order())
}
order_pair! {
fn fetch_max;
fn fetch_max_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_max(value, order.rmw_order())
}
order_pair! {
fn fetch_min;
fn fetch_min_with;
before: (value: A::Value);
after: ();
generics: ();
bounds: ();
order: order;
ret: A::Value;
body: inner.atomic_fetch_min(value, order.rmw_order())
}
}