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 struct TGenericSeq {
24 NI len;
25 NI reserved;
26 };
27 struct NimStringDesc {
28   TGenericSeq Sup;
29 NIM_CHAR data[SEQ_DECL_SIZE];
30 };
31 N_NIMCALL(NimStringDesc*, rawNewString)(NI cap);
32 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, copyString)(NimStringDesc* src);
33 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, addChar)(NimStringDesc* s, NIM_CHAR c);
34 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src);
35 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size);
36 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size);
37 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, resizeString)(NimStringDesc* dest, NI addlen);
38 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, toHex__pureZstrutils_1792)(NI x, NI len);
39 STRING_LITERAL(TM__VzbRQH9cb1xm1tSKH4PwBSw_2, "+", 1);
40 STRING_LITERAL(TM__VzbRQH9cb1xm1tSKH4PwBSw_3, "%20", 3);
N_INLINE(void,nimCopyMem)41 static N_INLINE(void, nimCopyMem)(void* dest, void* source, NI size) {
42 	void* T1_;
43 	T1_ = (void*)0;
44 	T1_ = memcpy(dest, source, ((size_t) (size)));
45 }
N_INLINE(void,copyMem__system_1727)46 static N_INLINE(void, copyMem__system_1727)(void* dest, void* source, NI size) {
47 	nimCopyMem(dest, source, size);
48 }
N_INLINE(void,appendString)49 static N_INLINE(void, appendString)(NimStringDesc* dest, NimStringDesc* src) {
50 	{
51 		if (!!((src == ((NimStringDesc*) NIM_NIL)))) goto LA3_;
52 		copyMem__system_1727(((void*) ((&(*dest).data[(*dest).Sup.len]))), ((void*) ((*src).data)), ((NI) ((NI)((*src).Sup.len + ((NI) 1)))));
53 		(*dest).Sup.len += (*src).Sup.len;
54 	}
55 	LA3_: ;
56 }
N_NIMCALL(NimStringDesc *,encodeUrl__pureZuri_40)57 N_LIB_PRIVATE N_NIMCALL(NimStringDesc*, encodeUrl__pureZuri_40)(NimStringDesc* s, NIM_BOOL usePlus) {
58 	NimStringDesc* result;
59 	NimStringDesc* fromSpace;
60 	result = NIM_NIL;
61 	result = rawNewString(((NI) ((NI)((s ? s->Sup.len : 0) + (NI)((NI32)((s ? s->Sup.len : 0)) >> (NU32)(((NI) 2)))))));
62 	{
63 		if (!usePlus) goto LA3_;
64 		fromSpace = copyString(((NimStringDesc*) &TM__VzbRQH9cb1xm1tSKH4PwBSw_2));
65 	}
66 	goto LA1_;
67 	LA3_: ;
68 	{
69 		fromSpace = copyString(((NimStringDesc*) &TM__VzbRQH9cb1xm1tSKH4PwBSw_3));
70 	}
71 	LA1_: ;
72 	{
73 		NIM_CHAR c;
74 		NI i;
75 		NI L;
76 		c = (NIM_CHAR)0;
77 		i = ((NI) 0);
78 		L = (s ? s->Sup.len : 0);
79 		{
80 			while (1) {
81 				if (!(i < L)) goto LA8;
82 				c = s->data[i];
83 				switch (((NU8)(c))) {
84 				case 97 ... 122:
85 				case 65 ... 90:
86 				case 48 ... 57:
87 				case 45:
88 				case 46:
89 				case 95:
90 				case 126:
91 				{
92 					result = addChar(result, c);
93 				}
94 				break;
95 				case 32:
96 				{
97 					result = resizeString(result, (fromSpace ? fromSpace->Sup.len : 0) + 0);
98 appendString(result, fromSpace);
99 				}
100 				break;
101 				default:
102 				{
103 					NimStringDesc* T12_;
104 					result = addChar(result, 37);
105 					T12_ = NIM_NIL;
106 					T12_ = toHex__pureZstrutils_1792(((NU8)(c)), ((NI) 2));
107 					result = resizeString(result, (T12_ ? T12_->Sup.len : 0) + 0);
108 appendString(result, T12_);
109 				}
110 				break;
111 				}
112 				i += ((NI) 1);
113 			} LA8: ;
114 		}
115 	}
116 	return result;
117 }
118