|  | /** | 
|  | * This file has no copyright assigned and is placed in the Public Domain. | 
|  | * This file is part of the mingw-w64 runtime package. | 
|  | * No warranty is given; refer to the file DISCLAIMER.PD within this package. | 
|  | * | 
|  | * Written by Kai Tietz  <kai.tietz@onevision.com> | 
|  | */ | 
|  | #ifndef WIN32_LEAN_AND_MEAN | 
|  | #define WIN32_LEAN_AND_MEAN | 
|  | #endif | 
|  | #include <windows.h> | 
|  | #include <stdlib.h> | 
|  |  | 
|  | int __mingwthr_key_dtor (DWORD key, void (*dtor)(void *)); | 
|  | int __mingwthr_remove_key_dtor (DWORD key); | 
|  |  | 
|  | extern int ___w64_mingwthr_remove_key_dtor (DWORD key); | 
|  | extern int ___w64_mingwthr_add_key_dtor (DWORD key, void (*dtor)(void *)); | 
|  |  | 
|  |  | 
|  | #ifndef _WIN64 | 
|  | #define MINGWM10_DLL "mingwm10.dll" | 
|  | typedef int (*fMTRemoveKeyDtor)(DWORD key); | 
|  | typedef int (*fMTKeyDtor)(DWORD key, void (*dtor)(void *)); | 
|  | extern fMTRemoveKeyDtor __mingw_gMTRemoveKeyDtor; | 
|  | extern fMTKeyDtor __mingw_gMTKeyDtor; | 
|  | extern int __mingw_usemthread_dll; | 
|  | #endif | 
|  |  | 
|  | int | 
|  | __mingwthr_remove_key_dtor (DWORD key) | 
|  | { | 
|  | #ifndef _WIN64 | 
|  | if (!__mingw_usemthread_dll) | 
|  | #endif | 
|  | return ___w64_mingwthr_remove_key_dtor (key); | 
|  | #ifndef _WIN64 | 
|  | if (__mingw_gMTRemoveKeyDtor) | 
|  | return (*__mingw_gMTRemoveKeyDtor) (key); | 
|  | return 0; | 
|  | #endif | 
|  | } | 
|  |  | 
|  | int | 
|  | __mingwthr_key_dtor (DWORD key, void (*dtor)(void *)) | 
|  | { | 
|  | if (dtor) | 
|  | { | 
|  | #ifndef _WIN64 | 
|  | if (!__mingw_usemthread_dll) | 
|  | #endif | 
|  | return ___w64_mingwthr_add_key_dtor (key, dtor); | 
|  | #ifndef _WIN64 | 
|  | if (__mingw_gMTKeyDtor) | 
|  | return (*__mingw_gMTKeyDtor) (key, dtor); | 
|  | #endif | 
|  | } | 
|  | return 0; | 
|  | } |