16#if __DCL_HAVE_ALLOC_DEBUG
17#undef __DCL_ALLOC_LEVEL
18#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
33static pthread_mutex_t __mutex = PTHREAD_MUTEX_INITIALIZER;
35inline long __incrementAndGet(
volatile long& _n)
37 pthread_mutex_lock(&__mutex);
39 pthread_mutex_unlock(&__mutex);
43inline long __decrementAndGet(
volatile long& _n)
45 pthread_mutex_lock(&__mutex);
47 pthread_mutex_unlock(&__mutex);
51inline long __incrementAndGet(
volatile long& _n)
53 return InterlockedIncrement(&_n);
56inline long __decrementAndGet(
volatile long& _n)
58 return InterlockedDecrement(&_n);
63static long __initializeCount = 0;
69static int __DCLInitialize()
71 long initCount =__incrementAndGet(__initializeCount);
81#if __DCL_HAVE_ALLOC_DEBUG
91#if __DCL_HAVE_ALLOC_DEBUG
92#define new __DCL_DEBUG_NEW
99static void __DCLCleanup()
101 if (__decrementAndGet(__initializeCount) == 0) {
106#ifndef __DCL_HAVE_ALLOC_DEBUG
131 __DCL_NAMESPACE
Writer* pNewOut
135 Writer* pOld = __pGlobalDebugOut;
136 __pGlobalDebugOut = pNewOut;
142 unsigned long uThreadId,
143 __DCL_NAMESPACE
Writer* pNewOut
153 pNode->
value = pNewOut;
156 __pLibState->mapThreadOutput[(
const void*)(
size_t) uThreadId] = pNewOut;
173 throw new AssertError(_filename, _line, _expr, _message);
196 pOut = __pGlobalDebugOut;
202 sw.printf(
__T(
"%ls:%u "), _filename, _line);
205 va_start(arglist, _format);
206 sw.vprintf(_format, arglist);
213 if (pOut == __pGlobalDebugOut) {
224 if (pOut == __pGlobalDebugOut) {
232#if __DCL_HAVE_MANUAL_INITIALIZE
235 return __DCLInitialize();
242#elif defined(__DCL_CORE_EXPORTS)
251 case DLL_PROCESS_ATTACH:
254 case DLL_PROCESS_DETACH:
257 case DLL_THREAD_ATTACH:
260 case DLL_THREAD_DETACH:
267__attribute__((constructor))
273__attribute__((destructor))
284#pragma optimize ("", off)
303#pragma optimize ("", off)
void __cleanupThreadEnvironment()
__DCL_BEGIN_NAMESPACE LibState * __pLibState
void __initializeThreadEnvironment()
#define __DCL_TRACE0(psz)
#define __DCL_TRACE1(fmt, arg1)
void CharsetConvertException *size_t n
String toStringAll() const
virtual String toString() const
static unsigned long getCurrentThreadId()