Commit c4aec790 authored by Ondřej Surý's avatar Ondřej Surý

When compiling with MSVC, use inline functions for isc_refcount_increment/decrement

parent 49976947
......@@ -68,6 +68,15 @@ typedef atomic_uint_fast32_t isc_refcount_t;
* \param[in] ref pointer to reference counter.
* \returns previous value of reference counter.
*/
#if _MSC_VER
static inline uint_fast32_t
isc_refcount_increment0(isc_refcount_t *target) {
uint_fast32_t __v;
__v = (uint_fast32_t)atomic_fetch_add_relaxed(target, 1);
INSIST(__v < UINT32_MAX);
return (__v);
}
#else /* _MSC_VER */
#define isc_refcount_increment0(target) \
({ \
/* cppcheck-suppress shadowVariable */ \
......@@ -76,12 +85,22 @@ typedef atomic_uint_fast32_t isc_refcount_t;
INSIST(__v < UINT32_MAX); \
__v; \
})
#endif /* _MSC_VER */
/** \def isc_refcount_increment(ref)
* \brief increases reference counter by 1.
* \param[in] ref pointer to reference counter.
* \returns previous value of reference counter.
*/
#if _MSC_VER
static inline uint_fast32_t
isc_refcount_increment(isc_refcount_t *target) {
uint_fast32_t __v;
__v = (uint_fast32_t)atomic_fetch_add_relaxed(target, 1);
INSIST(__v > 0 && __v < UINT32_MAX);
return(__v);
}
#else /* _MSC_VER */
#define isc_refcount_increment(target) \
({ \
/* cppcheck-suppress shadowVariable */ \
......@@ -90,12 +109,22 @@ typedef atomic_uint_fast32_t isc_refcount_t;
INSIST(__v > 0 && __v < UINT32_MAX); \
__v; \
})
#endif /* _MSC_VER */
/** \def isc_refcount_decrement(ref)
* \brief decreases reference counter by 1.
* \param[in] ref pointer to reference counter.
* \returns previous value of reference counter.
*/
#if _MSC_VER
static inline uint_fast32_t
isc_refcount_decrement(isc_refcount_t *target) {
uint_fast32_t __v;
__v = (uint_fast32_t)atomic_fetch_sub_release(target, 1);
INSIST(__v > 0);
return(__v);
}
#else /* _MSC_VER */
#define isc_refcount_decrement(target) \
({ \
/* cppcheck-suppress shadowVariable */ \
......@@ -104,5 +133,6 @@ typedef atomic_uint_fast32_t isc_refcount_t;
INSIST(__v > 0); \
__v; \
})
#endif /* _MSC_VER */
ISC_LANG_ENDDECLS
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment