pbd: clarify int62_t comments
This commit is contained in:
parent
3478acfcf9
commit
c5e7e5c4df
@ -26,7 +26,7 @@
|
|||||||
#include <exception>
|
#include <exception>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
|
||||||
/* int62_t is a class the functions as a 62 bit signed integer complete with a flag that can be used to indicate a boolean property of
|
/* int62_t is a class that functions as a 63 bit signed integer with a flag that can be used to indicate a boolean property of
|
||||||
* the object. The flag is stored inside the 64 bit integer used by the object (as a single bit), and all operations on the object that
|
* the object. The flag is stored inside the 64 bit integer used by the object (as a single bit), and all operations on the object that
|
||||||
* change either the flag or the value are atomic.
|
* change either the flag or the value are atomic.
|
||||||
*
|
*
|
||||||
@ -38,10 +38,12 @@ class alignas(16) int62_t {
|
|||||||
protected:
|
protected:
|
||||||
/* std::atomic<> takes care of memory barriers for us; the actual load and stores
|
/* std::atomic<> takes care of memory barriers for us; the actual load and stores
|
||||||
are atomic on architectures that we're likely to care about.
|
are atomic on architectures that we're likely to care about.
|
||||||
|
The 2nd highest bit is used for the flag, and the highest bit is used for the sign.
|
||||||
|
Watch out for the impact of two's complement and overflow to and from the flag bit.
|
||||||
*/
|
*/
|
||||||
std::atomic<int64_t> v;
|
std::atomic<int64_t> v;
|
||||||
|
|
||||||
/* this defines the bit used to indicate "flag" or not */
|
/* this defines the bit used to indicate "flag" or not: the 2nd highest bit */
|
||||||
static const int64_t flagbit_mask = (1LL<<62);
|
static const int64_t flagbit_mask = (1LL<<62);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
Loading…
Reference in New Issue
Block a user