1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3 
4 #include "nimbase.h"
5 #include <windows.h>
6 #include <string.h>
7 #undef LANGUAGE_C
8 #undef MIPSEB
9 #undef MIPSEL
10 #undef PPC
11 #undef R3000
12 #undef R4000
13 #undef i386
14 #undef linux
15 #undef mips
16 #undef near
17 #undef far
18 #undef powerpc
19 #undef unix
20 #define nimfr_(x, y)
21 #define nimln_(x, y)
22 typedef struct NimStringDesc NimStringDesc;
23 typedef struct TGenericSeq TGenericSeq;
24 typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
25 typedef struct TNimType TNimType;
26 typedef struct TNimNode TNimNode;
27 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
28 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
29 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
30 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
31 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
32 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
33 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
34 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
35 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
36 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
37 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
38 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
39 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
40 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
41 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
42 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
43 struct TGenericSeq {
44 NI len;
45 NI reserved;
46 };
47 struct NimStringDesc {
48   TGenericSeq Sup;
49 NIM_CHAR data[SEQ_DECL_SIZE];
50 };
51 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
52 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
53 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
54 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
55 struct TNimType {
56 NI size;
57 NI align;
58 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
59 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
60 TNimType* base;
61 TNimNode* node;
62 void* finalizer;
63 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
64 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
65 };
66 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
67 struct TNimNode {
68 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
69 NI offset;
70 TNimType* typ;
71 NCSTRING name;
72 NI len;
73 TNimNode** sons;
74 };
75 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
76 NI refcount;
77 TNimType* typ;
78 };
79 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
80 void* bottom;
81 };
82 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
83 NI len;
84 NI cap;
85 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
86 };
87 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
88 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
89 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
90 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
91 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
92 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
93 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
94 };
95 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
96 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
97 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
98 NI key;
99 NI upperBound;
100 NI level;
101 };
102 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
103 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
104 NI Field1;
105 };
106 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
107 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
108 NI len;
109 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
110 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
111 };
112 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
113 NI minLargeObj;
114 NI maxLargeObj;
115 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
116 NU32 flBitmap;
117 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
118 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
119 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
120 NI currMem;
121 NI maxMem;
122 NI freeMem;
123 NI occ;
124 NI lastSize;
125 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
126 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
127 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
128 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
129 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
130 NIM_BOOL locked;
131 NIM_BOOL blockChunkSizeIncrease;
132 NI nextChunkSize;
133 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
134 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
135 };
136 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
137 NI stackScans;
138 NI cycleCollections;
139 NI maxThreshold;
140 NI maxStackSize;
141 NI maxStackCells;
142 NI cycleTableSize;
143 NI64 maxPause;
144 };
145 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
146 NI counter;
147 NI max;
148 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
149 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
150 };
151 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
152 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
153 NI cycleThreshold;
154 NI zctThreshold;
155 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
156 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
157 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
158 NI recGcLock;
159 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
160 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
161 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
162 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
163 NI gcThreadId;
164 };
165 struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
166   TGenericSeq Sup;
167   NimStringDesc* data[SEQ_DECL_SIZE];
168 };
169 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
170 N_LIB_PRIVATE N_NIMCALL(NI, nsuFindChar)(NimStringDesc* s, NIM_CHAR sub, NI start, NI last);
171 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__system_7798)(NimStringDesc* s, NI first, NI last);
172 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, substr__system_7810)(NimStringDesc* s, NI first);
173 N_LIB_PRIVATE N_NIMCALL(void, libCandidates__pureZdynlib_37)(NimStringDesc* s, tySequence__sM4lkSb7zS6F7OVMvW9cffQ** dest);
174 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
175 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
176 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
177 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
178 N_LIB_PRIVATE N_NIMCALL(TGenericSeq*, incrSeqV3)(TGenericSeq* s, TNimType* typ);
179 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
180 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
181 static N_INLINE(void, nimGCunrefNoCycle)(void* p);
182 static N_INLINE(void, decRef__system_5370)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
183 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
184 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
185 static N_INLINE(void, rtlAddZCT__system_5368)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
186 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5319)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
187 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5325)(void* usr);
188 extern TNimType NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_;
189 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5272;
N_INLINE(NCSTRING,nimToCStringConv)190 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {
191 	NCSTRING result;
192 	result = (NCSTRING)0;
193 	{
194 		NIM_BOOL T3_;
195 		T3_ = (NIM_BOOL)0;
196 		T3_ = (s == ((NimStringDesc*) NIM_NIL));
197 		if (T3_) goto LA4_;
198 		T3_ = ((*s).Sup.len == ((NI) 0));
199 		LA4_: ;
200 		if (!T3_) goto LA5_;
201 		result = "";
202 	}
203 	goto LA1_;
204 	LA5_: ;
205 	{
206 		result = ((NCSTRING) ((*s).data));
207 	}
208 	LA1_: ;
209 	return result;
210 }
N_NIMCALL(void *,loadLib__pureZdynlib_3)211 N_LIB_PRIVATE N_NIMCALL(void*, loadLib__pureZdynlib_3)(NimStringDesc* path, NIM_BOOL globalSymbols) {
212 	void* result;
213 	HMODULE T1_;
214 	result = (void*)0;
215 	T1_ = (HMODULE)0;
216 	T1_ = LoadLibraryA(nimToCStringConv(path));
217 	result = ((void*) (T1_));
218 	return result;
219 }
N_NIMCALL(void *,symAddr__pureZdynlib_30)220 N_LIB_PRIVATE N_NIMCALL(void*, symAddr__pureZdynlib_30)(void* lib, NCSTRING name) {
221 	void* result;
222 	FARPROC T1_;
223 	result = (void*)0;
224 	T1_ = (FARPROC)0;
225 	T1_ = GetProcAddress(((HMODULE) (lib)), name);
226 	result = ((void*) (T1_));
227 	return result;
228 }
N_INLINE(void,nimCopyMem)229 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
230 	void* T1_;
231 	T1_ = (void*)0;
232 	T1_ = memcpy(dest, source, ((size_t) (size)));
233 }
N_INLINE(void,copyMem__system_1727)234 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
235 	nimCopyMem(dest, source, size);
236 }
N_INLINE(void,appendString)237 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
238 	{
239 		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
240 		copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
241 		(*dest).Sup.len += (*src).Sup.len;
242 	}
243 	LA3_: ;
244 }
N_INLINE(NI,minuspercent___system_716)245 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
246 	NI result;
247 	result = (NI)0;
248 	result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
249 	return result;
250 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)251 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
252 	NIM_BOOL result;
253 	result = (NIM_BOOL)0;
254 	result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
255 	return result;
256 }
N_INLINE(void,rtlAddZCT__system_5368)257 static N_INLINE(void, rtlAddZCT__system_5368)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
258 	addZCT__system_5319((&gch__system_5272.zct), c);
259 }
N_INLINE(void,decRef__system_5370)260 static N_INLINE(void, decRef__system_5370)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
261 	(*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
262 	{
263 		NIM_BOOL T3_;
264 		T3_ = (NIM_BOOL)0;
265 		T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
266 		if (!T3_) goto LA4_;
267 		rtlAddZCT__system_5368(c);
268 	}
269 	LA4_: ;
270 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5325)271 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5325)(void* usr) {
272 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
273 	NI T1_;
274 	result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
275 	T1_ = (NI)0;
276 	T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
277 	result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
278 	return result;
279 }
N_INLINE(void,nimGCunrefNoCycle)280 static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
281 	tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
282 	T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
283 	T1_ = usrToCell__system_5325(p);
284 	decRef__system_5370(T1_);
285 }
N_NIMCALL(void,libCandidates__pureZdynlib_37)286 N_LIB_PRIVATE N_NIMCALL(void, libCandidates__pureZdynlib_37)(NimStringDesc* s, tySequence__sM4lkSb7zS6F7OVMvW9cffQ** dest) {
287 	NI le;
288 	NI ri;
289 	le = nsuFindChar(s, 40, ((NI) 0), ((NI) 0));
290 	ri = nsuFindChar(s, 41, ((NI) ((NI)(le + ((NI) 1)))), ((NI) 0));
291 	{
292 		NIM_BOOL T3_;
293 		NimStringDesc* prefix;
294 		NimStringDesc* suffix;
295 		T3_ = (NIM_BOOL)0;
296 		T3_ = (((NI) 0) <= le);
297 		if (!(T3_)) goto LA4_;
298 		T3_ = (le < ri);
299 		LA4_: ;
300 		if (!T3_) goto LA5_;
301 		prefix = substr__system_7798(s, ((NI) 0), (NI)(le - ((NI) 1)));
302 		suffix = substr__system_7810(s, (NI)(ri + ((NI) 1)));
303 		{
304 			NimStringDesc* middle;
305 			NimStringDesc* colontmp_;
306 			NI lastX60gensym34_;
307 			NI splitsX60gensym34_;
308 			middle = NIM_NIL;
309 			colontmp_ = NIM_NIL;
310 			colontmp_ = substr__system_7798(s, (NI)(le + ((NI) 1)), (NI)(ri - ((NI) 1)));
311 			lastX60gensym34_ = ((NI) 0);
312 			splitsX60gensym34_ = ((NI) -1);
313 			{
314 				while (1) {
315 					NI firstX60gensym34_;
316 					NimStringDesc* T18_;
317 					if (!(lastX60gensym34_ <= (colontmp_ ? colontmp_->Sup.len : 0))) goto LA9;
318 					firstX60gensym34_ = lastX60gensym34_;
319 					{
320 						while (1) {
321 							NIM_BOOL T12_;
322 							T12_ = (NIM_BOOL)0;
323 							T12_ = (lastX60gensym34_ < (colontmp_ ? colontmp_->Sup.len : 0));
324 							if (!(T12_)) goto LA13_;
325 							T12_ = !(((NU8)(colontmp_->data[lastX60gensym34_]) == (NU8)(124)));
326 							LA13_: ;
327 							if (!T12_) goto LA11;
328 							lastX60gensym34_ += ((NI) 1);
329 						} LA11: ;
330 					}
331 					{
332 						if (!(splitsX60gensym34_ == ((NI) 0))) goto LA16_;
333 						lastX60gensym34_ = (colontmp_ ? colontmp_->Sup.len : 0);
334 					}
335 					LA16_: ;
336 					middle = substr__system_7798(colontmp_, firstX60gensym34_, (NI)(lastX60gensym34_ - ((NI) 1)));
337 					T18_ = NIM_NIL;
338 					T18_ = rawNewString((prefix ? prefix->Sup.len : 0) + (middle ? middle->Sup.len : 0) + (suffix ? suffix->Sup.len : 0) + 0);
339 appendString(T18_, prefix);
340 appendString(T18_, middle);
341 appendString(T18_, suffix);
342 					libCandidates__pureZdynlib_37(T18_, dest);
343 					{
344 						if (!(splitsX60gensym34_ == ((NI) 0))) goto LA21_;
345 						goto LA8;
346 					}
347 					LA21_: ;
348 					splitsX60gensym34_ -= ((NI) 1);
349 					lastX60gensym34_ += ((NI) 1);
350 				} LA9: ;
351 			} LA8: ;
352 		}
353 	}
354 	goto LA1_;
355 	LA5_: ;
356 	{
357 		NI T24_;
358 		NimStringDesc* T25_;
359 		unsureAsgnRef((void**) (&(*dest)), (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) incrSeqV3((TGenericSeq*)((*dest)), (&NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_)));
360 		T24_ = (*dest)->Sup.len++;
361 		T25_ = NIM_NIL;
362 		T25_ = (*dest)->data[T24_]; (*dest)->data[T24_] = copyStringRC1(s);
363 		if (T25_) nimGCunrefNoCycle(T25_);
364 	}
365 	LA1_: ;
366 }
367