14 #ifndef ATOMICADJUSTWIN32IMPL_H 15 #define ATOMICADJUSTWIN32IMPL_H 24 #ifndef WIN32_LEAN_AND_MEAN 25 #define WIN32_LEAN_AND_MEAN 1 32 class EXPCL_DTOOL_DTOOLBASE AtomicAdjustWin32Impl {
36 typedef ALIGN_8BYTE LONGLONG Integer;
37 typedef void *UnalignedPointer;
38 typedef ALIGN_8BYTE UnalignedPointer Pointer;
40 typedef ALIGN_4BYTE LONG Integer;
41 typedef void *UnalignedPointer;
42 typedef ALIGN_4BYTE UnalignedPointer Pointer;
45 ALWAYS_INLINE
static void inc(TVOLATILE Integer &var);
46 ALWAYS_INLINE
static bool dec(TVOLATILE Integer &var);
47 INLINE
static Integer add(TVOLATILE Integer &var, Integer delta);
48 ALWAYS_INLINE
static Integer set(TVOLATILE Integer &var, Integer new_value);
49 ALWAYS_INLINE
static Integer get(
const TVOLATILE Integer &var);
51 ALWAYS_INLINE
static Pointer set_ptr(TVOLATILE Pointer &var, Pointer new_value);
52 ALWAYS_INLINE
static Pointer get_ptr(
const TVOLATILE Pointer &var);
54 INLINE
static Integer compare_and_exchange(TVOLATILE Integer &mem,
58 INLINE
static Pointer compare_and_exchange_ptr(TVOLATILE Pointer &mem,
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.