1 /* Generated by Nim Compiler v1.6.2 */
2 #define NIM_INTBITS 64
3 #define NIM_EmulateOverflowChecks
4 
5 #include "nimbase.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 tyTuple__7q7q3E6Oj24ZNVJb9aonhAg tyTuple__7q7q3E6Oj24ZNVJb9aonhAg;
25 struct TGenericSeq {
26 NI len;
27 NI reserved;
28 };
29 struct NimStringDesc {
30   TGenericSeq Sup;
31 NIM_CHAR data[SEQ_DECL_SIZE];
32 };
33 struct tyTuple__7q7q3E6Oj24ZNVJb9aonhAg {
34 NimStringDesc* Field0;
35 NimStringDesc* Field1;
36 NimStringDesc* Field2;
37 };
38 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosrelativePath)(NimStringDesc* path, NimStringDesc* base, NIM_CHAR sep);
39 static N_INLINE(NIM_BOOL, isEmpty__pathutils_93)(NimStringDesc* x);
40 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void);
41 N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
42 N_LIB_PRIVATE N_NIMCALL(void, addNormalizePath__pureZpathnorm_71)(NimStringDesc* x, NimStringDesc** result, NI* state, NIM_CHAR dirSep);
43 N_LIB_PRIVATE N_NIMCALL(NIM_BOOL, nosisAbsolute)(NimStringDesc* path);
44 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
45 static N_INLINE(NimStringDesc*, slash___pureZos_121)(NimStringDesc* head, NimStringDesc* tail);
46 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, nosjoinPath)(NimStringDesc* head, NimStringDesc* tail);
47 N_LIB_PRIVATE N_NIMCALL(void, nossplitFile)(NimStringDesc* path, tyTuple__7q7q3E6Oj24ZNVJb9aonhAg* Result);
48 static N_INLINE(void, nimZeroMem)(void* p, NI size);
49 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size);
50 N_LIB_PRIVATE N_NIMCALL(void, unsureAsgnRef)(void** dest, void* src);
51 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, slash___pathutils_89)(NimStringDesc* base, NimStringDesc* f);
N_NIMCALL(NimStringDesc *,relativeTo__pathutils_132)52 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, relativeTo__pathutils_132)(NimStringDesc* fullPath, NimStringDesc* baseFilename, NIM_CHAR sep) {
53 	NimStringDesc* result;
54 	result = NIM_NIL;
55 	result = nosrelativePath(fullPath, baseFilename, sep);
56 	return result;
57 }
N_INLINE(NIM_BOOL,isEmpty__pathutils_93)58 static N_INLINE(NIM_BOOL, isEmpty__pathutils_93)(NimStringDesc* x) {
59 	NIM_BOOL result;
60 	result = (NIM_BOOL)0;
61 	result = ((x ? x->Sup.len : 0) == ((NI) 0));
62 	return result;
63 }
N_NIMCALL(NimStringDesc *,slash___pathutils_111)64 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, slash___pathutils_111)(NimStringDesc* base, NimStringDesc* f) {
65 	NimStringDesc* result;
66 	NimStringDesc* base_2;
67 	NI state;
68 	result = NIM_NIL;
69 	{
70 		NIM_BOOL T3_;
71 		T3_ = (NIM_BOOL)0;
72 		T3_ = isEmpty__pathutils_93(base);
73 		if (!T3_) goto LA4_;
74 		base_2 = nosgetCurrentDir();
75 	}
76 	goto LA1_;
77 	LA4_: ;
78 	{
79 		base_2 = base;
80 	}
81 	LA1_: ;
82 	result = rawNewString(((NI) ((NI)((base_2 ? base_2->Sup.len : 0) + (f ? f->Sup.len : 0)))));
83 	state = ((NI) 0);
84 	addNormalizePath__pureZpathnorm_71(base_2, (&result), (&state), 47);
85 	addNormalizePath__pureZpathnorm_71(f, (&result), (&state), 47);
86 	return result;
87 }
N_INLINE(NimStringDesc *,slash___pureZos_121)88 static N_INLINE(NimStringDesc*, slash___pureZos_121)(NimStringDesc* head, NimStringDesc* tail) {
89 	NimStringDesc* result;
90 	result = NIM_NIL;
91 	result = nosjoinPath(head, tail);
92 	return result;
93 }
N_NIMCALL(NimStringDesc *,toAbsoluteDir__pathutils_71)94 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toAbsoluteDir__pathutils_71)(NimStringDesc* path) {
95 	NimStringDesc* result;
96 	result = NIM_NIL;
97 	{
98 		NIM_BOOL T3_;
99 		T3_ = (NIM_BOOL)0;
100 		T3_ = nosisAbsolute(path);
101 		if (!T3_) goto LA4_;
102 		result = copyString(path);
103 	}
104 	goto LA1_;
105 	LA4_: ;
106 	{
107 		NimStringDesc* T7_;
108 		T7_ = NIM_NIL;
109 		T7_ = nosgetCurrentDir();
110 		result = slash___pureZos_121(T7_, path);
111 	}
112 	LA1_: ;
113 	return result;
114 }
N_NIMCALL(NimStringDesc *,slash___pathutils_89)115 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, slash___pathutils_89)(NimStringDesc* base, NimStringDesc* f) {
116 	NimStringDesc* result;
117 	NimStringDesc* base_2;
118 	NI state;
119 	result = NIM_NIL;
120 	{
121 		NIM_BOOL T3_;
122 		T3_ = (NIM_BOOL)0;
123 		T3_ = isEmpty__pathutils_93(base);
124 		if (!T3_) goto LA4_;
125 		base_2 = nosgetCurrentDir();
126 	}
127 	goto LA1_;
128 	LA4_: ;
129 	{
130 		base_2 = base;
131 	}
132 	LA1_: ;
133 	result = rawNewString(((NI) ((NI)((base_2 ? base_2->Sup.len : 0) + (f ? f->Sup.len : 0)))));
134 	state = ((NI) 0);
135 	addNormalizePath__pureZpathnorm_71(base_2, (&result), (&state), 47);
136 	addNormalizePath__pureZpathnorm_71(f, (&result), (&state), 47);
137 	return result;
138 }
N_INLINE(void,nimSetMem__systemZmemory_7)139 static N_INLINE(void, nimSetMem__systemZmemory_7)(void* a, int v, NI size) {
140 	void* T1_;
141 	T1_ = (void*)0;
142 	T1_ = memset(a, v, ((size_t) (size)));
143 }
N_INLINE(void,nimZeroMem)144 static N_INLINE(void, nimZeroMem)(void* p, NI size) {
145 	nimSetMem__systemZmemory_7(p, ((int) 0), size);
146 }
N_NIMCALL(void,splitFile__pathutils_26)147 N_LIB_PRIVATE N_NIMCALL(void, splitFile__pathutils_26)(NimStringDesc* x, tyTuple__7q7q3E6Oj24ZNVJb9aonhAg* Result) {
148 	tyTuple__7q7q3E6Oj24ZNVJb9aonhAg T1_;
149 	NimStringDesc* a;
150 	NimStringDesc* b;
151 	NimStringDesc* c;
152 	NimStringDesc* colontmp_;
153 	NimStringDesc* colontmp__2;
154 	NimStringDesc* colontmp__3;
155 	nimZeroMem((void*)(&T1_), sizeof(tyTuple__7q7q3E6Oj24ZNVJb9aonhAg));
156 	nossplitFile(x, (&T1_));
157 	a = NIM_NIL;
158 	a = T1_.Field0;
159 	b = NIM_NIL;
160 	b = T1_.Field1;
161 	c = NIM_NIL;
162 	c = T1_.Field2;
163 	colontmp_ = copyString(a);
164 	colontmp__2 = copyString(b);
165 	colontmp__3 = copyString(c);
166 	unsureAsgnRef((void**) (&(*Result).Field0), copyString(colontmp_));
167 	unsureAsgnRef((void**) (&(*Result).Field1), copyString(colontmp__2));
168 	unsureAsgnRef((void**) (&(*Result).Field2), copyString(colontmp__3));
169 }
N_NIMCALL(NimStringDesc *,toAbsolute__pathutils_137)170 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toAbsolute__pathutils_137)(NimStringDesc* file, NimStringDesc* base) {
171 	NimStringDesc* result;
172 	result = NIM_NIL;
173 	{
174 		NIM_BOOL T3_;
175 		T3_ = (NIM_BOOL)0;
176 		T3_ = nosisAbsolute(file);
177 		if (!T3_) goto LA4_;
178 		result = copyString(file);
179 	}
180 	goto LA1_;
181 	LA4_: ;
182 	{
183 		result = slash___pathutils_89(base, file);
184 	}
185 	LA1_: ;
186 	return result;
187 }
188