Windows2003-3790/public/sdk/inc/winbase_interlockedcplusplus.h
2020-09-30 16:53:55 +02:00

183 lines
3.6 KiB
C

/*++
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
winbase_interlockedcplusplus.h
Abstract:
C++ function overloads in place of "manual name mangling".
Author:
Jay Krell (JayKrell) April 2002
Environment:
Revision History:
--*/
#if !defined(MICROSOFT_WINDOWS_WINBASE_INTERLOCKED_CPLUSPLUS_H_INCLUDED) /* { */
#define MICROSOFT_WINDOWS_WINBASE_INTERLOCKED_CPLUSPLUS_H_INCLUDED
#if _MSC_VER > 1000
#pragma once
#endif
#if !defined(RC_INVOKED) /* { */
#if !defined(MIDL_PASS) /* { */
#if !defined(MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS)
#define MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS (_WIN32_WINNT >= 0x0502 || !defined(_WINBASE_))
#endif
#if MICROSOFT_WINDOWS_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS /* { */
#if defined(__cplusplus) /* { */
extern "C++" {
FORCEINLINE
ULONG
InterlockedIncrement(
IN OUT ULONG volatile *Addend
)
{
return InterlockedIncrementUlong(Addend);
}
FORCEINLINE
ULONGLONG
InterlockedIncrement(
IN OUT ULONGLONG volatile *Addend
)
{
return InterlockedIncrementUnsigned64(Addend);
}
FORCEINLINE
ULONG
InterlockedDecrement(
IN OUT ULONG volatile *Addend
)
{
return InterlockedDecrementUlong(Addend);
}
FORCEINLINE
ULONGLONG
InterlockedDecrement(
IN OUT ULONGLONG volatile *Addend
)
{
return InterlockedDecrementUnsigned64(Addend);
}
FORCEINLINE
ULONG
InterlockedExchange(
IN OUT ULONG volatile *Target,
IN ULONG Value
)
{
return InterlockedExchangeUlong(Target, Value);
}
FORCEINLINE
ULONGLONG
InterlockedExchange(
IN OUT ULONGLONG volatile *Target,
IN ULONGLONG Value
)
{
return InterlockedExchangeUnsigned64(Target, Value);
}
FORCEINLINE
ULONG
InterlockedExchangeAdd(
IN OUT ULONG volatile *Addend,
IN ULONG Value
)
{
return InterlockedExchangeAddUlong(Addend, Value);
}
FORCEINLINE
ULONGLONG
InterlockedExchangeAdd(
IN OUT ULONGLONG volatile *Addend,
IN ULONGLONG Value
)
{
return InterlockedExchangeAddUnsigned64(Addend, Value);
}
FORCEINLINE
ULONG
InterlockedCompareExchange (
IN OUT ULONG volatile *Destination,
IN ULONG Exchange,
IN ULONG Comperand
)
{
return InterlockedCompareExchangeUlong(Destination, Exchange, Comperand);
}
FORCEINLINE
ULONGLONG
InterlockedCompareExchange (
IN OUT ULONGLONG volatile *Destination,
IN ULONGLONG Exchange,
IN ULONGLONG Comperand
)
{
return InterlockedCompareExchangeUnsigned64(Destination, Exchange, Comperand);
}
FORCEINLINE
ULONGLONG
InterlockedAnd (
IN OUT ULONGLONG volatile *Destination,
IN ULONGLONG Value
)
{
return InterlockedAndUnsigned64(Destination, Value);
}
FORCEINLINE
ULONGLONG
InterlockedOr (
IN OUT ULONGLONG volatile *Destination,
IN ULONGLONG Value
)
{
return InterlockedOrUnsigned64(Destination, Value);
}
FORCEINLINE
ULONGLONG
InterlockedXor (
IN OUT ULONGLONG volatile *Destination,
IN ULONGLONG Value
)
{
return InterlockedXorUnsigned64(Destination, Value);
}
} /* extern "C++" */
#endif /* } __cplusplus */
#endif /* } MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS */
#undef MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS
#define MICROSOFT_WINBASE_H_DEFINE_INTERLOCKED_CPLUSPLUS_OVERLOADS 0
#endif /* } MIDL_PASS */
#endif /* } RC_INVOKED */
#endif /* } MICROSOFT_WINDOWS_WINBASE_INTERLOCKED_CPLUSPLUS_H_INCLUDED */