1 #include <URI/Scheme/File.d>
2 #include <__oo2c.h>
3 #include <setjmp.h>
4
URI_Scheme_File__Init(URI_Scheme_File__URI file,Object__String schemeId,URI__Authority authority,URI__Query query)5 void URI_Scheme_File__Init(URI_Scheme_File__URI file, Object__String schemeId, URI__Authority authority, URI__Query query) {
6 register OOC_INT64 i0,i1,i2,i3;
7
8 i0 = (OOC_INT64)query;
9 i1 = (OOC_INT64)authority;
10 i2 = (OOC_INT64)schemeId;
11 i3 = (OOC_INT64)file;
12 URI_Scheme_Hierarchical__Init((URI_Scheme_Hierarchical__Generic)i3, (Object__String)i2, (URI__Authority)i1, (URI__Query)i0);
13 return;
14 ;
15 }
16
URI_Scheme_File__New(Object__String schemeId,URI__Authority authority,URI__Query query)17 URI_Scheme_File__URI URI_Scheme_File__New(Object__String schemeId, URI__Authority authority, URI__Query query) {
18 register OOC_INT64 i0,i1,i2,i3;
19
20 i0 = (OOC_INT64)RT0__NewObject(_td_URI_Scheme_File__URI.baseTypes[0]);
21 i1 = (OOC_INT64)query;
22 i2 = (OOC_INT64)authority;
23 i3 = (OOC_INT64)schemeId;
24 URI_Scheme_File__Init((URI_Scheme_File__URI)i0, (Object__String)i3, (URI__Authority)i2, (URI__Query)i1);
25 return (URI_Scheme_File__URI)i0;
26 ;
27 }
28
URI_Scheme_File__URIDesc_NewAuthority(URI_Scheme_File__URI file)29 URI__Authority URI_Scheme_File__URIDesc_NewAuthority(URI_Scheme_File__URI file) {
30 register OOC_INT64 i0;
31
32 i0 = (OOC_INT64)URI_Authority_ServerBased__New((Object__String)(OOC_INT64)0, (Object__String)((OOC_INT64)_c0), (-1), (-1));
33 return (URI__Authority)i0;
34 ;
35 }
36
URI_Scheme_File__URIDesc_AuthorityMandatory(URI_Scheme_File__URI file)37 OOC_CHAR8 URI_Scheme_File__URIDesc_AuthorityMandatory(URI_Scheme_File__URI file) {
38
39 return 1u;
40 ;
41 }
42
URI_Scheme_File__URIDesc_NewQuery(URI_Scheme_File__URI file)43 URI__Query URI_Scheme_File__URIDesc_NewQuery(URI_Scheme_File__URI file) {
44
45 return (URI__Query)(OOC_INT64)0;
46 ;
47 }
48
URI_Scheme_File__URIDesc_Clone(URI_Scheme_File__URI file)49 URI_Scheme_File__URI URI_Scheme_File__URIDesc_Clone(URI_Scheme_File__URI file) {
50 register OOC_INT64 i0,i1;
51 URI_Scheme_File__URI copy;
52
53 i0 = (OOC_INT64)RT0__NewObject(_td_URI_Scheme_File__URI.baseTypes[0]);
54 copy = (URI_Scheme_File__URI)i0;
55 i1 = (OOC_INT64)file;
56 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 2207)))), URI_Scheme_Hierarchical__GenericDesc_Copy)),URI_Scheme_Hierarchical__GenericDesc_Copy)((URI_Scheme_Hierarchical__Generic)i1, (URI__URI)i0);
57 return (URI_Scheme_File__URI)i0;
58 ;
59 }
60
URI_Scheme_File__URIDesc_GetPath(URI_Scheme_File__URI file)61 Object__String8 URI_Scheme_File__URIDesc_GetPath(URI_Scheme_File__URI file) {
62 register OOC_INT64 i0,i1,i2,i3,i4;
63 ADT_StringBuffer__StringBuffer sb;
64 URI_Scheme_Hierarchical__Segment segm;
65 Object__String str;
66
67 i0 = (OOC_INT64)ADT_StringBuffer__New((Object__String)((OOC_INT64)_c1));
68 sb = (ADT_StringBuffer__StringBuffer)i0;
69 i1 = (OOC_INT64)file;
70 i2 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 2586))+24);
71 segm = (URI_Scheme_Hierarchical__Segment)i2;
72 i3 = i2!=(OOC_INT64)0;
73 if (!i3) goto l15;
74 i3 = (OOC_INT64)_c2;
75
76 l3_loop:
77 i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i1, 2645))+24);
78 i4 = i2!=i4;
79 if (i4) goto l6;
80 i4 = *(OOC_UINT8*)((_check_pointer(i1, 2664))+32);
81
82 goto l8;
83 l6:
84 i4=1u;
85 l8:
86 if (!i4) goto l10;
87 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 2694)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i0, (Object__Object)i3);
88 l10:
89 i4 = (OOC_INT64)*(OOC_INT64*)((_check_pointer(i2, 2739))+8);
90 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 2727)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i0, (Object__Object)i4);
91 i2 = (OOC_INT64)*(OOC_INT64*)(_check_pointer(i2, 2767));
92 segm = (URI_Scheme_Hierarchical__Segment)i2;
93 i4 = i2!=(OOC_INT64)0;
94 if (i4) goto l3_loop;
95 l15:
96 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 2822)))), ADT_StringBuffer__StringBufferDesc_ToString)),ADT_StringBuffer__StringBufferDesc_ToString)((ADT_StringBuffer__StringBuffer)i0);
97 i0 = (OOC_INT64)OS_HostPath__Denormalize((Object__String)i0);
98 str = (Object__String)i0;
99 return (Object__String8)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 2858)))), &_td_Object__String8Desc, 2858));
100 ;
101 }
102
URI_Scheme_File__URIDesc_GetChannel(URI_Scheme_File__URI file,OOC_INT8 mode)103 IO__ByteChannel URI_Scheme_File__URIDesc_GetChannel(URI_Scheme_File__URI file, OOC_INT8 mode) {
104 register OOC_INT64 i0,i1;
105 Object__String s;
106
107 i0 = (OOC_INT64)file;
108 i0 = (OOC_INT64)URI_Scheme_File__URIDesc_GetPath((URI_Scheme_File__URI)i0);
109 s = (Object__String)i0;
110 i1 = mode;
111 switch (i1) {
112 case 0:
113 i0 = (OOC_INT64)IO_FileChannel__Open((Object__String)i0, 23u);
114 return (IO__ByteChannel)i0;
115 goto l6;
116 case 1:
117 i0 = (OOC_INT64)IO_FileChannel__Open((Object__String)i0, 67u);
118 return (IO__ByteChannel)i0;
119 goto l6;
120 case 2:
121 i0 = (OOC_INT64)IO_FileChannel__Open((Object__String)i0, 1u);
122 return (IO__ByteChannel)i0;
123 goto l6;
124 default:
125 _failed_case(i1, 3034);
126 goto l6;
127 }
128 l6:
129 _failed_function(2906); return 0;
130 ;
131 }
132
URI_Scheme_File__NewPrototype(void)133 URI_Scheme_File__URI URI_Scheme_File__NewPrototype(void) {
134 register OOC_INT64 i0;
135
136 i0 = (OOC_INT64)URI_Scheme_File__New((Object__String)((OOC_INT64)_c3), (URI__Authority)(OOC_INT64)0, (URI__Query)(OOC_INT64)0);
137 return (URI_Scheme_File__URI)i0;
138 ;
139 }
140
URI_Scheme_File__GetCwd(void)141 URI_Scheme_File__URI URI_Scheme_File__GetCwd(void) {
142 register OOC_INT64 i0,i1;
143 volatile Object__String cwd;
144 volatile ADT_StringBuffer__StringBuffer uriString;
145 volatile Object__String str;
146 volatile URI__URI uri;
147 jmp_buf _target0, _target1;
148 Exception__Context _context0, _context1;
149
150 {
151 Exception__PushContext(&_context0, &_target0);
152 if (!setjmp(_target0)) goto l7;
153 Exception__PopContext(1);
154 i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG(((OOC_INT64)Exception__Current()))), &_td_IO__ErrorDesc);
155 if (i0) goto l5;
156 Exception__ActivateContext();
157 goto l6;
158 l5:
159 return (URI_Scheme_File__URI)(OOC_INT64)0;
160 l6:
161 Exception__Clear();
162 goto l19;
163 l7:
164 i0 = (OOC_INT64)OS_ProcessParameters__GetCwd();
165 i0 = (OOC_INT64)OS_HostPath__Normalize((Object__String)i0);
166 cwd = (Object__String)i0;
167 i1 = (OOC_INT64)ADT_StringBuffer__New((Object__String)((OOC_INT64)_c4));
168 uriString = (ADT_StringBuffer__StringBuffer)i1;
169 URI_String__AppendEscaped((Object__String)i0, (OOC_CHAR8*)":@&=+$,/", 9, (ADT_StringBuffer__StringBuffer)i1);
170 i0 = *(OOC_INT32*)((_check_pointer(i1, 4260))+4);
171 i0 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 4243)))), ADT_StringBuffer__StringBufferDesc_CharAt)),ADT_StringBuffer__StringBufferDesc_CharAt)((ADT_StringBuffer__StringBuffer)i1, (i0-1));
172 i0 = i0!=47u;
173 if (!i0) goto l10;
174 OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 4300)))), ADT_StringBuffer__StringBufferDesc_Append)),ADT_StringBuffer__StringBufferDesc_Append)((ADT_StringBuffer__StringBuffer)i1, (Object__Object)((OOC_INT64)_c5));
175 l10:
176 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 4348)))), ADT_StringBuffer__StringBufferDesc_ToString)),ADT_StringBuffer__StringBufferDesc_ToString)((ADT_StringBuffer__StringBuffer)i1);
177 str = (Object__String)i0;
178 {
179 Exception__PushContext(&_context1, &_target1);
180 if (!setjmp(_target1)) goto l17;
181 Exception__PopContext(1);
182 i0 = OOC_TYPE_TEST(((OOC_INT64)OOC_TYPE_TAG(((OOC_INT64)Exception__Current()))), &_td_Exception__ParseErrorDesc);
183 if (i0) goto l15;
184 Exception__ActivateContext();
185 goto l16;
186 l15:
187 _assert(0u, 127, 4494);
188 l16:
189 Exception__Clear();
190 goto l18;
191 l17:
192 i0 = (OOC_INT64)URI_Parser__NewURI((Object__String8)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 4411)))), &_td_Object__String8Desc, 4411)), (URI__HierarchicalURI)(OOC_INT64)0);
193 uri = (URI__URI)i0;
194 Exception__PopContext(2);
195 return (URI_Scheme_File__URI)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 4446)))), &_td_URI_Scheme_File__URIDesc, 4446));
196 Exception__PopContext(1);
197 l18:;
198 }
199 Exception__PopContext(1);
200 l19:;
201 }
202 _failed_function(3633); return 0;
203 ;
204 }
205
URI_Scheme_File__ToURI(const OOC_CHAR8 filePath__ref[],volatile OOC_LEN filePath_0d)206 URI_Scheme_File__URI URI_Scheme_File__ToURI(const OOC_CHAR8 filePath__ref[], volatile OOC_LEN filePath_0d) {
207 register OOC_INT64 i0,i1;
208 OOC_ALLOCATE_VPAR(filePath,OOC_CHAR8 ,filePath_0d)
209 volatile Object__String normPath;
210 volatile ADT_StringBuffer__StringBuffer uriString;
211 volatile Object__String str;
212 volatile URI__URI uri;
213 jmp_buf _target0;
214 Exception__Context _context0;
215
216 OOC_INITIALIZE_VPAR(filePath__ref,filePath,OOC_CHAR8 ,filePath_0d)
217 {
218 Exception__PushContext(&_context0, &_target0);
219 if (!setjmp(_target0)) goto l11;
220 Exception__PopContext(1);
221 i0 = (OOC_INT64)OOC_TYPE_TAG(((OOC_INT64)Exception__Current()));
222 i1 = OOC_TYPE_TEST(i0, &_td_IO__ErrorDesc);
223 if (i1) goto l9;
224 i0 = OOC_TYPE_TEST(i0, &_td_Exception__ParseErrorDesc);
225 if (i0) goto l7;
226 Exception__ActivateContext();
227 goto l10;
228 l7:
229 return (URI_Scheme_File__URI)(OOC_INT64)0;
230 goto l10;
231 l9:
232 return (URI_Scheme_File__URI)(OOC_INT64)0;
233 l10:
234 Exception__Clear();
235 goto l16;
236 l11:
237 i0 = (OOC_INT64)Object__NewLatin1((void*)(OOC_INT64)filePath, filePath_0d);
238 i0 = (OOC_INT64)OS_HostPath__Normalize((Object__String)i0);
239 normPath = (Object__String)i0;
240 i1 = OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 4965)))), Object__StringDesc_CharAt)),Object__StringDesc_CharAt)((Object__String)i0, 0);
241 i1 = i1==47u;
242 if (i1) goto l14;
243 i1 = (OOC_INT64)ADT_StringBuffer__New((Object__String)((OOC_INT64)_c6));
244 uriString = (ADT_StringBuffer__StringBuffer)i1;
245 URI_String__AppendEscaped((Object__String)i0, (OOC_CHAR8*)"@&=+$,/", 8, (ADT_StringBuffer__StringBuffer)i1);
246 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 5374)))), ADT_StringBuffer__StringBufferDesc_ToString)),ADT_StringBuffer__StringBufferDesc_ToString)((ADT_StringBuffer__StringBuffer)i1);
247 str = (Object__String)i0;
248 i1 = (OOC_INT64)URI_Scheme_File__GetCwd();
249 i0 = (OOC_INT64)URI_Parser__NewURI((Object__String8)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 5428)))), &_td_Object__String8Desc, 5428)), (URI__HierarchicalURI)i1);
250 uri = (URI__URI)i0;
251
252 goto l15;
253 l14:
254 i1 = (OOC_INT64)ADT_StringBuffer__New((Object__String)((OOC_INT64)_c7));
255 uriString = (ADT_StringBuffer__StringBuffer)i1;
256 URI_String__AppendEscaped((Object__String)i0, (OOC_CHAR8*)":@&=+$,/", 9, (ADT_StringBuffer__StringBuffer)i1);
257 i0 = (OOC_INT64)OOC_TBCALL(((OOC_INT64)OOC_TBPROC_ADR(((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i1, 5145)))), ADT_StringBuffer__StringBufferDesc_ToString)),ADT_StringBuffer__StringBufferDesc_ToString)((ADT_StringBuffer__StringBuffer)i1);
258 str = (Object__String)i0;
259 i0 = (OOC_INT64)URI_Parser__NewURI((Object__String8)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 5199)))), &_td_Object__String8Desc, 5199)), (URI__HierarchicalURI)(OOC_INT64)0);
260 uri = (URI__URI)i0;
261
262 l15:
263 Exception__PopContext(1);
264 return (URI_Scheme_File__URI)(_type_guard(i0, ((OOC_INT64)OOC_TYPE_TAG((_check_pointer(i0, 5476)))), &_td_URI_Scheme_File__URIDesc, 5476));
265 Exception__PopContext(1);
266 l16:;
267 }
268 _failed_function(4592); return 0;
269 ;
270 }
271
OOC_URI_Scheme_File_init(void)272 void OOC_URI_Scheme_File_init(void) {
273 _c0 = Object__NewLatin1Region((OOC_CHAR8*)"", 1, 0, 0);
274 _c1 = Object__NewLatin1Region((OOC_CHAR8*)"", 1, 0, 0);
275 _c2 = Object__NewLatin1Char(47u);
276 _c3 = Object__NewLatin1Region((OOC_CHAR8*)"file", 5, 0, 4);
277 _c4 = Object__NewLatin1Region((OOC_CHAR8*)"file://", 8, 0, 7);
278 _c5 = Object__NewLatin1Char(47u);
279 _c6 = Object__NewLatin1Region((OOC_CHAR8*)"", 1, 0, 0);
280 _c7 = Object__NewLatin1Region((OOC_CHAR8*)"file://", 8, 0, 7);
281
282 return;
283 ;
284 }
285
OOC_URI_Scheme_File_destroy(void)286 void OOC_URI_Scheme_File_destroy(void) {
287 }
288
289 /* --- */
290