1: /*
2: ================================================================================
3: RPL/2 (R) version 4.1.10
4: Copyright (C) 1989-2012 Dr. BERTRAND Joël
5:
6: This file is part of RPL/2.
7:
8: RPL/2 is free software; you can redistribute it and/or modify it
9: under the terms of the CeCILL V2 License as published by the french
10: CEA, CNRS and INRIA.
11:
12: RPL/2 is distributed in the hope that it will be useful, but WITHOUT
13: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14: FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL V2 License
15: for more details.
16:
17: You should have received a copy of the CeCILL License
18: along with RPL/2. If not, write to info@cecill.info.
19: ================================================================================
20: */
21:
22:
23: #include "rpl-conv.h"
24:
25:
26: /*
27: ================================================================================
28: Fonction '->table'
29: ================================================================================
30: Entrées : structure processus
31: --------------------------------------------------------------------------------
32: Sorties :
33: --------------------------------------------------------------------------------
34: Effets de bord : néant
35: ================================================================================
36: */
37:
38: void
39: instruction_fleche_table(struct_processus *s_etat_processus)
40: {
41: struct_objet *s_objet;
42:
43: signed long i;
44: signed long nombre_elements;
45:
46: (*s_etat_processus).erreur_execution = d_ex;
47:
48: if ((*s_etat_processus).affichage_arguments == 'Y')
49: {
50: printf("\n ->TABLE ");
51:
52: if ((*s_etat_processus).langue == 'F')
53: {
54: printf("(création d'une table)\n\n");
55: }
56: else
57: {
58: printf("(create table)\n\n");
59: }
60:
61: printf(" n: %s, %s, %s, %s, %s, %s,\n"
62: " %s, %s, %s, %s, %s,\n"
63: " %s, %s, %s, %s, %s,\n"
64: " %s, %s\n",
65: d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
66: d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB);
67: printf(" ...\n");
68: printf(" 2: %s, %s, %s, %s, %s, %s,\n"
69: " %s, %s, %s, %s, %s,\n"
70: " %s, %s, %s, %s, %s,\n"
71: " %s, %s\n",
72: d_INT, d_REL, d_CPL, d_VIN, d_VRL, d_VCX, d_MIN, d_MRL, d_MCX,
73: d_TAB, d_BIN, d_NOM, d_CHN, d_LST, d_ALG, d_RPN, d_FCH, d_SLB);
74: printf(" 1: %s\n", d_INT);
75: printf("-> 1: %s\n", d_TAB);
76:
77: return;
78: }
79: else if ((*s_etat_processus).test_instruction == 'Y')
80: {
81: (*s_etat_processus).nombre_arguments = -1;
82: return;
83: }
84:
85: if (test_cfsf(s_etat_processus, 31) == d_vrai)
86: {
87: if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
88: {
89: return;
90: }
91: }
92:
93: if ((*s_etat_processus).hauteur_pile_operationnelle == 0)
94: {
95: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
96: return;
97: }
98:
99: if ((*(*(*s_etat_processus).l_base_pile).donnee).type != INT)
100: {
101: (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
102: return;
103: }
104:
105: nombre_elements = (*((integer8 *) (*(*(*s_etat_processus).l_base_pile)
106: .donnee).objet));
107:
108: if (nombre_elements < 0)
109: {
110:
111: /*
112: -- Opération absurde autorisée sur le calculateur HP-28S -----------------------
113: */
114:
115: (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
116: return;
117: }
118:
119: if ((unsigned long) nombre_elements >=
120: (*s_etat_processus).hauteur_pile_operationnelle)
121: {
122: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
123: return;
124: }
125:
126: if (test_cfsf(s_etat_processus, 31) == d_vrai)
127: {
128: if (empilement_pile_last(s_etat_processus, nombre_elements + 1)
129: == d_erreur)
130: {
131: return;
132: }
133: }
134:
135: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
136: &s_objet) == d_erreur)
137: {
138: return;
139: }
140:
141: liberation(s_etat_processus, s_objet);
142:
143: if ((s_objet = allocation(s_etat_processus, TBL)) == NULL)
144: {
145: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
146: return;
147: }
148:
149: (*((struct_tableau *) (*s_objet).objet)).nombre_elements =
150: nombre_elements;
151:
152: if (((*((struct_tableau *) (*s_objet).objet)).elements = malloc(
153: nombre_elements * sizeof(struct_objet *))) == NULL)
154: {
155: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
156: return;
157: }
158:
159: for(i = 0; i < nombre_elements; i++)
160: {
161: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
162: &((*((struct_tableau *) (*s_objet).objet)).elements
163: [nombre_elements - (i + 1)])) == d_erreur)
164: {
165: return;
166: }
167: }
168:
169: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
170: s_objet) == d_erreur)
171: {
172: return;
173: }
174:
175: return;
176: }
177:
178:
179: /*
180: ================================================================================
181: Fonction '->diag'
182: ================================================================================
183: Entrées : pointeur sur une structure struct_processus
184: --------------------------------------------------------------------------------
185: Sorties :
186: --------------------------------------------------------------------------------
187: Effets de bord : néant
188: ================================================================================
189: */
190:
191: void
192: instruction_fleche_diag(struct_processus *s_etat_processus)
193: {
194: struct_objet *s_objet_argument;
195: struct_objet *s_objet_resultat;
196:
197: unsigned long i;
198: unsigned long j;
199:
200: (*s_etat_processus).erreur_execution = d_ex;
201:
202: if ((*s_etat_processus).affichage_arguments == 'Y')
203: {
204: printf("\n ->DIAG ");
205:
206: if ((*s_etat_processus).langue == 'F')
207: {
208: printf("(conversion d'un vecteur en matrice diaginale)\n\n");
209: }
210: else
211: {
212: printf("(vector to diagonal matrix conversion)\n\n");
213: }
214:
215: printf("-> 1: %s, %s, %s\n", d_VIN, d_VRL, d_VCX);
216: printf(" 1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
217:
218: return;
219: }
220: else if ((*s_etat_processus).test_instruction == 'Y')
221: {
222: (*s_etat_processus).nombre_arguments = -1;
223: return;
224: }
225:
226: if (test_cfsf(s_etat_processus, 31) == d_vrai)
227: {
228: if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
229: {
230: return;
231: }
232: }
233:
234: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
235: &s_objet_argument) == d_erreur)
236: {
237: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
238: return;
239: }
240:
241: /*
242: * Conversion d'un vecteur
243: */
244:
245: if ((*s_objet_argument).type == VIN)
246: {
247: if ((s_objet_resultat = allocation(s_etat_processus, MIN)) == NULL)
248: {
249: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
250: return;
251: }
252:
253: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
254: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
255: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
256: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
257:
258: if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
259: malloc((*((struct_matrice *) (*s_objet_resultat).objet))
260: .nombre_lignes * sizeof(integer8 *))) == NULL)
261: {
262: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
263: return;
264: }
265:
266: for(i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
267: .nombre_lignes; i++)
268: {
269: if ((((integer8 **) (*((struct_matrice *)
270: (*s_objet_resultat).objet)).tableau)[i] =
271: malloc((*((struct_matrice *)
272: (*s_objet_resultat).objet)).nombre_colonnes *
273: sizeof(integer8))) == NULL)
274: {
275: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
276: return;
277: }
278:
279: for(j = 0; j < (*((struct_matrice *) (*s_objet_resultat).objet))
280: .nombre_colonnes; j++)
281: {
282: if (i != j)
283: {
284: ((integer8 **) (*((struct_matrice *) (*s_objet_resultat)
285: .objet)).tableau)[i][j] = 0;
286: }
287: else
288: {
289: ((integer8 **) (*((struct_matrice *) (*s_objet_resultat)
290: .objet)).tableau)[i][j] = ((integer8 *)
291: (*((struct_vecteur *) (*s_objet_argument)
292: .objet)).tableau)[i];
293: }
294: }
295: }
296: }
297: else if ((*s_objet_argument).type == VRL)
298: {
299: if ((s_objet_resultat = allocation(s_etat_processus, MRL)) == NULL)
300: {
301: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
302: return;
303: }
304:
305: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
306: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
307: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
308: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
309:
310: if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
311: malloc((*((struct_matrice *) (*s_objet_resultat).objet))
312: .nombre_lignes * sizeof(real8 *))) == NULL)
313: {
314: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
315: return;
316: }
317:
318: for(i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
319: .nombre_lignes; i++)
320: {
321: if ((((real8 **) (*((struct_matrice *)
322: (*s_objet_resultat).objet)).tableau)[i] =
323: malloc((*((struct_matrice *)
324: (*s_objet_resultat).objet)).nombre_colonnes *
325: sizeof(real8))) == NULL)
326: {
327: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
328: return;
329: }
330:
331: for(j = 0; j < (*((struct_matrice *) (*s_objet_resultat).objet))
332: .nombre_colonnes; j++)
333: {
334: if (i != j)
335: {
336: ((real8 **) (*((struct_matrice *) (*s_objet_resultat)
337: .objet)).tableau)[i][j] = 0;
338: }
339: else
340: {
341: ((real8 **) (*((struct_matrice *) (*s_objet_resultat)
342: .objet)).tableau)[i][j] = ((real8 *)
343: (*((struct_vecteur *) (*s_objet_argument)
344: .objet)).tableau)[i];
345: }
346: }
347: }
348: }
349: else if ((*s_objet_argument).type == VCX)
350: {
351: if ((s_objet_resultat = allocation(s_etat_processus, MCX)) == NULL)
352: {
353: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
354: return;
355: }
356:
357: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
358: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
359: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
360: (*((struct_vecteur *) (*s_objet_argument).objet)).taille;
361:
362: if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
363: malloc((*((struct_matrice *) (*s_objet_resultat).objet))
364: .nombre_lignes * sizeof(complex16 *))) == NULL)
365: {
366: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
367: return;
368: }
369:
370: for(i = 0; i < (*((struct_matrice *) (*s_objet_resultat).objet))
371: .nombre_lignes; i++)
372: {
373: if ((((complex16 **) (*((struct_matrice *)
374: (*s_objet_resultat).objet)).tableau)[i] =
375: malloc((*((struct_matrice *)
376: (*s_objet_resultat).objet)).nombre_colonnes *
377: sizeof(complex16))) == NULL)
378: {
379: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
380: return;
381: }
382:
383: for(j = 0; j < (*((struct_matrice *) (*s_objet_resultat).objet))
384: .nombre_colonnes; j++)
385: {
386: if (i != j)
387: {
388: ((complex16 **) (*((struct_matrice *) (*s_objet_resultat)
389: .objet)).tableau)[i][j].partie_reelle = 0;
390: ((complex16 **) (*((struct_matrice *) (*s_objet_resultat)
391: .objet)).tableau)[i][j].partie_imaginaire = 0;
392: }
393: else
394: {
395: ((complex16 **) (*((struct_matrice *) (*s_objet_resultat)
396: .objet)).tableau)[i][j] = ((complex16 *)
397: (*((struct_vecteur *) (*s_objet_argument)
398: .objet)).tableau)[i];
399: }
400: }
401: }
402: }
403:
404: /*
405: * Conversion impossible impossible
406: */
407:
408: else
409: {
410: liberation(s_etat_processus, s_objet_argument);
411:
412: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
413: return;
414: }
415:
416: liberation(s_etat_processus, s_objet_argument);
417:
418: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
419: s_objet_resultat) == d_erreur)
420: {
421: return;
422: }
423:
424: return;
425: }
426:
427:
428: /*
429: ================================================================================
430: Fonction 'forall'
431: ================================================================================
432: Entrées : structure processus
433: --------------------------------------------------------------------------------
434: Sorties :
435: --------------------------------------------------------------------------------
436: Effets de bord : néant
437: ================================================================================
438: */
439:
440: void
441: instruction_forall(struct_processus *s_etat_processus)
442: {
443: struct_objet *s_objet_1;
444: struct_objet *s_objet_2;
445:
446: struct_variable s_variable;
447:
448: unsigned char instruction_valide;
449: unsigned char *tampon;
450: unsigned char test_instruction;
451:
452: (*s_etat_processus).erreur_execution = d_ex;
453:
454: if ((*s_etat_processus).affichage_arguments == 'Y')
455: {
456: printf("\n FORALL ");
457:
458: if ((*s_etat_processus).langue == 'F')
459: {
460: printf("(boucle définie sur un objet)\n\n");
461: }
462: else
463: {
464: printf("(define a object-based loop)\n\n");
465: }
466:
467: if ((*s_etat_processus).langue == 'F')
468: {
469: printf(" Utilisation :\n\n");
470: }
471: else
472: {
473: printf(" Usage:\n\n");
474: }
475:
476: printf(" %s/%s FORALL (variable)\n", d_LST, d_TAB);
477: printf(" (expression)\n");
478: printf(" NEXT\n");
479: return;
480: }
481: else if ((*s_etat_processus).test_instruction == 'Y')
482: {
483: (*s_etat_processus).nombre_arguments = -1;
484: return;
485: }
486:
487: if ((*s_etat_processus).erreur_systeme != d_es)
488: {
489: return;
490: }
491:
492: if (test_cfsf(s_etat_processus, 31) == d_vrai)
493: {
494: if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
495: {
496: return;
497: }
498: }
499:
500: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
501: &s_objet_1) == d_erreur)
502: {
503: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
504: return;
505: }
506:
507: if (((*s_objet_1).type != LST) && ((*s_objet_1).type != TBL))
508: {
509: liberation(s_etat_processus, s_objet_1);
510:
511: (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle;
512: return;
513: }
514:
515: tampon = (*s_etat_processus).instruction_courante;
516: test_instruction = (*s_etat_processus).test_instruction;
517: instruction_valide = (*s_etat_processus).instruction_valide;
518: (*s_etat_processus).test_instruction = 'Y';
519:
520: empilement_pile_systeme(s_etat_processus);
521:
522: if ((*s_etat_processus).erreur_systeme != d_es)
523: {
524: return;
525: }
526:
527: if ((*s_etat_processus).mode_execution_programme == 'Y')
528: {
529: if (recherche_instruction_suivante(s_etat_processus) == d_erreur)
530: {
531: return;
532: }
533:
534: analyse(s_etat_processus, NULL);
535:
536: if ((*s_etat_processus).instruction_valide == 'Y')
537: {
538: liberation(s_etat_processus, s_objet_1);
539: free((*s_etat_processus).instruction_courante);
540: (*s_etat_processus).instruction_courante = tampon;
541:
542: depilement_pile_systeme(s_etat_processus);
543:
544: (*s_etat_processus).erreur_execution = d_ex_nom_reserve;
545: return;
546: }
547:
548: recherche_type(s_etat_processus);
549:
550: free((*s_etat_processus).instruction_courante);
551: (*s_etat_processus).instruction_courante = tampon;
552:
553: if ((*s_etat_processus).erreur_execution != d_ex)
554: {
555: depilement_pile_systeme(s_etat_processus);
556: liberation(s_etat_processus, s_objet_1);
557: return;
558: }
559:
560: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
561: &s_objet_2) == d_erreur)
562: {
563: liberation(s_etat_processus, s_objet_1);
564:
565: depilement_pile_systeme(s_etat_processus);
566: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
567: return;
568: }
569:
570: (*(*s_etat_processus).l_base_pile_systeme)
571: .origine_routine_evaluation = 'N';
572: }
573: else
574: {
575: if ((*s_etat_processus).expression_courante == NULL)
576: {
577: depilement_pile_systeme(s_etat_processus);
578:
579: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
580: return;
581: }
582:
583: (*s_etat_processus).expression_courante = (*(*s_etat_processus)
584: .expression_courante).suivant;
585:
586: if ((s_objet_2 = copie_objet(s_etat_processus,
587: (*(*s_etat_processus).expression_courante)
588: .donnee, 'P')) == NULL)
589: {
590: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
591: return;
592: }
593:
594: (*(*s_etat_processus).l_base_pile_systeme)
595: .origine_routine_evaluation = 'Y';
596: }
597:
598: if ((*s_objet_2).type != NOM)
599: {
600: liberation(s_etat_processus, s_objet_1);
601: depilement_pile_systeme(s_etat_processus);
602:
603: (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle;
604: return;
605: }
606: else if ((*((struct_nom *) (*s_objet_2).objet)).symbole == d_vrai)
607: {
608: liberation(s_etat_processus, s_objet_1);
609: depilement_pile_systeme(s_etat_processus);
610:
611: (*s_etat_processus).erreur_execution = d_ex_erreur_traitement_boucle;
612: return;
613: }
614:
615: (*s_etat_processus).niveau_courant++;
616: (*(*s_etat_processus).l_base_pile_systeme).type_cloture = 'A';
617:
618: if ((s_variable.nom = malloc((strlen(
619: (*((struct_nom *) (*s_objet_2).objet)).nom) + 1) *
620: sizeof(unsigned char))) == NULL)
621: {
622: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
623: return;
624: }
625:
626: strcpy(s_variable.nom, (*((struct_nom *) (*s_objet_2).objet)).nom);
627: s_variable.niveau = (*s_etat_processus).niveau_courant;
628:
629: if ((*s_objet_1).type == LST)
630: {
631: if ((*s_objet_1).objet == NULL)
632: {
633: // La liste est vide. On doit sauter au NEXT correspondant.
634: liberation(s_etat_processus, s_objet_1);
635: liberation(s_etat_processus, s_objet_2);
636: free(s_variable.nom);
637:
638: if (((*(*s_etat_processus).l_base_pile_systeme)
639: .limite_indice_boucle = allocation(s_etat_processus, NON))
640: == NULL)
641: {
642: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
643: return;
644: }
645:
646: (*s_etat_processus).test_instruction = test_instruction;
647: (*s_etat_processus).instruction_valide = instruction_valide;
648:
649: instruction_cycle(s_etat_processus);
650: return;
651: }
652:
653: if ((s_variable.objet = copie_objet(s_etat_processus,
654: (*((struct_liste_chainee *) (*s_objet_1).objet)).donnee, 'P'))
655: == NULL)
656: {
657: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
658: return;
659: }
660:
661: // Mémorisation de la position courante dans la liste
662:
663: if (((*(*s_etat_processus).l_base_pile_systeme).indice_boucle =
664: allocation(s_etat_processus, NON)) == NULL)
665: {
666: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
667: return;
668: }
669:
670: (*(*(*s_etat_processus).l_base_pile_systeme).indice_boucle).objet =
671: (struct_objet *) (*s_objet_1).objet;
672: }
673: else
674: {
675: if ((*((struct_tableau *) (*s_objet_1).objet)).nombre_elements == 0)
676: {
677: // La table est vide, il convient de sauter au NEXT correspondant.
678: liberation(s_etat_processus, s_objet_1);
679: liberation(s_etat_processus, s_objet_2);
680: free(s_variable.nom);
681:
682: if (((*(*s_etat_processus).l_base_pile_systeme)
683: .limite_indice_boucle = allocation(s_etat_processus, NON))
684: == NULL)
685: {
686: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
687: return;
688: }
689:
690: (*s_etat_processus).test_instruction = test_instruction;
691: (*s_etat_processus).instruction_valide = instruction_valide;
692:
693: instruction_cycle(s_etat_processus);
694: return;
695: }
696:
697: if ((s_variable.objet = copie_objet(s_etat_processus,
698: (*((struct_tableau *) (*s_objet_1).objet)).elements[0], 'P'))
699: == NULL)
700: {
701: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
702: return;
703: }
704:
705: // Création d'un objet de type entier contenant la position
706: // de l'élément courant dans la table.
707:
708: if (((*(*s_etat_processus).l_base_pile_systeme).indice_boucle =
709: allocation(s_etat_processus, INT)) == NULL)
710: {
711: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
712: return;
713: }
714:
715: (*((integer8 *) (*(*(*s_etat_processus).l_base_pile_systeme)
716: .indice_boucle).objet)) = 0;
717: }
718:
719: if (creation_variable(s_etat_processus, &s_variable, 'V', 'P') == d_erreur)
720: {
721: return;
722: }
723:
724: liberation(s_etat_processus, s_objet_2);
725:
726: (*s_etat_processus).test_instruction = test_instruction;
727: (*s_etat_processus).instruction_valide = instruction_valide;
728:
729: (*(*s_etat_processus).l_base_pile_systeme).limite_indice_boucle = s_objet_1;
730:
731: if ((*s_etat_processus).mode_execution_programme == 'Y')
732: {
733: (*(*s_etat_processus).l_base_pile_systeme).adresse_retour =
734: (*s_etat_processus).position_courante;
735: }
736: else
737: {
738: (*(*s_etat_processus).l_base_pile_systeme).pointeur_objet_retour =
739: (*s_etat_processus).expression_courante;
740: }
741:
742: if (((*(*s_etat_processus).l_base_pile_systeme).nom_variable =
743: malloc((strlen(s_variable.nom) + 1) *
744: sizeof(unsigned char))) == NULL)
745: {
746: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
747: return;
748: }
749:
750: strcpy((*(*s_etat_processus).l_base_pile_systeme).nom_variable,
751: s_variable.nom);
752:
753: return;
754: }
755:
756: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>