1 #ifndef LIBJMMCG_CORE_ATOMIC_CTR_HPP
2 #define LIBJMMCG_CORE_ATOMIC_CTR_HPP
28 # pragma GCC diagnostic push
29 # pragma GCC diagnostic ignored "-Wsuggest-final-methods"
75 virtual bool __fastcall operator<(
const value_type)
const noexcept(
true) {
85 return !(*
this<v) && !(*
this>v);
103 os<<v.sp_to_string();
114 struct api_lock_traits;
146 template<
class V1,
class V2=V1>
148 template<
class V1,
class V2=V1>
168 constexpr bool __fastcall operator<(
base_t const &)
const noexcept(
true)
FORCE_INLINE;
204 template<
class V1,
class V2=V1>
238 :
count(lkctr.count) {
242 :
count(lkctr.count) {
249 template<
class V1,
class V2=V1>
255 template<
class V1,
class V2=V1>
278 return count==val.count;
281 return !operator==(val);
284 return !operator==(val);
310 return count<val.count;
320 return count>val.count;
330 return count<=val.count;
336 return count>=val.count;
343 return count+=v.count;
349 return count-=v.count;
363 apply(V1
const &a,
std::plus<V1>
const &)
noexcept(
true) {
367 apply(V1
const &a,
std::minus<V1>
const &)
noexcept(
true) {
374 template<
class V1,
class V2=V1>
384 compare_exchange_strong(expected.load(), op(expected).load());
432 template<
class V1,
class V2=V1>
441 template<
class V1,
class V2=V1>
444 constexpr bool sp_noop_ctr()
const noexcept(
true)
override __attribute__((
const)) {
459 constexpr bool __fastcall operator<(
base_t const &)
const noexcept(
true)
FORCE_INLINE;
495 template<
class V1,
class V2=V1>
520 using atomic_ctr=
typename std::conditional<
521 std::is_integral<V>::value,
523 typename std::conditional<
524 std::is_pointer<V>::value,
533 template<
class V,
class LkT>
inline
535 operator<<(
tostream &os, atomic_ctr<V, LkT>
const &a) {
568 bool sp_noop_ctr()
const noexcept(
true)
override __attribute__((
const)) {
572 bool __fastcall operator<(
const value_type)
const noexcept(
true)
override __attribute__((
const)) {
595 # pragma GCC diagnostic pop