CX Framework
Cross-platform C utility framework
Loading...
Searching...
No Matches
atomic.h
Go to the documentation of this file.
1
93
94#pragma once
95
96#include <cx/cx.h>
97#include <cx/platform/base.h>
98
99#if defined(_COMPILER_MSVC)
100#include <cx/platform/msvc/msvc_atomic.h>
101#elif defined(_COMPILER_CLANG) || defined(_COMPILER_GCC)
102#include <cx/platform/clang/clang_atomic.h>
103#endif
104
105#ifdef _64BIT
106CX_GENERATE_ATOMICS(void*, ptr, 3)
107CX_GENERATE_ATOMICS(bool, bool, 0)
108CX_GENERATE_INT_ATOMICS(size_t, size, 3)
109CX_GENERATE_INT_ATOMICS(intptr, intptr, 3)
110CX_GENERATE_INT_ATOMICS(int8, int8, 0)
111CX_GENERATE_INT_ATOMICS(int16, int16, 1)
112CX_GENERATE_INT_ATOMICS(int32, int32, 2)
113CX_GENERATE_INT_ATOMICS(int64, int64, 3)
114CX_GENERATE_INT_ATOMICS(uintptr, uintptr, 3)
115CX_GENERATE_INT_ATOMICS(uint8, uint8, 0)
116CX_GENERATE_INT_ATOMICS(uint16, uint16, 1)
117CX_GENERATE_INT_ATOMICS(uint32, uint32, 2)
118CX_GENERATE_INT_ATOMICS(uint64, uint64, 3)
119#else
120CX_GENERATE_ATOMICS(void*, ptr, 2)
121CX_GENERATE_ATOMICS(bool, bool, 0)
122CX_GENERATE_INT_ATOMICS(size_t, size, 2)
123CX_GENERATE_INT_ATOMICS(intptr, intptr, 2)
124CX_GENERATE_INT_ATOMICS(int8, int8, 0)
125CX_GENERATE_INT_ATOMICS(int16, int16, 1)
126CX_GENERATE_INT_ATOMICS(int32, int32, 2)
127CX_GENERATE_INT_ATOMICS(uintptr, uintptr, 2)
128CX_GENERATE_INT_ATOMICS(uint8, uint8, 0)
129CX_GENERATE_INT_ATOMICS(uint16, uint16, 1)
130CX_GENERATE_INT_ATOMICS(uint32, uint32, 2)
131CX_GENERATE_INT_ATOMICS(int64, int64, 3)
132CX_GENERATE_INT_ATOMICS(uint64, uint64, 3)
133#endif
134
136// end of thread_atomic group
Compiler and platform detection macros.