1 /* C file produced by GAC */
2 #include "compiled.h"
3 #define FILE_CRC "77795076"
4
5 /* global variables used in handlers */
6 static GVar G_CALL__WITH__CATCH;
7 static Obj GF_CALL__WITH__CATCH;
8 static GVar G_range2;
9 static Obj GC_range2;
10 static GVar G_range3;
11 static Obj GC_range3;
12 static GVar G_runtest;
13 static GVar G_BreakOnError;
14 static GVar G_Display;
15 static Obj GF_Display;
16
17 /* record names used in handlers */
18
19 /* information for the functions */
20 static Obj NameFunc[5];
21 static Obj FileName;
22
23 /* handler for function 2 */
HdlrFunc2(Obj self,Obj a_a,Obj a_b)24 static Obj HdlrFunc2 (
25 Obj self,
26 Obj a_a,
27 Obj a_b )
28 {
29 Obj t_1 = 0;
30 Bag oldFrame;
31
32 /* allocate new stack frame */
33 SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
34
35 /* return [ a .. b ]; */
36 t_1 = Range2Check( a_a, a_b );
37 SWITCH_TO_OLD_FRAME(oldFrame);
38 return t_1;
39
40 /* return; */
41 SWITCH_TO_OLD_FRAME(oldFrame);
42 return 0;
43 }
44
45 /* handler for function 3 */
HdlrFunc3(Obj self,Obj a_a,Obj a_b,Obj a_c)46 static Obj HdlrFunc3 (
47 Obj self,
48 Obj a_a,
49 Obj a_b,
50 Obj a_c )
51 {
52 Obj t_1 = 0;
53 Bag oldFrame;
54
55 /* allocate new stack frame */
56 SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
57
58 /* return [ a, b .. c ]; */
59 t_1 = Range3Check( a_a, a_b, a_c );
60 SWITCH_TO_OLD_FRAME(oldFrame);
61 return t_1;
62
63 /* return; */
64 SWITCH_TO_OLD_FRAME(oldFrame);
65 return 0;
66 }
67
68 /* handler for function 4 */
HdlrFunc4(Obj self)69 static Obj HdlrFunc4 (
70 Obj self )
71 {
72 Obj t_1 = 0;
73 Obj t_2 = 0;
74 Obj t_3 = 0;
75 Obj t_4 = 0;
76 Obj t_5 = 0;
77 Bag oldFrame;
78
79 /* allocate new stack frame */
80 SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
81
82 /* BreakOnError := false; */
83 t_1 = False;
84 AssGVar( G_BreakOnError, t_1 );
85
86 /* CALL_WITH_CATCH( range2, [ 1, 2 ^ 80 ] ); */
87 t_1 = GF_CALL__WITH__CATCH;
88 t_2 = GC_range2;
89 CHECK_BOUND( t_2, "range2" );
90 t_3 = NEW_PLIST( T_PLIST, 2 );
91 SET_LEN_PLIST( t_3, 2 );
92 SET_ELM_PLIST( t_3, 1, INTOBJ_INT(1) );
93 t_4 = POW( INTOBJ_INT(2), INTOBJ_INT(80) );
94 SET_ELM_PLIST( t_3, 2, t_4 );
95 CHANGED_BAG( t_3 );
96 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
97 CALL_2ARGS( t_1, t_2, t_3 );
98 }
99 else {
100 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
101 }
102
103 /* CALL_WITH_CATCH( range2, [ - 2 ^ 80, 0 ] ); */
104 t_1 = GF_CALL__WITH__CATCH;
105 t_2 = GC_range2;
106 CHECK_BOUND( t_2, "range2" );
107 t_3 = NEW_PLIST( T_PLIST, 2 );
108 SET_LEN_PLIST( t_3, 2 );
109 t_5 = POW( INTOBJ_INT(2), INTOBJ_INT(80) );
110 C_AINV_FIA( t_4, t_5 )
111 SET_ELM_PLIST( t_3, 1, t_4 );
112 CHANGED_BAG( t_3 );
113 SET_ELM_PLIST( t_3, 2, INTOBJ_INT(0) );
114 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
115 CALL_2ARGS( t_1, t_2, t_3 );
116 }
117 else {
118 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
119 }
120
121 /* CALL_WITH_CATCH( range3, [ 1, 2, 2 ^ 80 ] ); */
122 t_1 = GF_CALL__WITH__CATCH;
123 t_2 = GC_range3;
124 CHECK_BOUND( t_2, "range3" );
125 t_3 = NEW_PLIST( T_PLIST, 3 );
126 SET_LEN_PLIST( t_3, 3 );
127 SET_ELM_PLIST( t_3, 1, INTOBJ_INT(1) );
128 SET_ELM_PLIST( t_3, 2, INTOBJ_INT(2) );
129 t_4 = POW( INTOBJ_INT(2), INTOBJ_INT(80) );
130 SET_ELM_PLIST( t_3, 3, t_4 );
131 CHANGED_BAG( t_3 );
132 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
133 CALL_2ARGS( t_1, t_2, t_3 );
134 }
135 else {
136 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
137 }
138
139 /* CALL_WITH_CATCH( range3, [ - 2 ^ 80, 0, 1 ] ); */
140 t_1 = GF_CALL__WITH__CATCH;
141 t_2 = GC_range3;
142 CHECK_BOUND( t_2, "range3" );
143 t_3 = NEW_PLIST( T_PLIST, 3 );
144 SET_LEN_PLIST( t_3, 3 );
145 t_5 = POW( INTOBJ_INT(2), INTOBJ_INT(80) );
146 C_AINV_FIA( t_4, t_5 )
147 SET_ELM_PLIST( t_3, 1, t_4 );
148 CHANGED_BAG( t_3 );
149 SET_ELM_PLIST( t_3, 2, INTOBJ_INT(0) );
150 SET_ELM_PLIST( t_3, 3, INTOBJ_INT(1) );
151 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
152 CALL_2ARGS( t_1, t_2, t_3 );
153 }
154 else {
155 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
156 }
157
158 /* CALL_WITH_CATCH( range3, [ 0, 2 ^ 80, 2 ^ 81 ] ); */
159 t_1 = GF_CALL__WITH__CATCH;
160 t_2 = GC_range3;
161 CHECK_BOUND( t_2, "range3" );
162 t_3 = NEW_PLIST( T_PLIST, 3 );
163 SET_LEN_PLIST( t_3, 3 );
164 SET_ELM_PLIST( t_3, 1, INTOBJ_INT(0) );
165 t_4 = POW( INTOBJ_INT(2), INTOBJ_INT(80) );
166 SET_ELM_PLIST( t_3, 2, t_4 );
167 CHANGED_BAG( t_3 );
168 t_4 = POW( INTOBJ_INT(2), INTOBJ_INT(81) );
169 SET_ELM_PLIST( t_3, 3, t_4 );
170 CHANGED_BAG( t_3 );
171 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
172 CALL_2ARGS( t_1, t_2, t_3 );
173 }
174 else {
175 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
176 }
177
178 /* Display( [ 1, 2 .. 2 ] ); */
179 t_1 = GF_Display;
180 t_2 = Range3Check( INTOBJ_INT(1), INTOBJ_INT(2), INTOBJ_INT(2) );
181 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
182 CALL_1ARGS( t_1, t_2 );
183 }
184 else {
185 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
186 }
187
188 /* CALL_WITH_CATCH( range3, [ 2, 2, 2 ] ); */
189 t_1 = GF_CALL__WITH__CATCH;
190 t_2 = GC_range3;
191 CHECK_BOUND( t_2, "range3" );
192 t_3 = NEW_PLIST( T_PLIST, 3 );
193 SET_LEN_PLIST( t_3, 3 );
194 SET_ELM_PLIST( t_3, 1, INTOBJ_INT(2) );
195 SET_ELM_PLIST( t_3, 2, INTOBJ_INT(2) );
196 SET_ELM_PLIST( t_3, 3, INTOBJ_INT(2) );
197 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
198 CALL_2ARGS( t_1, t_2, t_3 );
199 }
200 else {
201 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
202 }
203
204 /* Display( [ 2, 4 .. 6 ] ); */
205 t_1 = GF_Display;
206 t_2 = Range3Check( INTOBJ_INT(2), INTOBJ_INT(4), INTOBJ_INT(6) );
207 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
208 CALL_1ARGS( t_1, t_2 );
209 }
210 else {
211 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
212 }
213
214 /* CALL_WITH_CATCH( range3, [ 2, 4, 7 ] ); */
215 t_1 = GF_CALL__WITH__CATCH;
216 t_2 = GC_range3;
217 CHECK_BOUND( t_2, "range3" );
218 t_3 = NEW_PLIST( T_PLIST, 3 );
219 SET_LEN_PLIST( t_3, 3 );
220 SET_ELM_PLIST( t_3, 1, INTOBJ_INT(2) );
221 SET_ELM_PLIST( t_3, 2, INTOBJ_INT(4) );
222 SET_ELM_PLIST( t_3, 3, INTOBJ_INT(7) );
223 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
224 CALL_2ARGS( t_1, t_2, t_3 );
225 }
226 else {
227 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
228 }
229
230 /* Display( [ 2, 4 .. 2 ] ); */
231 t_1 = GF_Display;
232 t_2 = Range3Check( INTOBJ_INT(2), INTOBJ_INT(4), INTOBJ_INT(2) );
233 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
234 CALL_1ARGS( t_1, t_2 );
235 }
236 else {
237 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
238 }
239
240 /* Display( [ 2, 4 .. 0 ] ); */
241 t_1 = GF_Display;
242 t_2 = Range3Check( INTOBJ_INT(2), INTOBJ_INT(4), INTOBJ_INT(0) );
243 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
244 CALL_1ARGS( t_1, t_2 );
245 }
246 else {
247 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
248 }
249
250 /* CALL_WITH_CATCH( range3, [ 4, 2, 1 ] ); */
251 t_1 = GF_CALL__WITH__CATCH;
252 t_2 = GC_range3;
253 CHECK_BOUND( t_2, "range3" );
254 t_3 = NEW_PLIST( T_PLIST, 3 );
255 SET_LEN_PLIST( t_3, 3 );
256 SET_ELM_PLIST( t_3, 1, INTOBJ_INT(4) );
257 SET_ELM_PLIST( t_3, 2, INTOBJ_INT(2) );
258 SET_ELM_PLIST( t_3, 3, INTOBJ_INT(1) );
259 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
260 CALL_2ARGS( t_1, t_2, t_3 );
261 }
262 else {
263 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2, t_3 ) );
264 }
265
266 /* Display( [ 4, 2 .. 0 ] ); */
267 t_1 = GF_Display;
268 t_2 = Range3Check( INTOBJ_INT(4), INTOBJ_INT(2), INTOBJ_INT(0) );
269 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
270 CALL_1ARGS( t_1, t_2 );
271 }
272 else {
273 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
274 }
275
276 /* Display( [ 4, 2 .. 8 ] ); */
277 t_1 = GF_Display;
278 t_2 = Range3Check( INTOBJ_INT(4), INTOBJ_INT(2), INTOBJ_INT(8) );
279 if ( TNUM_OBJ( t_1 ) == T_FUNCTION ) {
280 CALL_1ARGS( t_1, t_2 );
281 }
282 else {
283 DoOperation2Args( CallFuncListOper, t_1, NewPlistFromArgs( t_2 ) );
284 }
285
286 /* return; */
287 SWITCH_TO_OLD_FRAME(oldFrame);
288 return 0;
289
290 /* return; */
291 SWITCH_TO_OLD_FRAME(oldFrame);
292 return 0;
293 }
294
295 /* handler for function 1 */
HdlrFunc1(Obj self)296 static Obj HdlrFunc1 (
297 Obj self )
298 {
299 Obj t_1 = 0;
300 Obj t_2 = 0;
301 Bag oldFrame;
302
303 /* allocate new stack frame */
304 SWITCH_TO_NEW_FRAME(self,0,0,oldFrame);
305
306 /* range2 := function ( a, b )
307 return [ a .. b ];
308 end; */
309 t_1 = NewFunction( NameFunc[2], 2, ArgStringToList("a,b"), HdlrFunc2 );
310 SET_ENVI_FUNC( t_1, STATE(CurrLVars) );
311 t_2 = NewFunctionBody();
312 SET_STARTLINE_BODY(t_2, 1);
313 SET_ENDLINE_BODY(t_2, 1);
314 SET_FILENAME_BODY(t_2, FileName);
315 SET_BODY_FUNC(t_1, t_2);
316 AssGVar( G_range2, t_1 );
317
318 /* range3 := function ( a, b, c )
319 return [ a, b .. c ];
320 end; */
321 t_1 = NewFunction( NameFunc[3], 3, ArgStringToList("a,b,c"), HdlrFunc3 );
322 SET_ENVI_FUNC( t_1, STATE(CurrLVars) );
323 t_2 = NewFunctionBody();
324 SET_STARTLINE_BODY(t_2, 2);
325 SET_ENDLINE_BODY(t_2, 2);
326 SET_FILENAME_BODY(t_2, FileName);
327 SET_BODY_FUNC(t_1, t_2);
328 AssGVar( G_range3, t_1 );
329
330 /* runtest := function ( )
331 BreakOnError := false;
332 CALL_WITH_CATCH( range2, [ 1, 2 ^ 80 ] );
333 CALL_WITH_CATCH( range2, [ - 2 ^ 80, 0 ] );
334 CALL_WITH_CATCH( range3, [ 1, 2, 2 ^ 80 ] );
335 CALL_WITH_CATCH( range3, [ - 2 ^ 80, 0, 1 ] );
336 CALL_WITH_CATCH( range3, [ 0, 2 ^ 80, 2 ^ 81 ] );
337 Display( [ 1, 2 .. 2 ] );
338 CALL_WITH_CATCH( range3, [ 2, 2, 2 ] );
339 Display( [ 2, 4 .. 6 ] );
340 CALL_WITH_CATCH( range3, [ 2, 4, 7 ] );
341 Display( [ 2, 4 .. 2 ] );
342 Display( [ 2, 4 .. 0 ] );
343 CALL_WITH_CATCH( range3, [ 4, 2, 1 ] );
344 Display( [ 4, 2 .. 0 ] );
345 Display( [ 4, 2 .. 8 ] );
346 return;
347 end; */
348 t_1 = NewFunction( NameFunc[4], 0, 0, HdlrFunc4 );
349 SET_ENVI_FUNC( t_1, STATE(CurrLVars) );
350 t_2 = NewFunctionBody();
351 SET_STARTLINE_BODY(t_2, 4);
352 SET_ENDLINE_BODY(t_2, 26);
353 SET_FILENAME_BODY(t_2, FileName);
354 SET_BODY_FUNC(t_1, t_2);
355 AssGVar( G_runtest, t_1 );
356
357 /* return; */
358 SWITCH_TO_OLD_FRAME(oldFrame);
359 return 0;
360
361 /* return; */
362 SWITCH_TO_OLD_FRAME(oldFrame);
363 return 0;
364 }
365
366 /* 'PostRestore' restore gvars, rnams, functions */
PostRestore(StructInitInfo * module)367 static Int PostRestore ( StructInitInfo * module )
368 {
369
370 /* global variables used in handlers */
371 G_CALL__WITH__CATCH = GVarName( "CALL_WITH_CATCH" );
372 G_range2 = GVarName( "range2" );
373 G_range3 = GVarName( "range3" );
374 G_runtest = GVarName( "runtest" );
375 G_BreakOnError = GVarName( "BreakOnError" );
376 G_Display = GVarName( "Display" );
377
378 /* record names used in handlers */
379
380 /* information for the functions */
381 NameFunc[1] = 0;
382 NameFunc[2] = 0;
383 NameFunc[3] = 0;
384 NameFunc[4] = 0;
385
386 /* return success */
387 return 0;
388
389 }
390
391
392 /* 'InitKernel' sets up data structures, fopies, copies, handlers */
InitKernel(StructInitInfo * module)393 static Int InitKernel ( StructInitInfo * module )
394 {
395
396 /* global variables used in handlers */
397 InitFopyGVar( "CALL_WITH_CATCH", &GF_CALL__WITH__CATCH );
398 InitCopyGVar( "range2", &GC_range2 );
399 InitCopyGVar( "range3", &GC_range3 );
400 InitFopyGVar( "Display", &GF_Display );
401
402 /* information for the functions */
403 InitGlobalBag( &FileName, "ranges.g:FileName("FILE_CRC")" );
404 InitHandlerFunc( HdlrFunc1, "ranges.g:HdlrFunc1("FILE_CRC")" );
405 InitGlobalBag( &(NameFunc[1]), "ranges.g:NameFunc[1]("FILE_CRC")" );
406 InitHandlerFunc( HdlrFunc2, "ranges.g:HdlrFunc2("FILE_CRC")" );
407 InitGlobalBag( &(NameFunc[2]), "ranges.g:NameFunc[2]("FILE_CRC")" );
408 InitHandlerFunc( HdlrFunc3, "ranges.g:HdlrFunc3("FILE_CRC")" );
409 InitGlobalBag( &(NameFunc[3]), "ranges.g:NameFunc[3]("FILE_CRC")" );
410 InitHandlerFunc( HdlrFunc4, "ranges.g:HdlrFunc4("FILE_CRC")" );
411 InitGlobalBag( &(NameFunc[4]), "ranges.g:NameFunc[4]("FILE_CRC")" );
412
413 /* return success */
414 return 0;
415
416 }
417
418 /* 'InitLibrary' sets up gvars, rnams, functions */
InitLibrary(StructInitInfo * module)419 static Int InitLibrary ( StructInitInfo * module )
420 {
421 Obj func1;
422 Obj body1;
423
424 /* Complete Copy/Fopy registration */
425 UpdateCopyFopyInfo();
426 FileName = MakeImmString( "ranges.g" );
427 PostRestore(module);
428
429 /* create all the functions defined in this module */
430 func1 = NewFunction(NameFunc[1],0,0,HdlrFunc1);
431 SET_ENVI_FUNC( func1, STATE(CurrLVars) );
432 body1 = NewFunctionBody();
433 SET_BODY_FUNC( func1, body1 );
434 CHANGED_BAG( func1 );
435 CALL_0ARGS( func1 );
436
437 /* return success */
438 return 0;
439
440 }
441
442 /* <name> returns the description of this module */
443 static StructInitInfo module = {
444 .type = MODULE_DYNAMIC,
445 .name = "ranges.g",
446 .crc = 77795076,
447 .initKernel = InitKernel,
448 .initLibrary = InitLibrary,
449 .postRestore = PostRestore,
450 };
451
Init__Dynamic(void)452 StructInitInfo * Init__Dynamic ( void )
453 {
454 return &module;
455 }
456
457 /* compiled code ends here */
458