1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 32
3
4 #include "nimbase.h"
5 #include <stdio.h>
6 #include <fcntl.h>
7 #include <string.h>
8 #include <errno.h>
9 #include <sys/stat.h>
10 #include <sys/types.h>
11 #include <setjmp.h>
12 #include <sys/ioctl.h>
13 #undef LANGUAGE_C
14 #undef MIPSEB
15 #undef MIPSEL
16 #undef PPC
17 #undef R3000
18 #undef R4000
19 #undef i386
20 #undef linux
21 #undef mips
22 #undef near
23 #undef far
24 #undef powerpc
25 #undef unix
26 #define nimfr_(x, y)
27 #define nimln_(x, y)
28 typedef struct NimStringDesc NimStringDesc;
29 typedef struct TGenericSeq TGenericSeq;
30 typedef struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ tySequence__sM4lkSb7zS6F7OVMvW9cffQ;
31 typedef struct TNimType TNimType;
32 typedef struct TNimNode TNimNode;
33 typedef struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw;
34 typedef struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA;
35 typedef struct Exception Exception;
36 typedef struct RootObj RootObj;
37 typedef struct tySequence__uB9b75OUPRENsBAu4AnoePA tySequence__uB9b75OUPRENsBAu4AnoePA;
38 typedef struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g;
39 typedef struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w;
40 typedef struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ;
41 typedef struct tyObject_GcStack__7fytPA5bBsob6See21YMRA tyObject_GcStack__7fytPA5bBsob6See21YMRA;
42 typedef struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg;
43 typedef struct tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ;
44 typedef struct tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg;
45 typedef struct tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw;
46 typedef struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA;
47 typedef struct tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw;
48 typedef struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw;
49 typedef struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg;
50 typedef struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyTuple__ujsjpB2O9cjj3uDHsXbnSzg;
51 typedef struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg;
52 typedef struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ;
53 typedef struct tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg;
54 typedef struct TSafePoint TSafePoint;
55 typedef struct tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg;
56 typedef struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA;
57 struct TGenericSeq {
58 NI len;
59 NI reserved;
60 };
61 struct NimStringDesc {
62 TGenericSeq Sup;
63 NIM_CHAR data[SEQ_DECL_SIZE];
64 };
65 typedef NU8 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A;
66 typedef NU8 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ;
67 typedef N_NIMCALL_PTR(void, tyProc__ojoeKfW4VYIm36I9cpDTQIg) (void* p, NI op);
68 typedef N_NIMCALL_PTR(void*, tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ) (void* p);
69 struct TNimType {
70 NI size;
71 NI align;
72 tyEnum_TNimKind__jIBKr1ejBgsfM33Kxw4j7A kind;
73 tySet_tyEnum_TNimTypeFlag__v8QUszD1sWlSIWZz7mC4bQ flags;
74 TNimType* base;
75 TNimNode* node;
76 void* finalizer;
77 tyProc__ojoeKfW4VYIm36I9cpDTQIg marker;
78 tyProc__WSm2xU5ARYv9aAR4l0z9c9auQ deepcopy;
79 };
80 typedef NU8 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ;
81 struct TNimNode {
82 tyEnum_TNimNodeKind__unfNsxrcATrufDZmpBq4HQ kind;
83 NI offset;
84 TNimType* typ;
85 NCSTRING name;
86 NI len;
87 TNimNode** sons;
88 };
89 struct RootObj {
90 TNimType* m_type;
91 };
92 struct Exception {
93 RootObj Sup;
94 Exception* parent;
95 NCSTRING name;
96 NimStringDesc* message;
97 tySequence__uB9b75OUPRENsBAu4AnoePA* trace;
98 Exception* up;
99 };
100 struct tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA {
101 Exception Sup;
102 };
103 struct tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw {
104 tyObject_CatchableError__qrLSDoe2oBoAqNtJ9badtnA Sup;
105 };
106 struct tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g {
107 NI refcount;
108 TNimType* typ;
109 };
110 struct tyObject_GcStack__7fytPA5bBsob6See21YMRA {
111 void* bottom;
112 };
113 struct tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w {
114 NI len;
115 NI cap;
116 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g** d;
117 };
118 typedef tyObject_SmallChunk__tXn60W2f8h3jgAYdEmy5NQ* tyArray__SPr7N6UKfuF549bNPiUvSRw[256];
119 typedef NU32 tyArray__BHbOSqU1t9b3Gt7K2c6fQig[24];
120 typedef tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* tyArray__N1u1nqOgmuJN9cSZrnMHgOQ[32];
121 typedef tyArray__N1u1nqOgmuJN9cSZrnMHgOQ tyArray__B6durA4ZCi1xjJvRtyYxMg[24];
122 typedef tyObject_Trunk__W0r8S0Y3UGke6T9bIUWnnuw* tyArray__lh2A89ahMmYg9bCmpVaplLbA[256];
123 struct tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA {
124 tyArray__lh2A89ahMmYg9bCmpVaplLbA data;
125 };
126 typedef tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* tyArray__0aOLqZchNi8nWtMTi8ND8w[2];
127 struct tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw {
128 tyArray__0aOLqZchNi8nWtMTi8ND8w link;
129 NI key;
130 NI upperBound;
131 NI level;
132 };
133 struct tyTuple__ujsjpB2O9cjj3uDHsXbnSzg {
134 tyObject_BigChunk__Rv9c70Uhp2TytkX7eH78qEg* Field0;
135 NI Field1;
136 };
137 typedef tyTuple__ujsjpB2O9cjj3uDHsXbnSzg tyArray__LzOv2eCDGiceMKQstCLmhw[30];
138 struct tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg {
139 NI len;
140 tyArray__LzOv2eCDGiceMKQstCLmhw chunks;
141 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg* next;
142 };
143 struct tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg {
144 NI minLargeObj;
145 NI maxLargeObj;
146 tyArray__SPr7N6UKfuF549bNPiUvSRw freeSmallChunks;
147 NU32 flBitmap;
148 tyArray__BHbOSqU1t9b3Gt7K2c6fQig slBitmap;
149 tyArray__B6durA4ZCi1xjJvRtyYxMg matrix;
150 tyObject_LLChunk__XsENErzHIZV9bhvyJx56wGw* llmem;
151 NI currMem;
152 NI maxMem;
153 NI freeMem;
154 NI occ;
155 NI lastSize;
156 tyObject_IntSet__EZObFrE3NC9bIb3YMkY9crZA chunkStarts;
157 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* root;
158 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* deleted;
159 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* last;
160 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw* freeAvlNodes;
161 NIM_BOOL locked;
162 NIM_BOOL blockChunkSizeIncrease;
163 NI nextChunkSize;
164 tyObject_AvlNode__IaqjtwKhxLEpvDS9bct9blEw bottomData;
165 tyObject_HeapLinks__PDV1HBZ8CQSQJC9aOBFNRSg heapLinks;
166 };
167 struct tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg {
168 NI stackScans;
169 NI cycleCollections;
170 NI maxThreshold;
171 NI maxStackSize;
172 NI maxStackCells;
173 NI cycleTableSize;
174 NI64 maxPause;
175 };
176 struct tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ {
177 NI counter;
178 NI max;
179 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg* head;
180 tyObject_PageDesc__fublkgIY4LG3mT51LU2WHg** data;
181 };
182 struct tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ {
183 tyObject_GcStack__7fytPA5bBsob6See21YMRA stack;
184 NI cycleThreshold;
185 NI zctThreshold;
186 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w zct;
187 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w decStack;
188 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w tempStack;
189 NI recGcLock;
190 tyObject_MemRegion__x81NhDv59b8ercDZ9bi85jyg region;
191 tyObject_GcStat__0RwLoVBHZPfUAcLczmfQAg stat;
192 tyObject_CellSet__jG87P0AI9aZtss9ccTYBIISQ marked;
193 tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w additionalRoots;
194 NI gcThreadId;
195 };
196 typedef NU8 tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg;
197 typedef NCSTRING tyArray__Djap3EijveoDksCG9bY8s5w[5];
198 struct TSafePoint {
199 TSafePoint* prev;
200 NI status;
201 jmp_buf context;
202 };
203 struct tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg {
204 tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw Sup;
205 };
206 typedef NU8 tyEnum_FileSeekPos__I9aQjuvWxs8BspGbxwsngWw;
207 struct tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA {
208 NCSTRING procname;
209 NI line;
210 NCSTRING filename;
211 };
212 struct tySequence__sM4lkSb7zS6F7OVMvW9cffQ {
213 TGenericSeq Sup;
214 NimStringDesc* data[SEQ_DECL_SIZE];
215 };
216 struct tySequence__uB9b75OUPRENsBAu4AnoePA {
217 TGenericSeq Sup;
218 tyObject_StackTraceEntry__oLyohQ7O2XOvGnflOss8EA data[SEQ_DECL_SIZE];
219 };
220 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s);
221 N_LIB_PRIVATE N_NIMCALL(void*, newSeq)(TNimType* typ, NI len);
222 N_LIB_PRIVATE N_NIMCALL(NI, writeBuffer__systemZio_176)(FILE* f, void* buffer, NI len);
223 N_LIB_PRIVATE N_NIMCALL(void, checkErr__systemZio_141)(FILE* f);
224 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
225 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
226 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
227 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, dollar___systemZdollars_3)(NI x);
228 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, cstrToNimstr)(NCSTRING str);
229 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, rawNewString)(NI space);
230 N_LIB_PRIVATE N_NOINLINE(void, raiseEIO__systemZio_96)(NimStringDesc* msg) __attribute__((noreturn));
231 N_LIB_PRIVATE N_NOINLINE(void*, newObj)(TNimType* typ, NI size);
232 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyStringRC1)(NimStringDesc* src);
233 static N_INLINE(void, nimGCunrefNoCycle)(void* p);
234 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
235 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y);
236 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y);
237 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
238 N_LIB_PRIVATE N_NOINLINE(void, addZCT__system_5264)(tyObject_CellSeq__Axo1XVm9aaQueTOldv8le5w* s, tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
239 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr);
240 static N_INLINE(void, asgnRef)(void** dest, void* src);
241 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c);
242 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y);
243 N_LIB_PRIVATE N_NIMCALL(void, raiseExceptionEx)(Exception* e, NCSTRING ename, NCSTRING procname, NCSTRING filename, NI line);
244 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_389)(FILE** f, NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize);
245 N_LIB_PRIVATE N_NIMCALL(int, getFileHandle__systemZio_228)(FILE* f);
246 N_LIB_PRIVATE N_NIMCALL(void, close__systemZio_217)(FILE* f);
247 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, setLengthStr)(NimStringDesc* s, NI newLen);
248 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
249 static N_INLINE(NIM_BOOL, eqeq___system_7723)(NCSTRING x, NCSTRING y);
250 static N_INLINE(void, pushSafePoint)(TSafePoint* s);
251 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAll__systemZio_350)(FILE* file);
252 N_LIB_PRIVATE N_NIMCALL(NI64, rawFileSize__systemZio_333)(FILE* file);
253 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllFile__systemZio_341)(FILE* file, NI64 len);
254 N_NIMCALL(NimStringDesc*, mnewString)(NI len);
255 N_LIB_PRIVATE N_NIMCALL(NI, readBuffer__systemZio_144)(FILE* f, void* buffer, NI len);
256 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, endOfFile__systemZio_337)(FILE* f);
257 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllBuffer__systemZio_328)(FILE* file);
258 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
259 static N_INLINE(void, popSafePoint)(void);
260 N_LIB_PRIVATE N_NIMCALL(void, nimLeaveFinally)(void);
261 N_LIB_PRIVATE N_NIMCALL(void, reraiseException)(void);
262 N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
263 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, readLine__systemZio_238)(FILE* f, NimStringDesc** line);
264 N_LIB_PRIVATE N_NOINLINE(void, raiseEOF__systemZio_117)(void) __attribute__((noreturn));
265 N_LIB_PRIVATE N_NIMCALL(void, write__systemZio_205)(FILE* f, NimStringDesc* s);
266 N_LIB_PRIVATE N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ*, newSeq__systemZio_501)(NI len);
267 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, setInheritable__systemZio_234)(int f, NIM_BOOL inheritable);
268 extern TNimType NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_;
269 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_2, "errno: ", 7);
270 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_3, " `", 2);
271 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_4, "`", 1);
272 extern TNimType NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_;
273 extern TNimType NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_;
274 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_5, "cannot write string to file", 27);
275 N_LIB_PRIVATE NIM_CONST tyArray__Djap3EijveoDksCG9bY8s5w FormatOpen__systemZio_371 = {"rbe",
276 "wbe",
277 "w+be",
278 "r+be",
279 "abe"}
280 ;
281 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_6, "cannot open: ", 13);
282 extern TNimType NTIrefeoferror__LEclZrWX2FQAodlapxGITw_;
283 extern TNimType NTIeoferror__KGSY1JdrNB7Xi8KDhXFhSg_;
284 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_8, "EOF reached", 11);
285 N_LIB_PRIVATE TNimType NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_;
286 N_LIB_PRIVATE TNimType NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_;
287 N_LIB_PRIVATE TNimType NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_;
288 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_11, "cannot set file position", 24);
289 STRING_LITERAL(TM__MnCJ0VAmeZ9aTATUB39cx60Q_12, "cannot retrieve file position", 29);
290 extern tyObject_GcHeap__1TRH1TZMaVZTnLNcIHuNFQ gch__system_5217;
291 extern TSafePoint* excHandler__system_2565;
292 extern TSafePoint* excHandler__system_2565;
293 extern TSafePoint* excHandler__system_2565;
294 extern TSafePoint* excHandler__system_2565;
N_INLINE(NCSTRING,nimToCStringConv)295 static N_INLINE(NCSTRING, nimToCStringConv)(NimStringDesc* s) {
296 NCSTRING result;
297 result = (NCSTRING)0;
298 {
299 NIM_BOOL T3_;
300 T3_ = (NIM_BOOL)0;
301 T3_ = (s == ((NimStringDesc*) NIM_NIL));
302 if (T3_) goto LA4_;
303 T3_ = ((*s).Sup.len == ((NI) 0));
304 LA4_: ;
305 if (!T3_) goto LA5_;
306 result = "";
307 }
308 goto LA1_;
309 LA5_: ;
310 {
311 result = ((NCSTRING) ((*s).data));
312 }
313 LA1_: ;
314 return result;
315 }
N_NIMCALL(void,echoBinSafe)316 N_LIB_PRIVATE N_NIMCALL(void, echoBinSafe)(NimStringDesc** args, NI argsLen_0) {
317 int T5_;
318 int T6_;
319 flockfile(__stdoutp);
320 {
321 NimStringDesc** s;
322 NI i;
323 s = (NimStringDesc**)0;
324 i = ((NI) 0);
325 {
326 while (1) {
327 int T4_;
328 if (!(i < argsLen_0)) goto LA3;
329 s = (&args[i]);
330 T4_ = (int)0;
331 T4_ = fwrite(((void*) (nimToCStringConv((*s)))), ((size_t) (((*s) ? (*s)->Sup.len : 0))), ((size_t) 1), __stdoutp);
332 (void)(T4_);
333 i += ((NI) 1);
334 } LA3: ;
335 }
336 }
337 T5_ = (int)0;
338 T5_ = fwrite(((void*) ("\012")), ((size_t) 1), ((size_t) 1), __stdoutp);
339 (void)(T5_);
340 T6_ = (int)0;
341 T6_ = fflush(__stdoutp);
342 (void)(T6_);
343 funlockfile(__stdoutp);
344 }
N_NIMCALL(int,getFileHandle__systemZio_228)345 N_LIB_PRIVATE N_NIMCALL(int, getFileHandle__systemZio_228)(FILE* f) {
346 int result;
347 result = (int)0;
348 result = fileno(f);
349 return result;
350 }
N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ *,newSeq__systemZio_501)351 N_LIB_PRIVATE N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ*, newSeq__systemZio_501)(NI len) {
352 tySequence__sM4lkSb7zS6F7OVMvW9cffQ* result;
353 result = NIM_NIL;
354 result = (tySequence__sM4lkSb7zS6F7OVMvW9cffQ*) newSeq((&NTIseqLstringT__sM4lkSb7zS6F7OVMvW9cffQ_), len);
355 return result;
356 }
N_INLINE(void,nimCopyMem)357 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
358 void* T1_;
359 T1_ = (void*)0;
360 T1_ = memcpy(dest, source, ((size_t) (size)));
361 }
N_INLINE(void,copyMem__system_1727)362 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
363 nimCopyMem(dest, source, size);
364 }
N_INLINE(void,appendString)365 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
366 {
367 if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
368 copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
369 (*dest).Sup.len += (*src).Sup.len;
370 }
371 LA3_: ;
372 }
N_INLINE(NI,minuspercent___system_716)373 static N_INLINE(NI, minuspercent___system_716)(NI x, NI y) {
374 NI result;
375 result = (NI)0;
376 result = ((NI) ((NU)((NU32)(((NU) (x))) - (NU32)(((NU) (y))))));
377 return result;
378 }
N_INLINE(NIM_BOOL,ltpercent___system_1005)379 static N_INLINE(NIM_BOOL, ltpercent___system_1005)(NI x, NI y) {
380 NIM_BOOL result;
381 result = (NIM_BOOL)0;
382 result = ((NU32)(((NU) (x))) < (NU32)(((NU) (y))));
383 return result;
384 }
N_INLINE(void,rtlAddZCT__system_5313)385 static N_INLINE(void, rtlAddZCT__system_5313)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
386 addZCT__system_5264((&gch__system_5217.zct), c);
387 }
N_INLINE(void,decRef__system_5315)388 static N_INLINE(void, decRef__system_5315)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
389 (*c).refcount = minuspercent___system_716((*c).refcount, ((NI) 8));
390 {
391 NIM_BOOL T3_;
392 T3_ = (NIM_BOOL)0;
393 T3_ = ltpercent___system_1005((*c).refcount, ((NI) 8));
394 if (!T3_) goto LA4_;
395 rtlAddZCT__system_5313(c);
396 }
397 LA4_: ;
398 }
N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g *,usrToCell__system_5270)399 static N_INLINE(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*, usrToCell__system_5270)(void* usr) {
400 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* result;
401 NI T1_;
402 result = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
403 T1_ = (NI)0;
404 T1_ = minuspercent___system_716(((NI) (ptrdiff_t) (usr)), ((NI) 8));
405 result = ((tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*) (T1_));
406 return result;
407 }
N_INLINE(void,nimGCunrefNoCycle)408 static N_INLINE(void, nimGCunrefNoCycle)(void* p) {
409 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T1_;
410 T1_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
411 T1_ = usrToCell__system_5270(p);
412 decRef__system_5315(T1_);
413 }
N_INLINE(NI,pluspercent___system_696)414 static N_INLINE(NI, pluspercent___system_696)(NI x, NI y) {
415 NI result;
416 result = (NI)0;
417 result = ((NI) ((NU)((NU32)(((NU) (x))) + (NU32)(((NU) (y))))));
418 return result;
419 }
N_INLINE(void,incRef__system_5308)420 static N_INLINE(void, incRef__system_5308)(tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* c) {
421 (*c).refcount = pluspercent___system_696((*c).refcount, ((NI) 8));
422 }
N_INLINE(void,asgnRef)423 static N_INLINE(void, asgnRef)(void** dest, void* src) {
424 {
425 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T5_;
426 if (!!((src == NIM_NIL))) goto LA3_;
427 T5_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
428 T5_ = usrToCell__system_5270(src);
429 incRef__system_5308(T5_);
430 }
431 LA3_: ;
432 {
433 tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g* T10_;
434 if (!!(((*dest) == NIM_NIL))) goto LA8_;
435 T10_ = (tyObject_Cell__1zcF9cV8XIAtbN8h5HRUB8g*)0;
436 T10_ = usrToCell__system_5270((*dest));
437 decRef__system_5315(T10_);
438 }
439 LA8_: ;
440 (*dest) = src;
441 }
N_NOINLINE(void,raiseEIO__systemZio_96)442 N_LIB_PRIVATE N_NOINLINE(void, raiseEIO__systemZio_96)(NimStringDesc* msg) {
443 tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T1_;
444 NimStringDesc* T2_;
445 T1_ = NIM_NIL;
446 T1_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
447 (*T1_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
448 (*T1_).Sup.Sup.name = "IOError";
449 T2_ = NIM_NIL;
450 T2_ = (*T1_).Sup.Sup.message; (*T1_).Sup.Sup.message = copyStringRC1(msg);
451 if (T2_) nimGCunrefNoCycle(T2_);
452 asgnRef((void**) (&(*T1_).Sup.Sup.parent), ((Exception*) NIM_NIL));
453 raiseExceptionEx((Exception*)T1_, "IOError", "raiseEIO", "io.nim", 139);
454 }
N_NIMCALL(void,checkErr__systemZio_141)455 N_LIB_PRIVATE N_NIMCALL(void, checkErr__systemZio_141)(FILE* f) {
456 {
457 int T3_;
458 NimStringDesc* msg;
459 NimStringDesc* T6_;
460 NimStringDesc* T7_;
461 NCSTRING T8_;
462 NimStringDesc* T9_;
463 T3_ = (int)0;
464 T3_ = ferror(f);
465 if (!!((T3_ == ((NI32) 0)))) goto LA4_;
466 T6_ = NIM_NIL;
467 T7_ = NIM_NIL;
468 T7_ = dollar___systemZdollars_3(((NI) (errno)));
469 T8_ = (NCSTRING)0;
470 T8_ = strerror(errno);
471 T9_ = NIM_NIL;
472 T9_ = cstrToNimstr(T8_);
473 T6_ = rawNewString((T7_ ? T7_->Sup.len : 0) + (T9_ ? T9_->Sup.len : 0) + 10);
474 appendString(T6_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_2));
475 appendString(T6_, T7_);
476 appendString(T6_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_3));
477 appendString(T6_, T9_);
478 appendString(T6_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_4));
479 msg = T6_;
480 clearerr(f);
481 raiseEIO__systemZio_96(msg);
482 }
483 LA4_: ;
484 }
N_NIMCALL(NI,writeBuffer__systemZio_176)485 N_LIB_PRIVATE N_NIMCALL(NI, writeBuffer__systemZio_176)(FILE* f, void* buffer, NI len) {
486 NI result;
487 int T1_;
488 result = (NI)0;
489 T1_ = (int)0;
490 T1_ = fwrite(buffer, ((size_t) 1), ((size_t) (len)), f);
491 result = ((NI) (T1_));
492 checkErr__systemZio_141(f);
493 return result;
494 }
N_NIMCALL(void,write__systemZio_205)495 N_LIB_PRIVATE N_NIMCALL(void, write__systemZio_205)(FILE* f, NimStringDesc* s) {
496 {
497 NI T3_;
498 T3_ = (NI)0;
499 T3_ = writeBuffer__systemZio_176(f, ((void*) (nimToCStringConv(s))), ((NI) ((s ? s->Sup.len : 0))));
500 if (!!((T3_ == (s ? s->Sup.len : 0)))) goto LA4_;
501 raiseEIO__systemZio_96(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_5));
502 }
503 LA4_: ;
504 }
N_NIMCALL(void,flushFile__systemZio_226)505 N_LIB_PRIVATE N_NIMCALL(void, flushFile__systemZio_226)(FILE* f) {
506 int T1_;
507 T1_ = (int)0;
508 T1_ = fflush(f);
509 (void)(T1_);
510 }
N_NIMCALL(void,close__systemZio_217)511 N_LIB_PRIVATE N_NIMCALL(void, close__systemZio_217)(FILE* f) {
512 {
513 int T5_;
514 if (!!((f == 0))) goto LA3_;
515 T5_ = (int)0;
516 T5_ = fclose(f);
517 (void)(T5_);
518 }
519 LA3_: ;
520 }
N_NIMCALL(NIM_BOOL,open__systemZio_389)521 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_389)(FILE** f, NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize) {
522 NIM_BOOL result;
523 void* p;
524 { result = (NIM_BOOL)0;
525 p = fopen(nimToCStringConv(filename), FormatOpen__systemZio_371[(mode)- 0]);
526 {
527 FILE* f2;
528 struct stat res;
529 if (!!((p == NIM_NIL))) goto LA3_;
530 f2 = ((FILE*) (p));
531 {
532 NIM_BOOL T7_;
533 int T8_;
534 int T9_;
535 T7_ = (NIM_BOOL)0;
536 T8_ = (int)0;
537 T8_ = getFileHandle__systemZio_228(f2);
538 T9_ = (int)0;
539 T9_ = fstat(T8_, (&res));
540 T7_ = (((NI32) 0) <= T9_);
541 if (!(T7_)) goto LA10_;
542 T7_ = S_ISDIR(res.st_mode);
543 LA10_: ;
544 if (!T7_) goto LA11_;
545 close__systemZio_217(f2);
546 result = NIM_FALSE;
547 goto BeforeRet_;
548 }
549 LA11_: ;
550 result = NIM_TRUE;
551 (*f) = ((FILE*) (p));
552 {
553 NIM_BOOL T15_;
554 int T19_;
555 T15_ = (NIM_BOOL)0;
556 T15_ = (((NI) 0) < bufSize);
557 if (!(T15_)) goto LA16_;
558 T15_ = (bufSize <= ((NI) 2147483647));
559 LA16_: ;
560 if (!T15_) goto LA17_;
561 T19_ = (int)0;
562 T19_ = setvbuf((*f), NIM_NIL, _IOFBF, ((size_t) (bufSize)));
563 (void)(T19_);
564 }
565 goto LA13_;
566 LA17_: ;
567 {
568 int T23_;
569 if (!(bufSize == ((NI) 0))) goto LA21_;
570 T23_ = (int)0;
571 T23_ = setvbuf((*f), NIM_NIL, _IONBF, ((size_t) 0));
572 (void)(T23_);
573 }
574 goto LA13_;
575 LA21_: ;
576 LA13_: ;
577 }
578 LA3_: ;
579 }BeforeRet_: ;
580 return result;
581 }
N_NIMCALL(FILE *,open__systemZio_430)582 N_LIB_PRIVATE N_NIMCALL(FILE*, open__systemZio_430)(NimStringDesc* filename, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode, NI bufSize) {
583 FILE* result;
584 result = (FILE*)0;
585 {
586 NIM_BOOL T3_;
587 tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T6_;
588 NimStringDesc* T7_;
589 T3_ = (NIM_BOOL)0;
590 T3_ = open__systemZio_389(&result, filename, mode, bufSize);
591 if (!!(T3_)) goto LA4_;
592 T6_ = NIM_NIL;
593 T6_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
594 (*T6_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
595 (*T6_).Sup.Sup.name = "IOError";
596 T7_ = NIM_NIL;
597 T7_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
598 appendString(T7_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
599 appendString(T7_, filename);
600 asgnRef((void**) (&(*T6_).Sup.Sup.message), T7_);
601 asgnRef((void**) (&(*T6_).Sup.Sup.parent), ((Exception*) NIM_NIL));
602 raiseExceptionEx((Exception*)T6_, "IOError", "open", "io.nim", 745);
603 }
604 LA4_: ;
605 return result;
606 }
N_INLINE(NIM_BOOL,eqeq___system_7723)607 static N_INLINE(NIM_BOOL, eqeq___system_7723)(NCSTRING x, NCSTRING y) {
608 NIM_BOOL result;
609 result = (NIM_BOOL)0;
610 {
611 if (!(((void*) (x)) == ((void*) (y)))) goto LA3_;
612 result = NIM_TRUE;
613 }
614 goto LA1_;
615 LA3_: ;
616 {
617 NIM_BOOL T6_;
618 T6_ = (NIM_BOOL)0;
619 T6_ = (x == 0);
620 if (T6_) goto LA7_;
621 T6_ = (y == 0);
622 LA7_: ;
623 if (!T6_) goto LA8_;
624 result = NIM_FALSE;
625 }
626 goto LA1_;
627 LA8_: ;
628 {
629 int T11_;
630 T11_ = (int)0;
631 T11_ = strcmp(x, y);
632 result = (T11_ == ((NI32) 0));
633 }
634 LA1_: ;
635 return result;
636 }
N_NIMCALL(NIM_BOOL,readLine__systemZio_238)637 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, readLine__systemZio_238)(FILE* f, NimStringDesc** line) {
638 NIM_BOOL result;
639 NI pos;
640 NI sp;
641 { result = (NIM_BOOL)0;
642 pos = ((NI) 0);
643 sp = ((((*line) ? (*line)->Sup.len : 0) >= ((NI) 80)) ? ((*line) ? (*line)->Sup.len : 0) : ((NI) 80));
644 unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) (sp))));
645 {
646 while (1) {
647 NIM_BOOL fgetsSuccess;
648 void* m;
649 {
650 NI i;
651 NI i_2;
652 i = (NI)0;
653 i_2 = ((NI) 0);
654 {
655 while (1) {
656 if (!(i_2 < sp)) goto LA5;
657 i = i_2;
658 (*line)->data[(NI)(pos + i)] = 10;
659 i_2 += ((NI) 1);
660 } LA5: ;
661 }
662 }
663 fgetsSuccess = (NIM_BOOL)0;
664 {
665 while (1) {
666 {
667 NCSTRING T9_;
668 NIM_BOOL T10_;
669 T9_ = (NCSTRING)0;
670 T9_ = fgets(((NCSTRING) ((&(*line)->data[pos]))), ((int) (sp)), f);
671 T10_ = (NIM_BOOL)0;
672 T10_ = eqeq___system_7723(T9_, ((NCSTRING) NIM_NIL));
673 fgetsSuccess = !(T10_);
674 {
675 if (!fgetsSuccess) goto LA13_;
676 goto LA6;
677 }
678 LA13_: ;
679 {
680 if (!(errno == EINTR)) goto LA17_;
681 errno = ((int) 0);
682 clearerr(f);
683 goto LA8;
684 }
685 LA17_: ;
686 checkErr__systemZio_141(f);
687 goto LA6;
688 } LA8: ;
689 }
690 } LA6: ;
691 m = memchr(((void*) ((&(*line)->data[pos]))), ((int) 10), ((size_t) (sp)));
692 {
693 NI last;
694 NIM_BOOL T42_;
695 if (!!((m == NIM_NIL))) goto LA21_;
696 last = (NI)(((NI) (ptrdiff_t) (m)) - ((NI) (ptrdiff_t) ((&(*line)->data[((NI) 0)]))));
697 {
698 NIM_BOOL T25_;
699 NIM_BOOL T29_;
700 T25_ = (NIM_BOOL)0;
701 T25_ = (((NI) 0) < last);
702 if (!(T25_)) goto LA26_;
703 T25_ = ((NU8)((*line)->data[(NI)(last - ((NI) 1))]) == (NU8)(13));
704 LA26_: ;
705 if (!T25_) goto LA27_;
706 unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) ((NI)(last - ((NI) 1))))));
707 T29_ = (NIM_BOOL)0;
708 T29_ = (((NI) 1) < last);
709 if (T29_) goto LA30_;
710 T29_ = fgetsSuccess;
711 LA30_: ;
712 result = T29_;
713 goto BeforeRet_;
714 }
715 goto LA23_;
716 LA27_: ;
717 {
718 NIM_BOOL T32_;
719 T32_ = (NIM_BOOL)0;
720 T32_ = (((NI) 0) < last);
721 if (!(T32_)) goto LA33_;
722 T32_ = ((NU8)((*line)->data[(NI)(last - ((NI) 1))]) == (NU8)(0));
723 LA33_: ;
724 if (!T32_) goto LA34_;
725 {
726 NIM_BOOL T38_;
727 T38_ = (NIM_BOOL)0;
728 T38_ = (last < (NI)((NI)(pos + sp) - ((NI) 1)));
729 if (!(T38_)) goto LA39_;
730 T38_ = !(((NU8)((*line)->data[(NI)(last + ((NI) 1))]) == (NU8)(0)));
731 LA39_: ;
732 if (!T38_) goto LA40_;
733 last -= ((NI) 1);
734 }
735 LA40_: ;
736 }
737 goto LA23_;
738 LA34_: ;
739 LA23_: ;
740 unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) (last))));
741 T42_ = (NIM_BOOL)0;
742 T42_ = (((NI) 0) < last);
743 if (T42_) goto LA43_;
744 T42_ = fgetsSuccess;
745 LA43_: ;
746 result = T42_;
747 goto BeforeRet_;
748 }
749 goto LA19_;
750 LA21_: ;
751 {
752 sp -= ((NI) 1);
753 }
754 LA19_: ;
755 pos += sp;
756 sp = ((NI) 128);
757 unsureAsgnRef((void**) (&(*line)), setLengthStr((*line), ((NI) ((NI)(pos + sp)))));
758 }
759 }
760 }BeforeRet_: ;
761 return result;
762 }
N_INLINE(void,pushSafePoint)763 static N_INLINE(void, pushSafePoint)(TSafePoint* s) {
764 (*s).prev = excHandler__system_2565;
765 excHandler__system_2565 = s;
766 }
N_NIMCALL(NI64,rawFileSize__systemZio_333)767 N_LIB_PRIVATE N_NIMCALL(NI64, rawFileSize__systemZio_333)(FILE* file) {
768 NI64 result;
769 NI64 oldPos;
770 int T1_;
771 int T2_;
772 result = (NI64)0;
773 oldPos = ftello(file);
774 T1_ = (int)0;
775 T1_ = fseeko(file, IL64(0), ((int) 2));
776 (void)(T1_);
777 result = ftello(file);
778 T2_ = (int)0;
779 T2_ = fseeko(file, oldPos, ((int) 0));
780 (void)(T2_);
781 return result;
782 }
N_NIMCALL(NI,readBuffer__systemZio_144)783 N_LIB_PRIVATE N_NIMCALL(NI, readBuffer__systemZio_144)(FILE* f, void* buffer, NI len) {
784 NI result;
785 size_t T1_;
786 result = (NI)0;
787 T1_ = (size_t)0;
788 T1_ = fread(buffer, ((size_t) 1), ((size_t) (len)), f);
789 result = ((NI) (T1_));
790 {
791 if (!!((result == ((NI) (len))))) goto LA4_;
792 checkErr__systemZio_141(f);
793 }
794 LA4_: ;
795 return result;
796 }
N_NIMCALL(NIM_BOOL,endOfFile__systemZio_337)797 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, endOfFile__systemZio_337)(FILE* f) {
798 NIM_BOOL result;
799 int c;
800 int T1_;
801 { result = (NIM_BOOL)0;
802 c = fgetc(f);
803 T1_ = (int)0;
804 T1_ = ungetc(c, f);
805 (void)(T1_);
806 result = (c < ((NI32) 0));
807 goto BeforeRet_;
808 }BeforeRet_: ;
809 return result;
810 }
N_NIMCALL(NimStringDesc *,readAllBuffer__systemZio_328)811 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllBuffer__systemZio_328)(FILE* file) {
812 NimStringDesc* result;
813 NimStringDesc* buffer;
814 result = NIM_NIL;
815 result = ((NimStringDesc*) NIM_NIL);
816 buffer = mnewString(((NI) 4000));
817 {
818 while (1) {
819 NI bytesRead;
820 bytesRead = readBuffer__systemZio_144(file, ((void*) ((&buffer->data[((NI) 0)]))), ((NI) 4000));
821 {
822 if (!(bytesRead == ((NI) 4000))) goto LA5_;
823 result = resizeString(result, (buffer ? buffer->Sup.len : 0) + 0);
824 appendString(result, buffer);
825 }
826 goto LA3_;
827 LA5_: ;
828 {
829 buffer = setLengthStr(buffer, ((NI) (bytesRead)));
830 result = resizeString(result, (buffer ? buffer->Sup.len : 0) + 0);
831 appendString(result, buffer);
832 goto LA1;
833 }
834 LA3_: ;
835 }
836 } LA1: ;
837 return result;
838 }
N_NIMCALL(NimStringDesc *,readAllFile__systemZio_341)839 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAllFile__systemZio_341)(FILE* file, NI64 len) {
840 NimStringDesc* result;
841 NI bytes;
842 result = NIM_NIL;
843 result = mnewString(((NI) (len)));
844 bytes = readBuffer__systemZio_144(file, ((void*) ((&result->data[((NI) 0)]))), ((NI) (len)));
845 {
846 NIM_BOOL T3_;
847 T3_ = (NIM_BOOL)0;
848 T3_ = endOfFile__systemZio_337(file);
849 if (!T3_) goto LA4_;
850 {
851 if (!(((NI64) (bytes)) < len)) goto LA8_;
852 result = setLengthStr(result, ((NI) (bytes)));
853 }
854 LA8_: ;
855 }
856 goto LA1_;
857 LA4_: ;
858 {
859 NimStringDesc* T11_;
860 T11_ = NIM_NIL;
861 T11_ = readAllBuffer__systemZio_328(file);
862 result = resizeString(result, (T11_ ? T11_->Sup.len : 0) + 0);
863 appendString(result, T11_);
864 }
865 LA1_: ;
866 return result;
867 }
N_NIMCALL(NimStringDesc *,readAll__systemZio_350)868 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readAll__systemZio_350)(FILE* file) {
869 NimStringDesc* result;
870 NI64 len;
871 result = NIM_NIL;
872 {
873 if (!!((file == __stdinp))) goto LA3_;
874 len = rawFileSize__systemZio_333(file);
875 }
876 goto LA1_;
877 LA3_: ;
878 {
879 len = IL64(-1);
880 }
881 LA1_: ;
882 {
883 if (!(IL64(0) < len)) goto LA8_;
884 result = readAllFile__systemZio_341(file, len);
885 }
886 goto LA6_;
887 LA8_: ;
888 {
889 result = readAllBuffer__systemZio_328(file);
890 }
891 LA6_: ;
892 return result;
893 }
N_INLINE(void,popSafePoint)894 static N_INLINE(void, popSafePoint)(void) {
895 excHandler__system_2565 = (*excHandler__system_2565).prev;
896 }
N_NIMCALL(NimStringDesc *,readFile__systemZio_469)897 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readFile__systemZio_469)(NimStringDesc* filename) {
898 NimStringDesc* volatile result;
899 FILE* f;
900 result = NIM_NIL;
901 f = ((FILE*) NIM_NIL);
902 {
903 NIM_BOOL T3_;
904 TSafePoint TM__MnCJ0VAmeZ9aTATUB39cx60Q_7;
905 T3_ = (NIM_BOOL)0;
906 T3_ = open__systemZio_389(&f, filename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 0), ((NI) -1));
907 if (!T3_) goto LA4_;
908 pushSafePoint(&TM__MnCJ0VAmeZ9aTATUB39cx60Q_7);
909 TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status = _setjmp(TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.context);
910 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status == 0) {
911 result = readAll__systemZio_350(f);
912 popSafePoint();
913 }
914 else {
915 popSafePoint();
916 }
917 {
918 close__systemZio_217(f);
919 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status != 0) nimLeaveFinally();
920 }
921 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_7.status != 0) reraiseException();
922 }
923 goto LA1_;
924 LA4_: ;
925 {
926 tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T9_;
927 NimStringDesc* T10_;
928 T9_ = NIM_NIL;
929 T9_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
930 (*T9_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
931 (*T9_).Sup.Sup.name = "IOError";
932 T10_ = NIM_NIL;
933 T10_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
934 appendString(T10_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
935 appendString(T10_, filename);
936 asgnRef((void**) (&(*T9_).Sup.Sup.message), T10_);
937 asgnRef((void**) (&(*T9_).Sup.Sup.parent), ((Exception*) NIM_NIL));
938 raiseExceptionEx((Exception*)T9_, "IOError", "readFile", "io.nim", 853);
939 }
940 LA1_: ;
941 return result;
942 }
N_NIMCALL(NI,readChars__systemZio_156)943 N_LIB_PRIVATE N_NIMCALL(NI, readChars__systemZio_156)(FILE* f, NIM_CHAR* a, NI aLen_0) {
944 NI result;
945 result = (NI)0;
946 result = readBuffer__systemZio_144(f, ((void*) ((&a[((NI) 0)]))), ((NI) (aLen_0)));
947 return result;
948 }
N_NOINLINE(void,raiseEOF__systemZio_117)949 N_LIB_PRIVATE N_NOINLINE(void, raiseEOF__systemZio_117)(void) {
950 tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg* T1_;
951 NimStringDesc* T2_;
952 T1_ = NIM_NIL;
953 T1_ = (tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg*) newObj((&NTIrefeoferror__LEclZrWX2FQAodlapxGITw_), sizeof(tyObject_EOFError__KGSY1JdrNB7Xi8KDhXFhSg));
954 (*T1_).Sup.Sup.Sup.Sup.m_type = (&NTIeoferror__KGSY1JdrNB7Xi8KDhXFhSg_);
955 (*T1_).Sup.Sup.Sup.name = "EOFError";
956 T2_ = NIM_NIL;
957 T2_ = (*T1_).Sup.Sup.Sup.message; (*T1_).Sup.Sup.Sup.message = copyStringRC1(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_8));
958 if (T2_) nimGCunrefNoCycle(T2_);
959 asgnRef((void**) (&(*T1_).Sup.Sup.Sup.parent), ((Exception*) NIM_NIL));
960 raiseExceptionEx((Exception*)T1_, "EOFError", "raiseEOF", "io.nim", 142);
961 }
N_NIMCALL(NimStringDesc *,readLine__systemZio_271)962 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, readLine__systemZio_271)(FILE* f) {
963 NimStringDesc* result;
964 result = NIM_NIL;
965 result = rawNewString(((NI) 80));
966 {
967 NIM_BOOL T3_;
968 T3_ = (NIM_BOOL)0;
969 T3_ = readLine__systemZio_238(f, (&result));
970 if (!!(T3_)) goto LA4_;
971 raiseEOF__systemZio_117();
972 }
973 LA4_: ;
974 return result;
975 }
N_NIMCALL(void,writeFile__systemZio_474)976 N_LIB_PRIVATE N_NIMCALL(void, writeFile__systemZio_474)(NimStringDesc* filename, NimStringDesc* content) {
977 FILE* f;
978 f = ((FILE*) NIM_NIL);
979 {
980 NIM_BOOL T3_;
981 TSafePoint TM__MnCJ0VAmeZ9aTATUB39cx60Q_9;
982 T3_ = (NIM_BOOL)0;
983 T3_ = open__systemZio_389(&f, filename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 1), ((NI) -1));
984 if (!T3_) goto LA4_;
985 pushSafePoint(&TM__MnCJ0VAmeZ9aTATUB39cx60Q_9);
986 TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status = _setjmp(TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.context);
987 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status == 0) {
988 write__systemZio_205(f, content);
989 popSafePoint();
990 }
991 else {
992 popSafePoint();
993 }
994 {
995 close__systemZio_217(f);
996 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status != 0) nimLeaveFinally();
997 }
998 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_9.status != 0) reraiseException();
999 }
1000 goto LA1_;
1001 LA4_: ;
1002 {
1003 tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T9_;
1004 NimStringDesc* T10_;
1005 T9_ = NIM_NIL;
1006 T9_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
1007 (*T9_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
1008 (*T9_).Sup.Sup.name = "IOError";
1009 T10_ = NIM_NIL;
1010 T10_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
1011 appendString(T10_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
1012 appendString(T10_, filename);
1013 asgnRef((void**) (&(*T9_).Sup.Sup.message), T10_);
1014 asgnRef((void**) (&(*T9_).Sup.Sup.parent), ((Exception*) NIM_NIL));
1015 raiseExceptionEx((Exception*)T9_, "IOError", "writeFile", "io.nim", 866);
1016 }
1017 LA1_: ;
1018 }
N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ *,readLines__systemZio_492)1019 N_LIB_PRIVATE N_NIMCALL(tySequence__sM4lkSb7zS6F7OVMvW9cffQ*, readLines__systemZio_492)(NimStringDesc* filename, NI n) {
1020 tySequence__sM4lkSb7zS6F7OVMvW9cffQ* volatile result;
1021 FILE* f;
1022 result = NIM_NIL;
1023 f = ((FILE*) NIM_NIL);
1024 {
1025 NIM_BOOL T3_;
1026 TSafePoint TM__MnCJ0VAmeZ9aTATUB39cx60Q_10;
1027 T3_ = (NIM_BOOL)0;
1028 T3_ = open__systemZio_389(&f, filename, ((tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg) 0), ((NI) -1));
1029 if (!T3_) goto LA4_;
1030 pushSafePoint(&TM__MnCJ0VAmeZ9aTATUB39cx60Q_10);
1031 TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status = _setjmp(TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.context);
1032 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status == 0) {
1033 result = newSeq__systemZio_501(n);
1034 {
1035 NI i;
1036 NI colontmp_;
1037 NI res;
1038 i = (NI)0;
1039 colontmp_ = (NI)0;
1040 colontmp_ = (NI)(((NI) (n)) - ((NI) 1));
1041 res = ((NI) 0);
1042 {
1043 while (1) {
1044 if (!(res <= colontmp_)) goto LA8;
1045 i = res;
1046 {
1047 NIM_BOOL T11_;
1048 T11_ = (NIM_BOOL)0;
1049 T11_ = readLine__systemZio_238(f, (&result->data[i]));
1050 if (!!(T11_)) goto LA12_;
1051 raiseEOF__systemZio_117();
1052 }
1053 LA12_: ;
1054 res += ((NI) 1);
1055 } LA8: ;
1056 }
1057 }
1058 popSafePoint();
1059 }
1060 else {
1061 popSafePoint();
1062 }
1063 {
1064 close__systemZio_217(f);
1065 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status != 0) nimLeaveFinally();
1066 }
1067 if (TM__MnCJ0VAmeZ9aTATUB39cx60Q_10.status != 0) reraiseException();
1068 }
1069 goto LA1_;
1070 LA4_: ;
1071 {
1072 tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw* T17_;
1073 NimStringDesc* T18_;
1074 T17_ = NIM_NIL;
1075 T17_ = (tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw*) newObj((&NTIrefioerror__HMIVdYjdZYWskTmTQVo5BQ_), sizeof(tyObject_IOError__iLZrPn9anoh9ad1MmO0RczFw));
1076 (*T17_).Sup.Sup.Sup.m_type = (&NTIioerror__iLZrPn9anoh9ad1MmO0RczFw_);
1077 (*T17_).Sup.Sup.name = "IOError";
1078 T18_ = NIM_NIL;
1079 T18_ = rawNewString((filename ? filename->Sup.len : 0) + 13);
1080 appendString(T18_, ((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_6));
1081 appendString(T18_, filename);
1082 asgnRef((void**) (&(*T17_).Sup.Sup.message), T18_);
1083 asgnRef((void**) (&(*T17_).Sup.Sup.parent), ((Exception*) NIM_NIL));
1084 raiseExceptionEx((Exception*)T17_, "IOError", "readLines", "io.nim", 896);
1085 }
1086 LA1_: ;
1087 return result;
1088 }
N_NIMCALL(NIM_BOOL,setInheritable__systemZio_234)1089 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, setInheritable__systemZio_234)(int f, NIM_BOOL inheritable) {
1090 NIM_BOOL result;
1091 int T1_;
1092 int T7_;
1093 result = (NIM_BOOL)0;
1094 T1_ = (int)0;
1095 {
1096 if (!inheritable) goto LA4_;
1097 T1_ = FIONCLEX;
1098 }
1099 goto LA2_;
1100 LA4_: ;
1101 {
1102 T1_ = FIOCLEX;
1103 }
1104 LA2_: ;
1105 T7_ = (int)0;
1106 T7_ = ioctl(f, T1_);
1107 result = !((T7_ == ((NI32) -1)));
1108 return result;
1109 }
N_NIMCALL(NIM_BOOL,open__systemZio_420)1110 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, open__systemZio_420)(FILE** f, int filehandle, tyEnum_FileMode__ZJfK20XeZ9bv2j1pZjw9aswg mode) {
1111 NIM_BOOL result;
1112 int oshandle;
1113 { result = (NIM_BOOL)0;
1114 oshandle = filehandle;
1115 {
1116 NIM_BOOL T3_;
1117 T3_ = (NIM_BOOL)0;
1118 T3_ = setInheritable__systemZio_234(oshandle, NIM_FALSE);
1119 if (!!(T3_)) goto LA4_;
1120 result = NIM_FALSE;
1121 goto BeforeRet_;
1122 }
1123 LA4_: ;
1124 (*f) = fdopen(filehandle, FormatOpen__systemZio_371[(mode)- 0]);
1125 result = !(((*f) == ((FILE*) NIM_NIL)));
1126 }BeforeRet_: ;
1127 return result;
1128 }
N_NIMCALL(void,setFilePos__systemZio_436)1129 N_LIB_PRIVATE N_NIMCALL(void, setFilePos__systemZio_436)(FILE* f, NI64 pos, tyEnum_FileSeekPos__I9aQjuvWxs8BspGbxwsngWw relativeTo) {
1130 {
1131 int T3_;
1132 T3_ = (int)0;
1133 T3_ = fseeko(f, pos, ((int) (relativeTo)));
1134 if (!!((T3_ == ((NI32) 0)))) goto LA4_;
1135 raiseEIO__systemZio_96(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_11));
1136 }
1137 LA4_: ;
1138 }
N_NIMCALL(NI64,getFilePos__systemZio_449)1139 N_LIB_PRIVATE N_NIMCALL(NI64, getFilePos__systemZio_449)(FILE* f) {
1140 NI64 result;
1141 result = (NI64)0;
1142 result = ftello(f);
1143 {
1144 if (!(result < IL64(0))) goto LA3_;
1145 raiseEIO__systemZio_96(((NimStringDesc*) &TM__MnCJ0VAmeZ9aTATUB39cx60Q_12));
1146 }
1147 LA3_: ;
1148 return result;
1149 }
N_NIMCALL(void,write__systemZio_304)1150 N_LIB_PRIVATE N_NIMCALL(void, write__systemZio_304)(FILE* f, NimStringDesc** a, NI aLen_0) {
1151 {
1152 NimStringDesc** x;
1153 NI i;
1154 x = (NimStringDesc**)0;
1155 i = ((NI) 0);
1156 {
1157 while (1) {
1158 if (!(i < aLen_0)) goto LA3;
1159 x = (&a[i]);
1160 write__systemZio_205(f, (*x));
1161 i += ((NI) 1);
1162 } LA3: ;
1163 }
1164 }
1165 }
N_NIMCALL(void,stdlib_ioDatInit000)1166 N_LIB_PRIVATE N_NIMCALL(void, stdlib_ioDatInit000)(void) {
1167 static TNimNode TM__MnCJ0VAmeZ9aTATUB39cx60Q_0[1];
1168 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.size = sizeof(void*);
1169 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.align = NIM_ALIGNOF(void*);
1170 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.kind = 18;
1171 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.base = 0;
1172 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.flags = 1;
1173 NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_.node = &TM__MnCJ0VAmeZ9aTATUB39cx60Q_0[0];
1174 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.size = sizeof(FILE*);
1175 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.align = NIM_ALIGNOF(FILE*);
1176 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.kind = 21;
1177 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.base = (&NTIcfile__MAWzaQJYFu3mlxj0Ppxhmw_);
1178 NTIfile__XBeRj4rw9bUuE7CB3DS1rgg_.flags = 3;
1179 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.size = sizeof(int);
1180 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.align = NIM_ALIGNOF(int);
1181 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.kind = 34;
1182 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.base = 0;
1183 NTIfilehandle__2gIj3gQlK3HZJjQaYCP6ZQ_.flags = 3;
1184 }
1185
1186