NeKernel dev
Loading...
Searching...
No Matches
Atom.h
Go to the documentation of this file.
1/* -------------------------------------------
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, all rights reserved.
4
5------------------------------------------- */
6#pragma once
7
8#include <NeKit/Defines.h>
9
10namespace Kernel {
11template <typename T>
12class Atom final {
13 public:
14 explicit Atom() = default;
15 ~Atom() = default;
16
17 public:
18 Atom& operator=(const Atom&) = delete;
19 Atom(const Atom&) = delete;
20
21 public:
22 T operator[](Size bit) { return (fArrayOfAtoms & (1 << bit)); }
23
24 void operator|(Size bit) { fArrayOfAtoms |= (1 << bit); }
25
26 friend Boolean operator==(Atom<T>& atomic, const T& idx) { return atomic[idx] == idx; }
27
28 friend Boolean operator!=(Atom<T>& atomic, const T& idx) { return atomic[idx] == idx; }
29
30 private:
32};
33} // namespace Kernel
friend Boolean operator==(Atom< T > &atomic, const T &idx)
Definition Atom.h:26
T operator[](Size bit)
Definition Atom.h:22
T fArrayOfAtoms
Definition Atom.h:31
friend Boolean operator!=(Atom< T > &atomic, const T &idx)
Definition Atom.h:28
void operator|(Size bit)
Definition Atom.h:24
Atom & operator=(const Atom &)=delete
Atom(const Atom &)=delete
~Atom()=default
Atom()=default
USER_PROCESS inline definitions.
Definition Qr.h:793
__SIZE_TYPE__ Size
Definition Defines.h:57
bool Boolean
Definition Defines.h:49