/[gcl]/gcl/lsp/destructuring_bind.c
ViewVC logotype

Diff of /gcl/lsp/destructuring_bind.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by camm, Fri Jan 18 03:26:28 2002 UTC revision 1.2 by camm, Sun Feb 3 18:44:07 2002 UTC
# Line 0  Line 1 
1    
2    #include <cmpinclude.h>
3    #include "destructuring_bind.h"
4    init_destructuring_bind(){do_init(VV);}
5    /*      macro definition for MEMQ       */
6    
7    static L1()
8    {register object *base=vs_base;
9            register object *sup=base+VM1; VC1
10            vs_check;
11            vs_top=sup;
12            {object V1=base[0]->c.c_cdr;
13            base[2]= (V1->c.c_car);
14            V1=V1->c.c_cdr;
15            base[3]= (V1->c.c_car);}
16            base[4]= listA(4,VV[0],base[2],base[3],VV[1]);
17            vs_top=(vs_base=base+4)+1;
18            return;
19    }
20    /*      function definition for MAKE-CAXR       */
21    
22    static L2()
23    {register object *base=vs_base;
24            register object *sup=base+VM2; VC2
25            vs_check;
26            {object V2;
27            object V3;
28            V2=(base[0]);
29            V3=(base[1]);
30            vs_top=sup;
31    TTL:;
32            if(!(number_compare((V2),small_fixnum(4))<0)){
33            goto T2;}
34            base[2]= list(2,nth(fix((V2)),VV[2]),(V3));
35            vs_top=(vs_base=base+2)+1;
36            return;
37    T2:;
38            V2= number_minus((V2),small_fixnum(4));
39            V3= list(2,VV[3],(V3));
40            goto TTL;
41            }
42    }
43    /*      function definition for MAKE-CDXR       */
44    
45    static L3()
46    {register object *base=vs_base;
47            register object *sup=base+VM3; VC3
48            vs_check;
49            {register object V4;
50            object V5;
51            V4=(base[0]);
52            V5=(base[1]);
53            vs_top=sup;
54    TTL:;
55            if(!(number_compare(small_fixnum(0),(V4))==0)){
56            goto T8;}
57            base[2]= (V5);
58            vs_top=(vs_base=base+2)+1;
59            return;
60    T8:;
61            if(!(number_compare((V4),small_fixnum(5))<0)){
62            goto T11;}
63            base[2]= list(2,nth(fix((V4)),VV[4]),(V5));
64            vs_top=(vs_base=base+2)+1;
65            return;
66    T11:;
67            V4= number_minus((V4),small_fixnum(4));
68            V5= list(2,VV[3],(V5));
69            goto TTL;
70            }
71    }
72    /*      function definition for EXTRACT-DECLARATIONS    */
73    
74    static L4()
75    {register object *base=vs_base;
76            register object *sup=base+VM4; VC4
77            vs_check;
78            {register object V6;
79            object V7;
80            V6=(base[0]);
81            vs_base=vs_base+1;
82            if(vs_base>=vs_top){vs_top=sup;goto T16;}
83            V7=(base[1]);
84            vs_top=sup;
85            goto T17;
86    T16:;
87            V7= Cnil;
88    T17:;
89            {object V8;
90            register object V9;
91            register object V10;
92            V8= Cnil;
93            V9= Cnil;
94            V10= Cnil;
95            if(!(type_of(CMPcar((V6)))==t_string)){
96            goto T19;}
97            if((CMPcdr((V6)))==Cnil){
98            goto T19;}
99            {object V11;
100            V11= CMPcar((V6));
101            V6= CMPcdr((V6));
102            V8= (V11);}
103    T19:;
104    T30:;
105            if(((V6))!=Cnil){
106            goto T32;}
107            goto T28;
108    T32:;
109            V10= CMPcar((V6));
110    T40:;
111            if(type_of((V10))==t_cons||((V10))==Cnil){
112            goto T43;}
113            goto T28;
114    T43:;
115            if(!((CMPcar((V10)))==(VV[5]))){
116            goto T46;}
117            goto T38;
118    T46:;
119            {register object V12;
120            object V13;
121            base[2]= (V10);
122            base[3]= (V7);
123            vs_top=(vs_base=base+2)+2;
124            Lmacroexpand_1();
125            if(vs_base>=vs_top){vs_top=sup;goto T51;}
126            V12= vs_base[0];
127            vs_base++;
128            if(vs_base>=vs_top){vs_top=sup;goto T52;}
129            V13= vs_base[0];
130            vs_top=sup;
131            goto T53;
132    T51:;
133            V12= Cnil;
134    T52:;
135            V13= Cnil;
136    T53:;
137            if(!(((V12))==((V10)))){
138            goto T54;}
139            if(((V13))==Cnil){
140            goto T55;}
141    T54:;
142            V10= (V12);
143            goto T41;
144    T55:;
145            goto T28;}
146    T41:;
147            goto T40;
148    T38:;
149            {object V14;
150            V14= CMPcar((V6));
151            V6= CMPcdr((V6));}
152            {register object V15;
153            register object V16;
154            V15= CMPcdr((V10));
155            V16= CMPcar((V15));
156    T68:;
157            if(!(((V15))==Cnil)){
158            goto T69;}
159            goto T31;
160    T69:;
161            V9= make_cons((V16),(V9));
162            V15= CMPcdr((V15));
163            V16= CMPcar((V15));
164            goto T68;}
165    T31:;
166            goto T30;
167    T28:;
168            base[2]= (V8);
169            if((V9)==Cnil){
170            base[3]= Cnil;
171            goto T82;}
172            V17= nreverse((V9));
173            V18= make_cons(VV[5],/* INLINE-ARGS */V17);
174            base[3]= make_cons(/* INLINE-ARGS */V18,Cnil);
175    T82:;
176            base[4]= (V6);
177            vs_top=(vs_base=base+2)+3;
178            return;}
179            }
180    }
181    /*      function definition for DESTRUCTURE     */
182    
183    static L5()
184    {register object *base=vs_base;
185            register object *sup=base+VM5; VC5
186            vs_check;
187            bds_check;
188            {object V19;
189            object V20;
190            V19=(base[0]);
191            V20=(base[1]);
192            vs_top=sup;
193    TTL:;
194            {object V21;
195            bds_bind(VV[6],Cnil);
196            V21= Cnil;
197            (VV[6]->s.s_dbind)= VV[7];
198            V22= list(3,VV[8],VV[9],(V20));
199            V21= make_cons(/* INLINE-ARGS */V22,Cnil);
200            V20= VV[9];
201            base[4]= (V19);
202            base[5]= (V20);
203            vs_top=(vs_base=base+4)+2;
204            (void) (*Lnk19)();
205            vs_top=sup;
206            V23= vs_base[0];
207            V24= nreverse(V23);
208            base[3]= nconc((V21),/* INLINE-ARGS */V24);
209            base[5]= Cnil;
210            base[6]= (VV[6]->s.s_dbind);
211            vs_top=(vs_base=base+5)+2;
212            (void) (*Lnk20)();
213            vs_top=sup;
214            base[4]= vs_base[0];
215            vs_top=(vs_base=base+3)+2;
216            bds_unwind1;
217            return;}
218            }
219    }
220    /*      function definition for DESTRUCTURE-INTERNAL    */
221    
222    static L6()
223    {register object *base=vs_base;
224            register object *sup=base+VM6; VC6
225            vs_check;
226            {object V25;
227            register object V26;
228            V25=(base[0]);
229            V26=(base[1]);
230            vs_top=sup;
231    TTL:;
232            {object V27;
233            register object V28;
234            register object V29;
235            vs_base=vs_top;
236            Lgensym();
237            vs_top=sup;
238            V27= vs_base[0];
239            base[2]= small_fixnum(0);
240            V28= Cnil;
241            V29= Cnil;
242            {register object V30;
243            V30= (V25);
244    T100:;
245            if(((V30))!=Cnil){
246            goto T101;}
247            goto T98;
248    T101:;
249            V28= CMPcar((V30));
250            if(!(type_of((V28))==t_symbol)){
251            goto T107;}
252            {register object x= (V28),V31= VV[10];
253            while(V31!=Cnil)
254            if(x==(V31->c.c_car)){
255            goto T110;
256            }else V31=V31->c.c_cdr;}
257            (VV[6]->s.s_dbind)= make_cons((V28),(VV[6]->s.s_dbind));
258    T110:;
259            if((CMPcdr((V30)))!=Cnil){
260            goto T115;}
261            base[3]= (V28);
262            base[4]= (V26);
263            base[5]= Cnil;
264            vs_top=(vs_base=base+3)+3;
265            L7(base);
266            vs_top=sup;
267            V32= vs_base[0];
268            V29= make_cons(V32,(V29));
269            goto T105;
270    T115:;
271            if(!(type_of(CMPcdr((V30)))==t_symbol)){
272            goto T123;}
273            base[3]= (V28);
274            base[4]= (V26);
275            base[5]= CMPcdr((V30));
276            vs_top=(vs_base=base+3)+3;
277            L7(base);
278            vs_top=sup;
279            V33= vs_base[0];
280            V29= make_cons(V33,(V29));
281            (VV[6]->s.s_dbind)= make_cons(CMPcdr((V30)),(VV[6]->s.s_dbind));
282            goto T98;
283    T123:;
284            {register object x= (V28),V34= VV[11];
285            while(V34!=Cnil)
286            if(x==(V34->c.c_car)){
287            goto T135;
288            }else V34=V34->c.c_cdr;
289            goto T134;}
290    T135:;
291            base[2]= number_plus(base[2],small_fixnum(1));
292            goto T105;
293    T134:;
294            {register object x= CMPcadr((V30)),V35= VV[12];
295            while(V35!=Cnil)
296            if(x==(V35->c.c_car)){
297            goto T139;
298            }else V35=V35->c.c_cdr;
299            goto T138;}
300    T139:;
301            base[3]= (V28);
302            base[4]= (V26);
303            base[5]= Cnil;
304            vs_top=(vs_base=base+3)+3;
305            L7(base);
306            vs_top=sup;
307            V36= vs_base[0];
308            V29= make_cons(V36,(V29));
309            base[2]= number_plus(base[2],small_fixnum(1));
310            goto T105;
311    T138:;
312            base[3]= (V28);
313            base[4]= (V26);
314            base[5]= (V26);
315            vs_top=(vs_base=base+3)+3;
316            L7(base);
317            vs_top=sup;
318            V37= vs_base[0];
319            V29= make_cons(V37,(V29));
320            goto T105;
321    T107:;
322            V38= list(2,(V27),Cnil);
323            V39= make_cons(/* INLINE-ARGS */V38,Cnil);
324            base[3]= (V27);
325            base[4]= (V26);
326            if(!(type_of(CMPcdr((V30)))==t_symbol)){
327            goto T159;}
328            base[5]= CMPcdr((V30));
329            goto T157;
330    T159:;
331            base[5]= (V26);
332    T157:;
333            vs_top=(vs_base=base+3)+3;
334            L7(base);
335            vs_top=sup;
336            V40= vs_base[0];
337            base[3]= CMPcar((V30));
338            base[4]= (V27);
339            vs_top=(vs_base=base+3)+2;
340            (void) (*Lnk19)();
341            vs_top=sup;
342            V41= vs_base[0];
343            V42= listA(4,VV[13],/* INLINE-ARGS */V39,V40,nreverse(V41));
344            V29= make_cons(/* INLINE-ARGS */V42,(V29));
345            if(!(type_of(CMPcdr((V30)))==t_symbol)){
346            goto T105;}
347            (VV[6]->s.s_dbind)= make_cons(CMPcdr((V30)),(VV[6]->s.s_dbind));
348            goto T98;
349    T105:;
350            V30= CMPcdr((V30));
351            goto T100;}
352    T98:;
353            base[3]= (V29);
354            vs_top=(vs_base=base+3)+1;
355            return;}
356            }
357    }
358    /*      macro definition for DESTRUCTURING-BIND */
359    
360    static L8()
361    {register object *base=vs_base;
362            register object *sup=base+VM7; VC7
363            vs_check;
364            vs_top=sup;
365            {object V43=base[0]->c.c_cdr;
366            base[2]= (V43->c.c_car);
367            V43=V43->c.c_cdr;
368            base[3]= (V43->c.c_car);
369            V43=V43->c.c_cdr;
370            base[4]= V43;}
371            {object V44;
372            object V45;
373            object V46;
374            base[5]= base[4];
375            vs_top=(vs_base=base+5)+1;
376            (void) (*Lnk21)();
377            if(vs_base>=vs_top){vs_top=sup;goto T173;}
378            V44= vs_base[0];
379            vs_base++;
380            if(vs_base>=vs_top){vs_top=sup;goto T174;}
381            V45= vs_base[0];
382            vs_base++;
383            if(vs_base>=vs_top){vs_top=sup;goto T175;}
384            V46= vs_base[0];
385            vs_top=sup;
386            goto T176;
387    T173:;
388            V44= Cnil;
389    T174:;
390            V45= Cnil;
391    T175:;
392            V46= Cnil;
393    T176:;
394            {object V47;
395            object V48;
396            base[5]= base[2];
397            base[6]= base[3];
398            vs_top=(vs_base=base+5)+2;
399            (void) (*Lnk22)();
400            if(vs_base>=vs_top){vs_top=sup;goto T180;}
401            V47= vs_base[0];
402            vs_base++;
403            if(vs_base>=vs_top){vs_top=sup;goto T181;}
404            V48= vs_base[0];
405            vs_top=sup;
406            goto T182;
407    T180:;
408            V47= Cnil;
409    T181:;
410            V48= Cnil;
411    T182:;
412            base[5]= (V45);
413            base[6]= (V47);
414            base[7]= make_cons(VV[18],(V46));
415            vs_top=(vs_base=base+5)+3;
416            Lappend();
417            vs_top=sup;
418            V49= vs_base[0];
419            base[5]= listA(3,VV[13],(V48),V49);
420            vs_top=(vs_base=base+5)+1;
421            return;}}
422    }
423    /*      local function MAKE-POP */
424    
425    static L7(base0)
426    register object *base0;
427    {       register object *base=vs_base;
428            register object *sup=base+VM8; VC8
429            vs_check;
430            {object V50;
431            object V51;
432            object V52;
433            V50=(base[0]);
434            V51=(base[1]);
435            V52=(base[2]);
436            vs_top=sup;
437    TTL:;
438            {object V53;
439            if(!(number_compare(small_fixnum(0),base0[2])==0)){
440            goto T189;}
441            if((V50)==Cnil){
442            V54= Cnil;
443            goto T191;}
444            V54= list(3,VV[8],(V50),list(2,VV[15],(V51)));
445    T191:;
446            if((V52)==Cnil){
447            V55= Cnil;
448            goto T192;}
449            V55= list(3,VV[8],(V52),list(2,VV[16],(V51)));
450    T192:;
451            V53= list(3,VV[14],V54,V55);
452            goto T187;
453    T189:;
454            if(((V52))!=Cnil){
455            goto T194;}
456            if((V50)==Cnil){
457            V53= Cnil;
458            goto T187;}
459            base[3]= base0[2];
460            base[4]= (V51);
461            vs_top=(vs_base=base+3)+2;
462            (void) (*Lnk23)();
463            vs_top=sup;
464            V56= vs_base[0];
465            V53= list(3,VV[8],(V50),V56);
466            goto T187;
467    T194:;
468            base[3]= base0[2];
469            base[4]= (V51);
470            vs_top=(vs_base=base+3)+2;
471            (void) (*Lnk24)();
472            vs_top=sup;
473            V57= vs_base[0];
474            V58= list(3,VV[8],(V52),V57);
475            if((V50)==Cnil){
476            V59= Cnil;
477            goto T202;}
478            V59= list(3,VV[8],(V50),list(2,VV[17],(V52)));
479    T202:;
480            V53= list(3,VV[14],/* INLINE-ARGS */V58,V59);
481    T187:;
482            base0[2]= small_fixnum(0);
483            base[3]= (V53);
484            vs_top=(vs_base=base+3)+1;
485            return;}
486            }
487    }
488    static LnkT24(){ call_or_link(VV[24],&Lnk24);} /* MAKE-CDXR */
489    static LnkT23(){ call_or_link(VV[23],&Lnk23);} /* MAKE-CAXR */
490    static LnkT22(){ call_or_link(VV[22],&Lnk22);} /* DESTRUCTURE */
491    static LnkT21(){ call_or_link(VV[21],&Lnk21);} /* EXTRACT-DECLARATIONS */
492    static LnkT20(){ call_or_link(VV[20],&Lnk20);} /* DELETE */
493    static LnkT19(){ call_or_link(VV[19],&Lnk19);} /* DESTRUCTURE-INTERNAL */

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26