Chris Robinson
29cf7ebb75
Make an inverted atomic flag type and use it
...
The inverted atomic flag replaces test_and_set+clear with test_and_clear+set,
essentially inverting the flag status. This makes more logical sense for
flagging dirty state, which is less confusing than flagging clean state. The
one caveat is ATOMIC_FLAG_INIT (or default construction in C++20) initializes
the state to true rather than false.
2021-04-15 15:17:04 -07:00
Chris Robinson
65f7fc610e
Add a common base for auto-deleting ref-counted objects
...
Which will also work as the basis for a future intrusive_ptr
2019-08-01 13:43:32 -07:00
Chris Robinson
df3dcc879f
Get rid of the last ATOMIC macro uses
2018-11-26 18:19:58 -08:00
Chris Robinson
04cbdbd569
Remove some unused macros
2018-11-26 14:53:20 -08:00
Chris Robinson
053599b243
Avoid using the ATOMIC() macro
2018-11-26 14:48:26 -08:00
Chris Robinson
a6923790fa
Avoid using ATOMIC_INIT
2018-11-26 14:31:54 -08:00
Chris Robinson
ac2a420351
Remove the ATOMIC_THREAD_FENCE macro
2018-11-19 05:04:17 -08:00
Chris Robinson
c01743fe5d
Remove the CONST_CAST hack
2018-11-19 03:53:31 -08:00
Chris Robinson
e6c2c1f3b6
Remove unnecessary using statements
2018-11-19 03:32:16 -08:00
Chris Robinson
e24435ef58
Remove the atomic exchange macros
2018-11-19 03:21:58 -08:00
Chris Robinson
c5142530d6
Simplify the RefCount type
2018-11-19 02:17:06 -08:00
Chris Robinson
6e114a7a70
Replace ATOMIC_REPLACE_HEAD with an inline function
2018-11-19 01:20:03 -08:00
Chris Robinson
f48be9d73b
Remove the pointer-specific atomic exchange macros
2018-11-18 03:59:39 -08:00
Chris Robinson
d10301c209
Remove unused headers and checks
2018-11-17 19:52:54 -08:00
Chris Robinson
8c69fb046c
Always use C++11 atomics
2018-11-17 18:56:00 -08:00
Chris Robinson
a5f68c2121
Avoid using ATOMIC_FLAG
...
Although it cant potentially be better than a regular atomic, it presents
compatibility issues when non-C11 atomics are mixed with C++
2018-11-13 20:26:32 -08:00
Chris Robinson
4d422dfb24
Fix some backup atomic macros
2018-10-31 12:00:02 -07:00
Chris Robinson
3deb7c6ed5
Workaround C++ compatiility issues for atomic.h
...
This isn't wholly correct since neither C11 or C++11 guarantee compatibility
between atomic implementations. It's desired behavior and mostly works, see:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0943r1.html
Alignment issues can be fixed with manual alignas() specifications, should the
need arise.
2018-10-29 20:50:57 -07:00
Chris Robinson
788f5398b0
Slightly relax the memory order for ref counters
2018-03-26 10:14:27 -07:00
Chris Robinson
2873abcbc0
Fix up some types for MSVC
2018-01-11 10:55:35 -08:00
Chris Robinson
e89c183231
Avoid including alMain.h in ringbuffer.c
2018-01-11 10:03:26 -08:00
Chris Robinson
afb59e7f98
Move internal headers out of the include directory
2017-04-14 18:15:56 -07:00