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