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