/* Generated by Nim Compiler v1.9.0 */ #define NIM_INTBITS 32 #include "nimbase.h" #include #include #include #undef LANGUAGE_C #undef MIPSEB #undef MIPSEL #undef PPC #undef R3000 #undef R4000 #undef i386 #undef linux #undef mips #undef near #undef far #undef powerpc #undef unix #define nimfr_(x, y) #define nimln_(x, y) typedef struct tySequence__jPly7LEWA9bR7s5RNk1UriQ tySequence__jPly7LEWA9bR7s5RNk1UriQ; typedef struct tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content; typedef struct tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw; typedef struct tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A; typedef struct TNimTypeV2 TNimTypeV2; struct tySequence__jPly7LEWA9bR7s5RNk1UriQ { NI len; tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content* p; }; typedef struct { N_NIMCALL_PTR(void, ClP_0) (void* ClE_0); void* ClE_0; } tyProc__HzVCwACFYM9cx9aV62PdjtuA; typedef NU8 tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA; typedef N_NOCONV_PTR(void, tyProc__vhjNbzH0Mvv2fTvoe1717Q) (void); struct tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw { tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA kind; union{ tyProc__HzVCwACFYM9cx9aV62PdjtuA fun1; tyProc__vhjNbzH0Mvv2fTvoe1717Q fun2; }; }; struct tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A { NI rc; NI rootIdx; }; struct TNimTypeV2 { void* destructor; NI size; NI16 align; NI16 depth; NU32* display; void* traceImpl; void* typeInfoV1; NI flags; }; typedef N_CLOSURE_PTR(void, TM__JXL39bfraktrl3ZkJ5EQGjw_2) (void); #ifndef tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP #define tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP struct tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content { NI cap; tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw data[SEQ_DECL_SIZE];}; #endif #ifndef tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP #define tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content_PP struct tySequence__jPly7LEWA9bR7s5RNk1UriQ_Content { NI cap; tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw data[SEQ_DECL_SIZE];}; #endif static N_INLINE(void, initLock__coreZlocks_7)(CRITICAL_SECTION* lock); static N_INLINE(NIM_BOOL*, nimErrorFlag)(void); static N_INLINE(void, acquire__coreZlocks_14)(CRITICAL_SECTION* lock); N_LIB_PRIVATE N_NOCONV(void, callClosures__stdZexitprocs_202)(void); static N_INLINE(void, nimZeroMem)(void* p, NI size); static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size); N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZexitprocs_100)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest, tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw src); static N_INLINE(void, nimIncRefCyclic)(void* p, NIM_BOOL cyclic); static N_INLINE(NI, minuspercent___system_790)(NI x, NI y); static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p); N_LIB_PRIVATE N_NOINLINE(void, rememberCycle__system_3141)(NIM_BOOL isDestroyAction, tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A* s, TNimTypeV2* desc); N_LIB_PRIVATE N_NIMCALL(void, nimDestroyAndDispose)(void* p); N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_97)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest); static N_INLINE(void, release__coreZlocks_16)(CRITICAL_SECTION* lock); N_LIB_PRIVATE N_NIMCALL(void, add__stdZexitprocs_224)(tySequence__jPly7LEWA9bR7s5RNk1UriQ* x, tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw value); static N_INLINE(void, nimMarkCyclic)(void* p); N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_244)(tyProc__HzVCwACFYM9cx9aV62PdjtuA* dest); N_LIB_PRIVATE N_NIMCALL(void, alignedDealloc)(void* p, NI align); N_LIB_PRIVATE tySequence__jPly7LEWA9bR7s5RNk1UriQ gFuns__stdZexitprocs_15; N_LIB_PRIVATE CRITICAL_SECTION gFunsLock__stdZexitprocs_14; extern NIM_BOOL nimInErrorMode__system_3980; static N_INLINE(void, initLock__coreZlocks_7)(CRITICAL_SECTION* lock) { InitializeCriticalSection(lock); } static N_INLINE(NIM_BOOL*, nimErrorFlag)(void) { NIM_BOOL* result; result = (NIM_BOOL*)0; result = (&nimInErrorMode__system_3980); return result; } static N_INLINE(void, acquire__coreZlocks_14)(CRITICAL_SECTION* lock) { EnterCriticalSection(lock); } static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) { void* T1_; T1_ = (void*)0; T1_ = memset(a, v, ((size_t) (size))); } static N_INLINE(void, nimZeroMem)(void* p, NI size) { NIM_BOOL* nimErr_; {nimErr_ = nimErrorFlag(); nimSetMem__systemZmemory_7(p, ((int)0), size); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; }BeforeRet_: ; } static N_INLINE(NI, minuspercent___system_790)(NI x, NI y) { NI result; result = (NI)0; result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y)))))); return result; } static N_INLINE(void, nimIncRefCyclic)(void* p, NIM_BOOL cyclic) { tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A* h; NI T1_; T1_ = (NI)0; T1_ = minuspercent___system_790(((NI) (ptrdiff_t) (p)), ((NI)8)); h = ((tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A*) (T1_)); (*h).rc += ((NI)16); } static N_INLINE(NIM_BOOL, nimDecRefIsLastCyclicDyn)(void* p) { NIM_BOOL result; NIM_BOOL* nimErr_; {nimErr_ = nimErrorFlag(); result = (NIM_BOOL)0; { tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A* cell; NI T5_; if (!!((p == NIM_NIL))) goto LA3_; T5_ = (NI)0; T5_ = minuspercent___system_790(((NI) (ptrdiff_t) (p)), ((NI)8)); cell = ((tyObject_RefHeader__Gi7WQzlT1ZRToh9a2ueYb4A*) (T5_)); { if (!((NI)((*cell).rc & ((NI)-16)) == ((NI)0))) goto LA8_; result = NIM_TRUE; } goto LA6_; LA8_: ; { (*cell).rc -= ((NI)16); } LA6_: ; rememberCycle__system_3141(result, cell, (*((TNimTypeV2**) (p)))); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; } LA3_: ; }BeforeRet_: ; return result; } N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZexitprocs_100)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest, tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw src) { tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw colontmp_; nimZeroMem((void*)(&colontmp_), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw)); colontmp_ = (*dest); nimZeroMem((void*)(&(*dest)), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw)); (*dest).kind = src.kind; switch ((*dest).kind) { case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0): { void* colontmp__2; colontmp__2 = (*dest).fun1.ClE_0; { if (!src.fun1.ClE_0) goto LA4_; nimIncRefCyclic(src.fun1.ClE_0, NIM_TRUE); } LA4_: ; (*dest).fun1.ClE_0 = src.fun1.ClE_0; (*dest).fun1.ClP_0 = src.fun1.ClP_0; { NIM_BOOL T8_; T8_ = (NIM_BOOL)0; T8_ = nimDecRefIsLastCyclicDyn(colontmp__2); if (!T8_) goto LA9_; nimDestroyAndDispose(colontmp__2); } LA9_: ; } break; case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1): { (*dest).fun2 = src.fun2; } break; } switch (colontmp_.kind) { case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0): { { NIM_BOOL T15_; T15_ = (NIM_BOOL)0; T15_ = nimDecRefIsLastCyclicDyn(colontmp_.fun1.ClE_0); if (!T15_) goto LA16_; nimDestroyAndDispose(colontmp_.fun1.ClE_0); } LA16_: ; } break; case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1): { } break; } } N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_97)(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw* dest) { switch ((*dest).kind) { case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0): { { NIM_BOOL T4_; T4_ = (NIM_BOOL)0; T4_ = nimDecRefIsLastCyclicDyn((*dest).fun1.ClE_0); if (!T4_) goto LA5_; nimDestroyAndDispose((*dest).fun1.ClE_0); } LA5_: ; } break; case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1): { } break; } } static N_INLINE(void, release__coreZlocks_16)(CRITICAL_SECTION* lock) { LeaveCriticalSection(lock); } N_LIB_PRIVATE N_NOCONV(void, callClosures__stdZexitprocs_202)(void) { NIM_BOOL oldNimErrFin1_; NIM_BOOL* nimErr_; {nimErr_ = nimErrorFlag(); acquire__coreZlocks_14((&gFunsLock__stdZexitprocs_14)); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; { NI i; NI colontmp_; NI T3_; NI res; i = (NI)0; colontmp_ = (NI)0; T3_ = gFuns__stdZexitprocs_15.len; colontmp_ = (NI)(T3_ - ((NI)1)); res = colontmp_; { while (1) { tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw fun; if (!(((NI)0) <= res)) goto LA5 ; nimZeroMem((void*)(&fun), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw)); i = res; eqcopy___stdZexitprocs_100((&fun), gFuns__stdZexitprocs_15.p->data[i]); switch (fun.kind) { case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0): { fun.fun1.ClE_0? fun.fun1.ClP_0(fun.fun1.ClE_0):((TM__JXL39bfraktrl3ZkJ5EQGjw_2)(fun.fun1.ClP_0))(); if (NIM_UNLIKELY(*nimErr_)) goto LA1_; } break; case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1): { fun.fun2(); if (NIM_UNLIKELY(*nimErr_)) goto LA1_; } break; } res -= ((NI)1); eqdestroy___stdZexitprocs_97((&fun)); } LA5: ; } } { LA1_:; } { oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE; release__coreZlocks_16((&gFunsLock__stdZexitprocs_14)); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; *nimErr_ = oldNimErrFin1_; } if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; }BeforeRet_: ; } static N_INLINE(void, nimMarkCyclic)(void* p) { } N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_244)(tyProc__HzVCwACFYM9cx9aV62PdjtuA* dest) { { NIM_BOOL T3_; T3_ = (NIM_BOOL)0; T3_ = nimDecRefIsLastCyclicDyn((*dest).ClE_0); if (!T3_) goto LA4_; nimDestroyAndDispose((*dest).ClE_0); } LA4_: ; } N_LIB_PRIVATE N_NIMCALL(void, addExitProc__stdZexitprocs_218)(tyProc__HzVCwACFYM9cx9aV62PdjtuA cl) { tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw T7_; tyProc__HzVCwACFYM9cx9aV62PdjtuA blitTmp; NIM_BOOL oldNimErrFin1_; NIM_BOOL* nimErr_; {nimErr_ = nimErrorFlag(); acquire__coreZlocks_14((&gFunsLock__stdZexitprocs_14)); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; { NI T4_; T4_ = gFuns__stdZexitprocs_15.len; if (!(T4_ == ((NI)0))) goto LA5_; atexit(callClosures__stdZexitprocs_202); } LA5_: ; nimZeroMem((void*)(&T7_), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw)); nimZeroMem((void*)(&T7_), sizeof(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw)); T7_.kind = ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0); nimZeroMem((void*)(&blitTmp), sizeof(tyProc__HzVCwACFYM9cx9aV62PdjtuA)); blitTmp.ClE_0 = cl.ClE_0; blitTmp.ClP_0 = cl.ClP_0; nimMarkCyclic(cl.ClE_0); nimZeroMem((void*)(&cl), sizeof(tyProc__HzVCwACFYM9cx9aV62PdjtuA)); T7_.fun1.ClE_0 = blitTmp.ClE_0; T7_.fun1.ClP_0 = blitTmp.ClP_0; add__stdZexitprocs_224((&gFuns__stdZexitprocs_15), T7_); { LA1_:; } { oldNimErrFin1_ = *nimErr_; *nimErr_ = NIM_FALSE; release__coreZlocks_16((&gFunsLock__stdZexitprocs_14)); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; *nimErr_ = oldNimErrFin1_; } if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; eqdestroy___stdZexitprocs_244((&cl)); }BeforeRet_: ; } N_LIB_PRIVATE N_NIMCALL(void, eqcopy___stdZexitprocs_247)(tyProc__HzVCwACFYM9cx9aV62PdjtuA* dest, tyProc__HzVCwACFYM9cx9aV62PdjtuA src, NIM_BOOL cyclic) { void* colontmp_; colontmp_ = (*dest).ClE_0; { if (!src.ClE_0) goto LA3_; nimIncRefCyclic(src.ClE_0, cyclic); } LA3_: ; (*dest).ClE_0 = src.ClE_0; (*dest).ClP_0 = src.ClP_0; { NIM_BOOL T7_; T7_ = (NIM_BOOL)0; T7_ = nimDecRefIsLastCyclicDyn(colontmp_); if (!T7_) goto LA8_; nimDestroyAndDispose(colontmp_); } LA8_: ; } N_LIB_PRIVATE N_NIMCALL(void, eqdestroy___stdZexitprocs_31)(tySequence__jPly7LEWA9bR7s5RNk1UriQ* dest) { NI colontmp_; colontmp_ = ((NI)0); { while (1) { NI T3_; T3_ = (*dest).len; if (!(colontmp_ < T3_)) goto LA2 ; switch ((*dest).p->data[colontmp_].kind) { case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)0): { { NIM_BOOL T7_; T7_ = (NIM_BOOL)0; T7_ = nimDecRefIsLastCyclicDyn((*dest).p->data[colontmp_].fun1.ClE_0); if (!T7_) goto LA8_; nimDestroyAndDispose((*dest).p->data[colontmp_].fun1.ClE_0); } LA8_: ; } break; case ((tyEnum_FunKind__ThaC3LIrCpK9cJoqLuqYlBA)1): { } break; } colontmp_ += ((NI)1); } LA2: ; } if ((*dest).p && !((*dest).p->cap & NIM_STRLIT_FLAG)) { alignedDealloc((*dest).p, NIM_ALIGNOF(tyObject_Fun__8SmujJ2dv64FQZRj9avIvVw)); } } N_LIB_PRIVATE N_NIMCALL(void, atmdotdotatslibatsstdatsexitprocsdotnim_Init000)(void) { { NIM_BOOL* nimErr_; nimErr_ = nimErrorFlag(); initLock__coreZlocks_7((&gFunsLock__stdZexitprocs_14)); if (NIM_UNLIKELY(*nimErr_)) goto BeforeRet_; BeforeRet_: ; } }