mirror of
https://github.com/bkaradzic/bx.git
synced 2026-02-17 20:52:37 +01:00
Added bx::functionCast.
This commit is contained in:
@@ -6,7 +6,7 @@ os:
|
||||
environment:
|
||||
matrix:
|
||||
- TOOLSET: vs2017
|
||||
- TOOLSET: vs2019
|
||||
# - TOOLSET: vs2019
|
||||
|
||||
configuration:
|
||||
- Debug
|
||||
|
||||
@@ -38,6 +38,13 @@ namespace bx
|
||||
template<class Ty>
|
||||
constexpr bool isTriviallyCopyable();
|
||||
|
||||
///
|
||||
typedef void (*AnyFn)(void);
|
||||
|
||||
///
|
||||
template<typename ProtoT>
|
||||
constexpr ProtoT functionCast(AnyFn _fn);
|
||||
|
||||
/// Swap two values.
|
||||
template<typename Ty>
|
||||
void swap(Ty& _a, Ty& _b);
|
||||
|
||||
@@ -33,6 +33,12 @@ namespace bx
|
||||
return __is_trivially_copyable(Ty);
|
||||
}
|
||||
|
||||
template<typename ProtoT>
|
||||
inline constexpr ProtoT functionCast(AnyFn _fn)
|
||||
{
|
||||
return reinterpret_cast<ProtoT>(_fn);
|
||||
}
|
||||
|
||||
template<typename Ty>
|
||||
inline void swap(Ty& _a, Ty& _b)
|
||||
{
|
||||
|
||||
@@ -279,7 +279,9 @@ namespace bx
|
||||
#elif BX_PLATFORM_WINDOWS
|
||||
// Try to use the new thread naming API from Win10 Creators update onwards if we have it
|
||||
typedef HRESULT (WINAPI *SetThreadDescriptionProc)(HANDLE, PCWSTR);
|
||||
SetThreadDescriptionProc SetThreadDescription = (SetThreadDescriptionProc)(GetProcAddress(GetModuleHandleA("Kernel32.dll"), "SetThreadDescription"));
|
||||
SetThreadDescriptionProc SetThreadDescription = bx::functionCast<SetThreadDescriptionProc>(
|
||||
GetProcAddressA(GetModuleHandleA("Kernel32.dll"), "SetThreadDescription")
|
||||
);
|
||||
if (SetThreadDescription)
|
||||
{
|
||||
uint32_t length = (uint32_t)bx::strLen(_name)+1;
|
||||
|
||||
Reference in New Issue
Block a user