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