Annotation of rpl/src/instructions_r5.c, revision 1.1
1.1 ! bertrand 1: /*
! 2: ================================================================================
! 3: RPL/2 (R) version 4.0.9
! 4: Copyright (C) 1989-2010 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 'rswp'
! 29: ================================================================================
! 30: Entrées : pointeur sur une structure struct_processus
! 31: --------------------------------------------------------------------------------
! 32: Sorties :
! 33: --------------------------------------------------------------------------------
! 34: Effets de bord : néant
! 35: ================================================================================
! 36: */
! 37:
! 38: void
! 39: instruction_rswp(struct_processus *s_etat_processus)
! 40: {
! 41: struct_objet *s_copie_argument_3;
! 42: struct_objet *s_objet_argument_1;
! 43: struct_objet *s_objet_argument_2;
! 44: struct_objet *s_objet_argument_3;
! 45:
! 46: signed long ligne_1;
! 47: signed long ligne_2;
! 48:
! 49: void *tampon;
! 50:
! 51: (*s_etat_processus).erreur_execution = d_ex;
! 52:
! 53: if ((*s_etat_processus).affichage_arguments == 'Y')
! 54: {
! 55: printf("\n RSWP ");
! 56:
! 57: if ((*s_etat_processus).langue == 'F')
! 58: {
! 59: printf("(échange de deux lignes d'une matrice)\n\n");
! 60: }
! 61: else
! 62: {
! 63: printf("(swap two rows of a matrix)\n\n");
! 64: }
! 65:
! 66: printf(" 3: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 67: printf(" 2: %s\n", d_INT);
! 68: printf(" 1: %s\n", d_INT);
! 69: printf("-> 1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 70:
! 71: return;
! 72: }
! 73: else if ((*s_etat_processus).test_instruction == 'Y')
! 74: {
! 75: (*s_etat_processus).nombre_arguments = -1;
! 76: return;
! 77: }
! 78:
! 79: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 80: {
! 81: if (empilement_pile_last(s_etat_processus, 3) == d_erreur)
! 82: {
! 83: return;
! 84: }
! 85: }
! 86:
! 87: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 88: &s_objet_argument_1) == d_erreur)
! 89: {
! 90: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 91: return;
! 92: }
! 93:
! 94: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 95: &s_objet_argument_2) == d_erreur)
! 96: {
! 97: liberation(s_etat_processus, s_objet_argument_1);
! 98:
! 99: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 100: return;
! 101: }
! 102:
! 103: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 104: &s_objet_argument_3) == d_erreur)
! 105: {
! 106: liberation(s_etat_processus, s_objet_argument_1);
! 107: liberation(s_etat_processus, s_objet_argument_2);
! 108:
! 109: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 110: return;
! 111: }
! 112:
! 113: if (((*s_objet_argument_1).type == INT) &&
! 114: ((*s_objet_argument_2).type == INT))
! 115: {
! 116: if (((*s_objet_argument_3).type == MIN) ||
! 117: ((*s_objet_argument_3).type == MRL) ||
! 118: ((*s_objet_argument_3).type == MCX))
! 119: {
! 120: ligne_1 = (*((integer8 *) (*s_objet_argument_1).objet)) - 1;
! 121: ligne_2 = (*((integer8 *) (*s_objet_argument_2).objet)) - 1;
! 122:
! 123: if ((ligne_1 < 0) || (ligne_1 >= (long) (*((struct_matrice *)
! 124: (*s_objet_argument_3).objet)).nombre_lignes) ||
! 125: (ligne_2 < 0) || (ligne_2 >= (long) (*((struct_matrice *)
! 126: (*s_objet_argument_3).objet)).nombre_lignes))
! 127: {
! 128: liberation(s_etat_processus, s_objet_argument_1);
! 129: liberation(s_etat_processus, s_objet_argument_2);
! 130: liberation(s_etat_processus, s_objet_argument_3);
! 131:
! 132: (*s_etat_processus).erreur_execution =
! 133: d_ex_dimensions_invalides;
! 134: return;
! 135: }
! 136:
! 137: if ((s_copie_argument_3 = copie_objet(s_etat_processus,
! 138: s_objet_argument_3, 'Q')) == NULL)
! 139: {
! 140: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 141: return;
! 142: }
! 143:
! 144: liberation(s_etat_processus, s_objet_argument_3);
! 145: s_objet_argument_3 = s_copie_argument_3;
! 146:
! 147: tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
! 148: .tableau[ligne_1];
! 149: (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[ligne_1]
! 150: = (*((struct_matrice *) (*s_objet_argument_3).objet))
! 151: .tableau[ligne_2];
! 152: (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[ligne_2]
! 153: = tampon;
! 154: }
! 155: else
! 156: {
! 157: liberation(s_etat_processus, s_objet_argument_1);
! 158: liberation(s_etat_processus, s_objet_argument_2);
! 159: liberation(s_etat_processus, s_objet_argument_3);
! 160:
! 161: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 162: return;
! 163: }
! 164: }
! 165: else
! 166: {
! 167: liberation(s_etat_processus, s_objet_argument_1);
! 168: liberation(s_etat_processus, s_objet_argument_2);
! 169: liberation(s_etat_processus, s_objet_argument_3);
! 170:
! 171: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 172: return;
! 173: }
! 174:
! 175: liberation(s_etat_processus, s_objet_argument_1);
! 176: liberation(s_etat_processus, s_objet_argument_2);
! 177:
! 178: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 179: s_objet_argument_3) == d_erreur)
! 180: {
! 181: return;
! 182: }
! 183:
! 184: return;
! 185: }
! 186:
! 187:
! 188: /*
! 189: ================================================================================
! 190: Fonction 'row+'
! 191: ================================================================================
! 192: Entrées :
! 193: --------------------------------------------------------------------------------
! 194: Sorties :
! 195: --------------------------------------------------------------------------------
! 196: Effets de bord : néant
! 197: ================================================================================
! 198: */
! 199:
! 200: void
! 201: instruction_row_plus(struct_processus *s_etat_processus)
! 202: {
! 203: integer8 position;
! 204:
! 205: logical1 matrice_vide;
! 206: logical1 presence_nom;
! 207: logical1 variable_partagee;
! 208:
! 209: struct_objet *s_copie_argument_1;
! 210: struct_objet *s_copie_argument_3;
! 211: struct_objet *s_objet_argument_1;
! 212: struct_objet *s_objet_argument_2;
! 213: struct_objet *s_objet_argument_3;
! 214:
! 215: unsigned long i;
! 216: unsigned long j;
! 217:
! 218: void **tableau;
! 219: void *tampon;
! 220:
! 221: (*s_etat_processus).erreur_execution = d_ex;
! 222:
! 223: if ((*s_etat_processus).affichage_arguments == 'Y')
! 224: {
! 225: printf("\n ROW+ ");
! 226:
! 227: if ((*s_etat_processus).langue == 'F')
! 228: {
! 229: printf("(ajout d'une ligne dans une matrice)\n\n");
! 230: }
! 231: else
! 232: {
! 233: printf("(add a row in a matrix)\n\n");
! 234: }
! 235:
! 236: printf(" 3: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 237: printf(" 2: %s\n", d_INT);
! 238: printf(" 1: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
! 239: printf("-> 1: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
! 240:
! 241: printf(" 3: %s\n", d_NOM);
! 242: printf(" 2: %s\n", d_INT);
! 243: printf(" 1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 244:
! 245: return;
! 246: }
! 247: else if ((*s_etat_processus).test_instruction == 'Y')
! 248: {
! 249: (*s_etat_processus).nombre_arguments = -1;
! 250: return;
! 251: }
! 252:
! 253: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 254: {
! 255: if (empilement_pile_last(s_etat_processus, 3) == d_erreur)
! 256: {
! 257: return;
! 258: }
! 259: }
! 260:
! 261: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 262: &s_objet_argument_1) == d_erreur)
! 263: {
! 264: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 265: return;
! 266: }
! 267:
! 268: if ((s_copie_argument_1 = copie_objet(s_etat_processus, s_objet_argument_1,
! 269: 'O')) == NULL)
! 270: {
! 271: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 272: return;
! 273: }
! 274:
! 275: liberation(s_etat_processus, s_objet_argument_1);
! 276: s_objet_argument_1 = s_copie_argument_1;
! 277:
! 278: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 279: &s_objet_argument_2) == d_erreur)
! 280: {
! 281: liberation(s_etat_processus, s_objet_argument_1);
! 282:
! 283: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 284: return;
! 285: }
! 286:
! 287: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 288: &s_objet_argument_3) == d_erreur)
! 289: {
! 290: liberation(s_etat_processus, s_objet_argument_1);
! 291: liberation(s_etat_processus, s_objet_argument_2);
! 292:
! 293: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 294: return;
! 295: }
! 296:
! 297: if (((*s_objet_argument_1).type != MIN) &&
! 298: ((*s_objet_argument_1).type != MRL) &&
! 299: ((*s_objet_argument_1).type != MCX))
! 300: {
! 301: liberation(s_etat_processus, s_objet_argument_1);
! 302: liberation(s_etat_processus, s_objet_argument_2);
! 303: liberation(s_etat_processus, s_objet_argument_3);
! 304:
! 305: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 306: return;
! 307: }
! 308:
! 309: if ((*((struct_matrice *) (*s_objet_argument_1).objet)).nombre_lignes
! 310: != 1)
! 311: {
! 312: liberation(s_etat_processus, s_objet_argument_1);
! 313: liberation(s_etat_processus, s_objet_argument_2);
! 314: liberation(s_etat_processus, s_objet_argument_3);
! 315:
! 316: (*s_etat_processus).erreur_execution = d_ex_dimensions_invalides;
! 317: return;
! 318: }
! 319:
! 320: if ((*s_objet_argument_2).type != INT)
! 321: {
! 322: liberation(s_etat_processus, s_objet_argument_1);
! 323: liberation(s_etat_processus, s_objet_argument_2);
! 324: liberation(s_etat_processus, s_objet_argument_3);
! 325:
! 326: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 327: return;
! 328: }
! 329:
! 330: variable_partagee = d_faux;
! 331:
! 332: if ((*s_objet_argument_3).type == NOM)
! 333: {
! 334: presence_nom = d_vrai;
! 335:
! 336: if (recherche_variable(s_etat_processus, (*((struct_nom *)
! 337: (*s_objet_argument_3).objet)).nom) == d_faux)
! 338: {
! 339: (*s_etat_processus).erreur_systeme = d_es;
! 340: (*s_etat_processus).erreur_execution = d_ex_variable_non_definie;
! 341:
! 342: liberation(s_etat_processus, s_objet_argument_1);
! 343: liberation(s_etat_processus, s_objet_argument_2);
! 344: liberation(s_etat_processus, s_objet_argument_3);
! 345:
! 346: return;
! 347: }
! 348:
! 349: liberation(s_etat_processus, s_objet_argument_3);
! 350:
! 351: if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)
! 352: .position_variable_courante].variable_verrouillee == d_vrai)
! 353: {
! 354: (*s_etat_processus).erreur_execution = d_ex_variable_verrouillee;
! 355:
! 356: liberation(s_etat_processus, s_objet_argument_1);
! 357: liberation(s_etat_processus, s_objet_argument_2);
! 358:
! 359: return;
! 360: }
! 361:
! 362: s_objet_argument_3 = (*s_etat_processus).s_liste_variables
! 363: [(*s_etat_processus).position_variable_courante].objet;
! 364:
! 365: if (s_objet_argument_3 == NULL)
! 366: {
! 367: if (pthread_mutex_lock(&((*(*s_etat_processus)
! 368: .s_liste_variables_partagees).mutex)) != 0)
! 369: {
! 370: (*s_etat_processus).erreur_systeme = d_es_processus;
! 371: return;
! 372: }
! 373:
! 374: if (recherche_variable_partagee(s_etat_processus,
! 375: (*s_etat_processus).s_liste_variables
! 376: [(*s_etat_processus).position_variable_courante].nom,
! 377: (*s_etat_processus).s_liste_variables
! 378: [(*s_etat_processus).position_variable_courante]
! 379: .variable_partagee, (*s_etat_processus).s_liste_variables
! 380: [(*s_etat_processus).position_variable_courante].origine)
! 381: == d_faux)
! 382: {
! 383: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 384: .s_liste_variables_partagees).mutex)) != 0)
! 385: {
! 386: (*s_etat_processus).erreur_systeme = d_es_processus;
! 387: return;
! 388: }
! 389:
! 390: (*s_etat_processus).erreur_systeme = d_es;
! 391: (*s_etat_processus).erreur_execution =
! 392: d_ex_variable_non_definie;
! 393:
! 394: liberation(s_etat_processus, s_objet_argument_1);
! 395: liberation(s_etat_processus, s_objet_argument_2);
! 396:
! 397: return;
! 398: }
! 399:
! 400: s_objet_argument_3 = (*(*s_etat_processus)
! 401: .s_liste_variables_partagees).table
! 402: [(*(*s_etat_processus).s_liste_variables_partagees)
! 403: .position_variable].objet;
! 404: variable_partagee = d_vrai;
! 405: }
! 406:
! 407: if ((s_copie_argument_3 = copie_objet(s_etat_processus,
! 408: s_objet_argument_3, 'Q')) == NULL)
! 409: {
! 410: if (variable_partagee == d_vrai)
! 411: {
! 412: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 413: .s_liste_variables_partagees).mutex)) != 0)
! 414: {
! 415: (*s_etat_processus).erreur_systeme = d_es_processus;
! 416: return;
! 417: }
! 418: }
! 419:
! 420: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 421: return;
! 422: }
! 423:
! 424: liberation(s_etat_processus, s_objet_argument_3);
! 425: s_objet_argument_3 = s_copie_argument_3;
! 426:
! 427: (*s_etat_processus).s_liste_variables[(*s_etat_processus)
! 428: .position_variable_courante].objet = s_objet_argument_3;
! 429: }
! 430: else
! 431: {
! 432: presence_nom = d_faux;
! 433:
! 434: if ((s_copie_argument_3 = copie_objet(s_etat_processus,
! 435: s_objet_argument_3, 'Q')) == NULL)
! 436: {
! 437: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 438: return;
! 439: }
! 440:
! 441: liberation(s_etat_processus, s_objet_argument_3);
! 442: s_objet_argument_3 = s_copie_argument_3;
! 443: }
! 444:
! 445: if (((*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_colonnes
! 446: == 0) && ((*((struct_matrice *) (*s_objet_argument_3).objet))
! 447: .nombre_lignes == 1))
! 448: {
! 449: matrice_vide = d_vrai;
! 450: }
! 451: else
! 452: {
! 453: matrice_vide = d_faux;
! 454:
! 455: if ((*((struct_matrice *) (*s_objet_argument_1).objet)).nombre_colonnes
! 456: != (*((struct_matrice *) (*s_objet_argument_3).objet))
! 457: .nombre_colonnes)
! 458: {
! 459: if (variable_partagee == d_vrai)
! 460: {
! 461: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 462: .s_liste_variables_partagees).mutex)) != 0)
! 463: {
! 464: (*s_etat_processus).erreur_systeme = d_es_processus;
! 465: return;
! 466: }
! 467: }
! 468:
! 469: liberation(s_etat_processus, s_objet_argument_1);
! 470: liberation(s_etat_processus, s_objet_argument_2);
! 471:
! 472: if (presence_nom == d_faux)
! 473: {
! 474: liberation(s_etat_processus, s_objet_argument_3);
! 475: }
! 476:
! 477: (*s_etat_processus).erreur_execution = d_ex_dimensions_invalides;
! 478: return;
! 479: }
! 480: }
! 481:
! 482: if ((*s_objet_argument_1).type == MRL)
! 483: {
! 484: if ((*s_objet_argument_3).type == MIN)
! 485: {
! 486: // Conversion de la matrice entière en matrice réelle
! 487:
! 488: for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
! 489: .nombre_lignes; i++)
! 490: {
! 491: tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
! 492: .tableau[i];
! 493:
! 494: if (((*((struct_matrice *) (*s_objet_argument_3).objet))
! 495: .tableau[i] = malloc((*((struct_matrice *)
! 496: (*s_objet_argument_3).objet)).nombre_colonnes *
! 497: sizeof(real8))) == NULL)
! 498: {
! 499: if (variable_partagee == d_vrai)
! 500: {
! 501: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 502: .s_liste_variables_partagees).mutex)) != 0)
! 503: {
! 504: (*s_etat_processus).erreur_systeme = d_es_processus;
! 505: return;
! 506: }
! 507: }
! 508:
! 509: (*s_etat_processus).erreur_systeme =
! 510: d_es_allocation_memoire;
! 511: return;
! 512: }
! 513:
! 514: for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_3)
! 515: .objet)).nombre_colonnes; j++)
! 516: {
! 517: ((real8 **) (*((struct_matrice *) (*s_objet_argument_3)
! 518: .objet)).tableau)[i][j] = (real8) (((integer8 *)
! 519: tampon)[j]);
! 520: }
! 521:
! 522: free(tampon);
! 523: }
! 524:
! 525: (*((struct_matrice *) (*s_objet_argument_3).objet)).type = 'R';
! 526: (*s_objet_argument_3).type = MRL;
! 527: }
! 528: }
! 529: else if ((*s_objet_argument_1).type == MCX)
! 530: {
! 531: if ((*s_objet_argument_3).type == MIN)
! 532: {
! 533: // Conversion de la matrice entière en matrice complexe
! 534:
! 535: for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
! 536: .nombre_lignes; i++)
! 537: {
! 538: tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
! 539: .tableau[i];
! 540:
! 541: if (((*((struct_matrice *) (*s_objet_argument_3).objet))
! 542: .tableau[i] = malloc((*((struct_matrice *)
! 543: (*s_objet_argument_3).objet)).nombre_colonnes *
! 544: sizeof(complex16))) == NULL)
! 545: {
! 546: if (variable_partagee == d_vrai)
! 547: {
! 548: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 549: .s_liste_variables_partagees).mutex)) != 0)
! 550: {
! 551: (*s_etat_processus).erreur_systeme = d_es_processus;
! 552: return;
! 553: }
! 554: }
! 555:
! 556: (*s_etat_processus).erreur_systeme =
! 557: d_es_allocation_memoire;
! 558: return;
! 559: }
! 560:
! 561: for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_3)
! 562: .objet)).nombre_colonnes; j++)
! 563: {
! 564: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
! 565: .objet)).tableau)[i][j].partie_reelle =
! 566: (real8) (((integer8 *) tampon)[j]);
! 567: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
! 568: .objet)).tableau)[i][j].partie_imaginaire = 0;
! 569: }
! 570:
! 571: free(tampon);
! 572: }
! 573:
! 574: (*((struct_matrice *) (*s_objet_argument_3).objet)).type = 'C';
! 575: (*s_objet_argument_3).type = MCX;
! 576: }
! 577: else if ((*s_objet_argument_3).type == MRL)
! 578: {
! 579: // Conversion de la matrice réelle en matrice complexe
! 580:
! 581: for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
! 582: .nombre_lignes; i++)
! 583: {
! 584: tampon = (*((struct_matrice *) (*s_objet_argument_3).objet))
! 585: .tableau[i];
! 586:
! 587: if (((*((struct_matrice *) (*s_objet_argument_3).objet))
! 588: .tableau[i] = malloc((*((struct_matrice *)
! 589: (*s_objet_argument_3).objet)).nombre_colonnes *
! 590: sizeof(complex16))) == NULL)
! 591: {
! 592: if (variable_partagee == d_vrai)
! 593: {
! 594: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 595: .s_liste_variables_partagees).mutex)) != 0)
! 596: {
! 597: (*s_etat_processus).erreur_systeme = d_es_processus;
! 598: return;
! 599: }
! 600: }
! 601:
! 602: (*s_etat_processus).erreur_systeme =
! 603: d_es_allocation_memoire;
! 604: return;
! 605: }
! 606:
! 607: for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_3)
! 608: .objet)).nombre_colonnes; j++)
! 609: {
! 610: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
! 611: .objet)).tableau)[i][j].partie_reelle =
! 612: ((real8 *) tampon)[j];
! 613: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_3)
! 614: .objet)).tableau)[i][j].partie_imaginaire = 0;
! 615: }
! 616:
! 617: free(tampon);
! 618: }
! 619:
! 620: (*((struct_matrice *) (*s_objet_argument_3).objet)).type = 'C';
! 621: (*s_objet_argument_3).type = MCX;
! 622: }
! 623: }
! 624:
! 625: if ((*s_objet_argument_3).type == MRL)
! 626: {
! 627: if ((*s_objet_argument_1).type == MIN)
! 628: {
! 629: // Conversion de la matrice entière en matrice réelle
! 630:
! 631: for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_1).objet))
! 632: .nombre_lignes; i++)
! 633: {
! 634: tampon = (*((struct_matrice *) (*s_objet_argument_1).objet))
! 635: .tableau[i];
! 636:
! 637: if (((*((struct_matrice *) (*s_objet_argument_1).objet))
! 638: .tableau[i] = malloc((*((struct_matrice *)
! 639: (*s_objet_argument_1).objet)).nombre_colonnes *
! 640: sizeof(real8))) == NULL)
! 641: {
! 642: if (variable_partagee == d_vrai)
! 643: {
! 644: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 645: .s_liste_variables_partagees).mutex)) != 0)
! 646: {
! 647: (*s_etat_processus).erreur_systeme = d_es_processus;
! 648: return;
! 649: }
! 650: }
! 651:
! 652: (*s_etat_processus).erreur_systeme =
! 653: d_es_allocation_memoire;
! 654: return;
! 655: }
! 656:
! 657: for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_1)
! 658: .objet)).nombre_colonnes; j++)
! 659: {
! 660: ((real8 **) (*((struct_matrice *) (*s_objet_argument_1)
! 661: .objet)).tableau)[i][j] = (real8) (((integer8 *)
! 662: tampon)[j]);
! 663: }
! 664:
! 665: free(tampon);
! 666: }
! 667:
! 668: (*((struct_matrice *) (*s_objet_argument_1).objet)).type = 'R';
! 669: (*s_objet_argument_1).type = MRL;
! 670: }
! 671: }
! 672: else if ((*s_objet_argument_3).type == MCX)
! 673: {
! 674: if ((*s_objet_argument_1).type == MIN)
! 675: {
! 676: // Conversion de la matrice entière en matrice complexe
! 677:
! 678: for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_1).objet))
! 679: .nombre_lignes; i++)
! 680: {
! 681: tampon = (*((struct_matrice *) (*s_objet_argument_1).objet))
! 682: .tableau[i];
! 683:
! 684: if (((*((struct_matrice *) (*s_objet_argument_1).objet))
! 685: .tableau[i] = malloc((*((struct_matrice *)
! 686: (*s_objet_argument_1).objet)).nombre_colonnes *
! 687: sizeof(complex16))) == NULL)
! 688: {
! 689: if (variable_partagee == d_vrai)
! 690: {
! 691: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 692: .s_liste_variables_partagees).mutex)) != 0)
! 693: {
! 694: (*s_etat_processus).erreur_systeme = d_es_processus;
! 695: return;
! 696: }
! 697: }
! 698:
! 699: (*s_etat_processus).erreur_systeme =
! 700: d_es_allocation_memoire;
! 701: return;
! 702: }
! 703:
! 704: for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_1)
! 705: .objet)).nombre_colonnes; j++)
! 706: {
! 707: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
! 708: .objet)).tableau)[i][j].partie_reelle =
! 709: (real8) (((integer8 *) tampon)[j]);
! 710: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
! 711: .objet)).tableau)[i][j].partie_imaginaire = 0;
! 712: }
! 713:
! 714: free(tampon);
! 715: }
! 716:
! 717: (*((struct_matrice *) (*s_objet_argument_1).objet)).type = 'C';
! 718: (*s_objet_argument_1).type = MCX;
! 719: }
! 720: else if ((*s_objet_argument_1).type == MRL)
! 721: {
! 722: // Conversion de la matrice réelle en matrice complexe
! 723:
! 724: for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_1).objet))
! 725: .nombre_lignes; i++)
! 726: {
! 727: tampon = (*((struct_matrice *) (*s_objet_argument_1).objet))
! 728: .tableau[i];
! 729:
! 730: if (((*((struct_matrice *) (*s_objet_argument_1).objet))
! 731: .tableau[i] = malloc((*((struct_matrice *)
! 732: (*s_objet_argument_1).objet)).nombre_colonnes *
! 733: sizeof(complex16))) == NULL)
! 734: {
! 735: if (variable_partagee == d_vrai)
! 736: {
! 737: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 738: .s_liste_variables_partagees).mutex)) != 0)
! 739: {
! 740: (*s_etat_processus).erreur_systeme = d_es_processus;
! 741: return;
! 742: }
! 743: }
! 744:
! 745: (*s_etat_processus).erreur_systeme =
! 746: d_es_allocation_memoire;
! 747: return;
! 748: }
! 749:
! 750: for(j = 0; j < (*((struct_matrice *) (*s_objet_argument_1)
! 751: .objet)).nombre_colonnes; j++)
! 752: {
! 753: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
! 754: .objet)).tableau)[i][j].partie_reelle =
! 755: ((real8 *) tampon)[j];
! 756: ((complex16 **) (*((struct_matrice *) (*s_objet_argument_1)
! 757: .objet)).tableau)[i][j].partie_imaginaire = 0;
! 758: }
! 759:
! 760: free(tampon);
! 761: }
! 762:
! 763: (*((struct_matrice *) (*s_objet_argument_1).objet)).type = 'C';
! 764: (*s_objet_argument_1).type = MCX;
! 765: }
! 766: }
! 767:
! 768: position = (*((integer8 *) (*s_objet_argument_2).objet));
! 769:
! 770: if (((position < 1) || (position > (integer8) ((*((struct_matrice *)
! 771: (*s_objet_argument_3).objet)).nombre_lignes + 1))) ||
! 772: ((position != 1) && (matrice_vide == d_vrai)))
! 773: {
! 774: if (variable_partagee == d_vrai)
! 775: {
! 776: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 777: .s_liste_variables_partagees).mutex)) != 0)
! 778: {
! 779: (*s_etat_processus).erreur_systeme = d_es_processus;
! 780: return;
! 781: }
! 782: }
! 783:
! 784: liberation(s_etat_processus, s_objet_argument_1);
! 785: liberation(s_etat_processus, s_objet_argument_2);
! 786:
! 787: if (presence_nom == d_faux)
! 788: {
! 789: liberation(s_etat_processus, s_objet_argument_3);
! 790: }
! 791:
! 792: (*s_etat_processus).erreur_execution =
! 793: d_ex_argument_invalide;
! 794: return;
! 795: }
! 796:
! 797: tableau = (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau;
! 798:
! 799: if (matrice_vide == d_faux)
! 800: {
! 801: if (((*((struct_matrice *) (*s_objet_argument_3).objet)).tableau
! 802: = malloc(((*((struct_matrice *) (*s_objet_argument_3).objet))
! 803: .nombre_lignes + 1) * sizeof(void *))) == NULL)
! 804: {
! 805: if (variable_partagee == d_vrai)
! 806: {
! 807: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 808: .s_liste_variables_partagees).mutex)) != 0)
! 809: {
! 810: (*s_etat_processus).erreur_systeme = d_es_processus;
! 811: return;
! 812: }
! 813: }
! 814:
! 815: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 816: return;
! 817: }
! 818:
! 819: if (position == (integer8) (*((struct_matrice *)
! 820: (*s_objet_argument_3).objet)).nombre_lignes)
! 821: {
! 822: for(j = i = 0; i < (*((struct_matrice *)
! 823: (*s_objet_argument_3).objet)).nombre_lignes; i++)
! 824: {
! 825: if (i == (unsigned long) (position - 1))
! 826: {
! 827: (*((struct_matrice *) (*s_objet_argument_3).objet))
! 828: .tableau[i] = (*((struct_matrice *)
! 829: (*s_objet_argument_1).objet)).tableau[0];
! 830: j = 1;
! 831: }
! 832:
! 833: (*((struct_matrice *) (*s_objet_argument_3).objet))
! 834: .tableau[i + j] = tableau[i];
! 835: }
! 836: }
! 837: else
! 838: {
! 839: for(i = 0; i < (*((struct_matrice *) (*s_objet_argument_3).objet))
! 840: .nombre_lignes; i++)
! 841: {
! 842: (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[i]
! 843: = tableau[i];
! 844: }
! 845:
! 846: (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau
! 847: [(*((struct_matrice *) (*s_objet_argument_3).objet))
! 848: .nombre_lignes] = (*((struct_matrice *)
! 849: (*s_objet_argument_1).objet)).tableau[0];
! 850: }
! 851:
! 852: (*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_lignes++;
! 853: }
! 854: else
! 855: {
! 856: if (((*((struct_matrice *) (*s_objet_argument_3).objet)).tableau
! 857: = malloc(sizeof(void *))) == NULL)
! 858: {
! 859: if (variable_partagee == d_vrai)
! 860: {
! 861: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 862: .s_liste_variables_partagees).mutex)) != 0)
! 863: {
! 864: (*s_etat_processus).erreur_systeme = d_es_processus;
! 865: return;
! 866: }
! 867: }
! 868:
! 869: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 870: return;
! 871: }
! 872:
! 873: (*((struct_matrice *) (*s_objet_argument_3).objet)).tableau[0] =
! 874: (*((struct_matrice *) (*s_objet_argument_1).objet)).tableau[0];
! 875: (*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_lignes =
! 876: (*((struct_matrice *) (*s_objet_argument_1).objet))
! 877: .nombre_lignes;
! 878: (*((struct_matrice *) (*s_objet_argument_3).objet)).nombre_colonnes =
! 879: (*((struct_matrice *) (*s_objet_argument_1).objet))
! 880: .nombre_colonnes;
! 881: }
! 882:
! 883: free(tableau);
! 884:
! 885: if (presence_nom == d_faux)
! 886: {
! 887: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 888: s_objet_argument_3) == d_erreur)
! 889: {
! 890: return;
! 891: }
! 892: }
! 893: else
! 894: {
! 895: if (variable_partagee == d_vrai)
! 896: {
! 897: (*(*s_etat_processus).s_liste_variables_partagees).table
! 898: [(*(*s_etat_processus).s_liste_variables_partagees)
! 899: .position_variable].objet = s_objet_argument_3;
! 900:
! 901: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 902: .s_liste_variables_partagees).mutex)) != 0)
! 903: {
! 904: (*s_etat_processus).erreur_systeme = d_es_processus;
! 905: return;
! 906: }
! 907: }
! 908: }
! 909:
! 910: free((*((struct_matrice *) (*s_objet_argument_1).objet)).tableau);
! 911: free((*s_objet_argument_1).objet);
! 912: free(s_objet_argument_1);
! 913:
! 914: liberation(s_etat_processus, s_objet_argument_2);
! 915:
! 916: return;
! 917: }
! 918:
! 919:
! 920: /*
! 921: ================================================================================
! 922: Fonction 'row-'
! 923: ================================================================================
! 924: Entrées : pointeur sur une structure struct_processus
! 925: --------------------------------------------------------------------------------
! 926: Sorties :
! 927: --------------------------------------------------------------------------------
! 928: Effets de bord : néant
! 929: ================================================================================
! 930: */
! 931:
! 932: void
! 933: instruction_row_moins(struct_processus *s_etat_processus)
! 934: {
! 935: integer8 position;
! 936:
! 937: logical1 presence_variable;
! 938: logical1 variable_partagee;
! 939:
! 940: struct_objet *s_copie_argument_2;
! 941: struct_objet *s_objet_argument_1;
! 942: struct_objet *s_objet_argument_2;
! 943: struct_objet *s_objet_resultat;
! 944:
! 945: unsigned long i;
! 946: unsigned long j;
! 947: unsigned long colonne;
! 948:
! 949: void **tableau;
! 950:
! 951: (*s_etat_processus).erreur_execution = d_ex;
! 952:
! 953: if ((*s_etat_processus).affichage_arguments == 'Y')
! 954: {
! 955: printf("\n ROW- ");
! 956:
! 957: if ((*s_etat_processus).langue == 'F')
! 958: {
! 959: printf("(retrait d'une ligne dans une matrice)\n\n");
! 960: }
! 961: else
! 962: {
! 963: printf("(remove a row from a matrix)\n\n");
! 964: }
! 965:
! 966: printf(" 2: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 967: printf(" 1: %s\n", d_INT);
! 968: printf("-> 2: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
! 969: printf(" 1: %s, %s, %s\n\n", d_MIN, d_MRL, d_MCX);
! 970:
! 971: printf(" 2: %s\n", d_NOM);
! 972: printf(" 1: %s\n", d_INT);
! 973: printf("-> 1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 974:
! 975: return;
! 976: }
! 977: else if ((*s_etat_processus).test_instruction == 'Y')
! 978: {
! 979: (*s_etat_processus).nombre_arguments = -1;
! 980: return;
! 981: }
! 982:
! 983: if (test_cfsf(s_etat_processus, 31) == d_vrai)
! 984: {
! 985: if (empilement_pile_last(s_etat_processus, 2) == d_erreur)
! 986: {
! 987: return;
! 988: }
! 989: }
! 990:
! 991: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 992: &s_objet_argument_1) == d_erreur)
! 993: {
! 994: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 995: return;
! 996: }
! 997:
! 998: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 999: &s_objet_argument_2) == d_erreur)
! 1000: {
! 1001: liberation(s_etat_processus, s_objet_argument_1);
! 1002:
! 1003: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1004: return;
! 1005: }
! 1006:
! 1007: variable_partagee = d_faux;
! 1008:
! 1009: if ((*s_objet_argument_2).type == NOM)
! 1010: {
! 1011: presence_variable = d_vrai;
! 1012:
! 1013: if (recherche_variable(s_etat_processus, (*((struct_nom *)
! 1014: (*s_objet_argument_2).objet)).nom) == d_faux)
! 1015: {
! 1016: liberation(s_etat_processus, s_objet_argument_1);
! 1017: liberation(s_etat_processus, s_objet_argument_2);
! 1018:
! 1019: (*s_etat_processus).erreur_systeme = d_es;
! 1020: (*s_etat_processus).erreur_execution = d_ex_variable_non_definie;
! 1021:
! 1022: return;
! 1023: }
! 1024:
! 1025: liberation(s_etat_processus, s_objet_argument_2);
! 1026:
! 1027: if ((*s_etat_processus).s_liste_variables[(*s_etat_processus)
! 1028: .position_variable_courante].variable_verrouillee == d_vrai)
! 1029: {
! 1030: liberation(s_etat_processus, s_objet_argument_1);
! 1031:
! 1032: (*s_etat_processus).erreur_execution = d_ex_variable_verrouillee;
! 1033: return;
! 1034: }
! 1035:
! 1036: s_objet_argument_2 = (*s_etat_processus).s_liste_variables
! 1037: [(*s_etat_processus).position_variable_courante].objet;
! 1038:
! 1039: if (s_objet_argument_2 == NULL)
! 1040: {
! 1041: if (pthread_mutex_lock(&((*(*s_etat_processus)
! 1042: .s_liste_variables_partagees).mutex)) != 0)
! 1043: {
! 1044: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1045: return;
! 1046: }
! 1047:
! 1048: if (recherche_variable_partagee(s_etat_processus,
! 1049: (*s_etat_processus).s_liste_variables
! 1050: [(*s_etat_processus).position_variable_courante].nom,
! 1051: (*s_etat_processus).s_liste_variables
! 1052: [(*s_etat_processus).position_variable_courante]
! 1053: .variable_partagee, (*s_etat_processus).s_liste_variables
! 1054: [(*s_etat_processus).position_variable_courante].origine)
! 1055: == d_faux)
! 1056: {
! 1057: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1058: .s_liste_variables_partagees).mutex)) != 0)
! 1059: {
! 1060: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1061: return;
! 1062: }
! 1063:
! 1064: (*s_etat_processus).erreur_systeme = d_es;
! 1065: (*s_etat_processus).erreur_execution =
! 1066: d_ex_variable_non_definie;
! 1067:
! 1068: liberation(s_etat_processus, s_objet_argument_1);
! 1069:
! 1070: return;
! 1071: }
! 1072:
! 1073: s_objet_argument_2 = (*(*s_etat_processus)
! 1074: .s_liste_variables_partagees).table
! 1075: [(*(*s_etat_processus).s_liste_variables_partagees)
! 1076: .position_variable].objet;
! 1077: variable_partagee = d_vrai;
! 1078: }
! 1079:
! 1080: if ((s_copie_argument_2 = copie_objet(s_etat_processus,
! 1081: s_objet_argument_2, 'Q')) == NULL)
! 1082: {
! 1083: if (variable_partagee == d_vrai)
! 1084: {
! 1085: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1086: .s_liste_variables_partagees).mutex)) != 0)
! 1087: {
! 1088: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1089: return;
! 1090: }
! 1091: }
! 1092:
! 1093: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1094: return;
! 1095: }
! 1096:
! 1097: liberation(s_etat_processus, s_objet_argument_2);
! 1098: s_objet_argument_2 = s_copie_argument_2;
! 1099:
! 1100: (*s_etat_processus).s_liste_variables[(*s_etat_processus)
! 1101: .position_variable_courante].objet = s_objet_argument_2;
! 1102: }
! 1103: else
! 1104: {
! 1105: presence_variable = d_faux;
! 1106:
! 1107: if ((s_copie_argument_2 = copie_objet(s_etat_processus,
! 1108: s_objet_argument_2, 'Q')) == NULL)
! 1109: {
! 1110: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1111: return;
! 1112: }
! 1113:
! 1114: liberation(s_etat_processus, s_objet_argument_2);
! 1115: s_objet_argument_2 = s_copie_argument_2;
! 1116: }
! 1117:
! 1118: if (((*s_objet_argument_2).type == MIN) ||
! 1119: ((*s_objet_argument_2).type == MRL) ||
! 1120: ((*s_objet_argument_2).type == MCX))
! 1121: {
! 1122: if ((*s_objet_argument_1).type == INT)
! 1123: {
! 1124: position = (*((integer8 *) (*s_objet_argument_1).objet));
! 1125:
! 1126: if ((position <= 0) || (position > (integer8) (*((struct_matrice *)
! 1127: (*s_objet_argument_2).objet)).nombre_lignes))
! 1128: {
! 1129: if (variable_partagee == d_vrai)
! 1130: {
! 1131: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1132: .s_liste_variables_partagees).mutex)) != 0)
! 1133: {
! 1134: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1135: return;
! 1136: }
! 1137: }
! 1138:
! 1139: liberation(s_etat_processus, s_objet_argument_1);
! 1140:
! 1141: if (presence_variable == d_faux)
! 1142: {
! 1143: liberation(s_etat_processus, s_objet_argument_2);
! 1144: }
! 1145:
! 1146: (*s_etat_processus).erreur_execution =
! 1147: d_ex_argument_invalide;
! 1148: return;
! 1149: }
! 1150:
! 1151: if ((s_objet_resultat = allocation(s_etat_processus,
! 1152: (*s_objet_argument_2).type)) == NULL)
! 1153: {
! 1154: if (variable_partagee == d_vrai)
! 1155: {
! 1156: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1157: .s_liste_variables_partagees).mutex)) != 0)
! 1158: {
! 1159: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1160: return;
! 1161: }
! 1162: }
! 1163:
! 1164: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1165: return;
! 1166: }
! 1167:
! 1168: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_lignes =
! 1169: 1;
! 1170: (*((struct_matrice *) (*s_objet_resultat).objet)).nombre_colonnes =
! 1171: (*((struct_matrice *) (*s_objet_argument_2).objet))
! 1172: .nombre_colonnes;
! 1173:
! 1174: if (((*((struct_matrice *) (*s_objet_resultat).objet)).tableau =
! 1175: malloc(sizeof(void *))) == NULL)
! 1176: {
! 1177: if (variable_partagee == d_vrai)
! 1178: {
! 1179: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1180: .s_liste_variables_partagees).mutex)) != 0)
! 1181: {
! 1182: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1183: return;
! 1184: }
! 1185: }
! 1186:
! 1187: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1188: return;
! 1189: }
! 1190:
! 1191: (*((struct_matrice *) (*s_objet_resultat).objet)).tableau[0] =
! 1192: (*((struct_matrice *) (*s_objet_argument_2).objet)).tableau
! 1193: [colonne = position - 1];
! 1194:
! 1195: if ((*((struct_matrice *) (*s_objet_argument_2).objet))
! 1196: .nombre_lignes > 1)
! 1197: {
! 1198: tableau = (*((struct_matrice *) (*s_objet_argument_2).objet))
! 1199: .tableau;
! 1200:
! 1201: if (((*((struct_matrice *) (*s_objet_argument_2).objet)).tableau
! 1202: = malloc(((*((struct_matrice *) (*s_objet_argument_2)
! 1203: .objet)).nombre_lignes - 1) * sizeof(void *))) == NULL)
! 1204: {
! 1205: if (variable_partagee == d_vrai)
! 1206: {
! 1207: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1208: .s_liste_variables_partagees).mutex)) != 0)
! 1209: {
! 1210: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1211: return;
! 1212: }
! 1213: }
! 1214:
! 1215: (*s_etat_processus).erreur_systeme =
! 1216: d_es_allocation_memoire;
! 1217: return;
! 1218: }
! 1219:
! 1220: (*((struct_matrice *) (*s_objet_argument_2).objet))
! 1221: .nombre_lignes--;
! 1222:
! 1223: for(i = j = 0; i < (*((struct_matrice *) (*s_objet_argument_2)
! 1224: .objet)).nombre_lignes; i++)
! 1225: {
! 1226: if (i == colonne)
! 1227: {
! 1228: j = 1;
! 1229: }
! 1230:
! 1231: (*((struct_matrice *) (*s_objet_argument_2).objet))
! 1232: .tableau[i] = tableau[i + j];
! 1233: }
! 1234:
! 1235: free(tableau);
! 1236: }
! 1237: else
! 1238: {
! 1239: if (((*((struct_matrice *) (*s_objet_argument_2).objet))
! 1240: .tableau[0] = malloc(0)) == NULL)
! 1241: {
! 1242: if (variable_partagee == d_vrai)
! 1243: {
! 1244: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1245: .s_liste_variables_partagees).mutex)) != 0)
! 1246: {
! 1247: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1248: return;
! 1249: }
! 1250: }
! 1251:
! 1252: (*s_etat_processus).erreur_systeme =
! 1253: d_es_allocation_memoire;
! 1254: return;
! 1255: }
! 1256:
! 1257: (*((struct_matrice *) (*s_objet_argument_2).objet))
! 1258: .nombre_colonnes = 0;
! 1259: }
! 1260: }
! 1261: else
! 1262: {
! 1263: if (variable_partagee == d_vrai)
! 1264: {
! 1265: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1266: .s_liste_variables_partagees).mutex)) != 0)
! 1267: {
! 1268: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1269: return;
! 1270: }
! 1271: }
! 1272:
! 1273: liberation(s_etat_processus, s_objet_argument_1);
! 1274:
! 1275: if (presence_variable == d_faux)
! 1276: {
! 1277: liberation(s_etat_processus, s_objet_argument_2);
! 1278: }
! 1279:
! 1280: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 1281: return;
! 1282: }
! 1283: }
! 1284: else
! 1285: {
! 1286: if (variable_partagee == d_vrai)
! 1287: {
! 1288: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1289: .s_liste_variables_partagees).mutex)) != 0)
! 1290: {
! 1291: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1292: return;
! 1293: }
! 1294: }
! 1295:
! 1296: liberation(s_etat_processus, s_objet_argument_1);
! 1297:
! 1298: if (presence_variable == d_faux)
! 1299: {
! 1300: liberation(s_etat_processus, s_objet_argument_2);
! 1301: }
! 1302:
! 1303: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 1304: return;
! 1305: }
! 1306:
! 1307: liberation(s_etat_processus, s_objet_argument_1);
! 1308:
! 1309: if (presence_variable == d_faux)
! 1310: {
! 1311: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1312: s_objet_argument_2) == d_erreur)
! 1313: {
! 1314: return;
! 1315: }
! 1316: }
! 1317: else if (variable_partagee == d_vrai)
! 1318: {
! 1319: (*(*s_etat_processus).s_liste_variables_partagees).table
! 1320: [(*(*s_etat_processus).s_liste_variables_partagees)
! 1321: .position_variable].objet = s_objet_argument_2;
! 1322:
! 1323: if (pthread_mutex_unlock(&((*(*s_etat_processus)
! 1324: .s_liste_variables_partagees).mutex)) != 0)
! 1325: {
! 1326: (*s_etat_processus).erreur_systeme = d_es_processus;
! 1327: return;
! 1328: }
! 1329: }
! 1330:
! 1331: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1332: s_objet_resultat) == d_erreur)
! 1333: {
! 1334: return;
! 1335: }
! 1336:
! 1337: return;
! 1338: }
! 1339:
! 1340:
! 1341: /*
! 1342: ================================================================================
! 1343: Fonction 'rci'
! 1344: ================================================================================
! 1345: Entrées : pointeur sur une structure struct_processus
! 1346: --------------------------------------------------------------------------------
! 1347: Sorties :
! 1348: --------------------------------------------------------------------------------
! 1349: Effets de bord : néant
! 1350: ================================================================================
! 1351: */
! 1352:
! 1353: void
! 1354: instruction_rci(struct_processus *s_etat_processus)
! 1355: {
! 1356: logical1 last_valide;
! 1357:
! 1358: struct_objet *s_objet_argument_1;
! 1359: struct_objet *s_objet_argument_2;
! 1360: struct_objet *s_objet_argument_3;
! 1361: struct_objet *tampon;
! 1362:
! 1363: (*s_etat_processus).erreur_execution = d_ex;
! 1364:
! 1365: if ((*s_etat_processus).affichage_arguments == 'Y')
! 1366: {
! 1367: printf("\n RCI ");
! 1368:
! 1369: if ((*s_etat_processus).langue == 'F')
! 1370: {
! 1371: printf("(multiplication d'une ligne d'une matrice)\n\n");
! 1372: }
! 1373: else
! 1374: {
! 1375: printf("(multiply a row in a matrix)\n\n");
! 1376: }
! 1377:
! 1378: printf(" 3: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 1379: printf(" 2: %s, %s, %s\n", d_INT, d_REL, d_CPL);
! 1380: printf(" 1: %s\n", d_INT);
! 1381: printf("-> 1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 1382:
! 1383: return;
! 1384: }
! 1385: else if ((*s_etat_processus).test_instruction == 'Y')
! 1386: {
! 1387: (*s_etat_processus).nombre_arguments = -1;
! 1388: return;
! 1389: }
! 1390:
! 1391: if ((last_valide = test_cfsf(s_etat_processus, 31)) == d_vrai)
! 1392: {
! 1393: if (empilement_pile_last(s_etat_processus, 3) == d_erreur)
! 1394: {
! 1395: return;
! 1396: }
! 1397:
! 1398: cf(s_etat_processus, 31);
! 1399: }
! 1400:
! 1401: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1402: &s_objet_argument_1) == d_erreur)
! 1403: {
! 1404: if (last_valide == d_vrai)
! 1405: {
! 1406: sf(s_etat_processus, 31);
! 1407: }
! 1408:
! 1409: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1410: return;
! 1411: }
! 1412:
! 1413: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1414: &s_objet_argument_2) == d_erreur)
! 1415: {
! 1416: if (last_valide == d_vrai)
! 1417: {
! 1418: sf(s_etat_processus, 31);
! 1419: }
! 1420:
! 1421: liberation(s_etat_processus, s_objet_argument_1);
! 1422:
! 1423: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1424: return;
! 1425: }
! 1426:
! 1427: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1428: &s_objet_argument_3) == d_erreur)
! 1429: {
! 1430: if (last_valide == d_vrai)
! 1431: {
! 1432: sf(s_etat_processus, 31);
! 1433: }
! 1434:
! 1435: liberation(s_etat_processus, s_objet_argument_1);
! 1436: liberation(s_etat_processus, s_objet_argument_2);
! 1437:
! 1438: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1439: return;
! 1440: }
! 1441:
! 1442: if ((((*s_objet_argument_3).type == MIN) ||
! 1443: ((*s_objet_argument_3).type == MRL) ||
! 1444: ((*s_objet_argument_3).type == MCX)) &&
! 1445: (((*s_objet_argument_2).type == INT) ||
! 1446: ((*s_objet_argument_2).type == REL) ||
! 1447: ((*s_objet_argument_2).type == CPL)) &&
! 1448: ((*s_objet_argument_1).type == INT))
! 1449: {
! 1450: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1451: s_objet_argument_3) == d_erreur)
! 1452: {
! 1453: if (last_valide == d_vrai)
! 1454: {
! 1455: sf(s_etat_processus, 31);
! 1456: }
! 1457:
! 1458: return;
! 1459: }
! 1460:
! 1461: tampon = s_objet_argument_1;
! 1462:
! 1463: if ((s_objet_argument_1 = allocation(s_etat_processus, LST)) == NULL)
! 1464: {
! 1465: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1466: return;
! 1467: }
! 1468:
! 1469: if (((*s_objet_argument_1).objet =
! 1470: allocation_maillon(s_etat_processus)) == NULL)
! 1471: {
! 1472: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1473: return;
! 1474: }
! 1475:
! 1476: (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).donnee =
! 1477: tampon;
! 1478: (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).suivant =
! 1479: NULL;
! 1480:
! 1481: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1482: s_objet_argument_1) == d_erreur)
! 1483: {
! 1484: if (last_valide == d_vrai)
! 1485: {
! 1486: sf(s_etat_processus, 31);
! 1487: }
! 1488:
! 1489: return;
! 1490: }
! 1491:
! 1492: instruction_dup2(s_etat_processus);
! 1493:
! 1494: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1495: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1496: ((*s_etat_processus).exception != d_ep))
! 1497: {
! 1498: liberation(s_etat_processus, s_objet_argument_1);
! 1499: liberation(s_etat_processus, s_objet_argument_2);
! 1500: liberation(s_etat_processus, s_objet_argument_3);
! 1501:
! 1502: if (last_valide == d_vrai)
! 1503: {
! 1504: sf(s_etat_processus, 31);
! 1505: }
! 1506:
! 1507: return;
! 1508: }
! 1509:
! 1510: instruction_getr(s_etat_processus);
! 1511:
! 1512: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1513: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1514: ((*s_etat_processus).exception != d_ep))
! 1515: {
! 1516: liberation(s_etat_processus, s_objet_argument_1);
! 1517: liberation(s_etat_processus, s_objet_argument_2);
! 1518: liberation(s_etat_processus, s_objet_argument_3);
! 1519:
! 1520: if (last_valide == d_vrai)
! 1521: {
! 1522: sf(s_etat_processus, 31);
! 1523: }
! 1524:
! 1525: return;
! 1526: }
! 1527:
! 1528: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1529: s_objet_argument_2) == d_erreur)
! 1530: {
! 1531: return;
! 1532: }
! 1533:
! 1534: instruction_multiplication(s_etat_processus);
! 1535:
! 1536: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1537: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1538: ((*s_etat_processus).exception != d_ep))
! 1539: {
! 1540: liberation(s_etat_processus, s_objet_argument_1);
! 1541: liberation(s_etat_processus, s_objet_argument_2);
! 1542: liberation(s_etat_processus, s_objet_argument_3);
! 1543:
! 1544: if (last_valide == d_vrai)
! 1545: {
! 1546: sf(s_etat_processus, 31);
! 1547: }
! 1548:
! 1549: return;
! 1550: }
! 1551:
! 1552: instruction_putr(s_etat_processus);
! 1553:
! 1554: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1555: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1556: ((*s_etat_processus).exception != d_ep))
! 1557: {
! 1558: liberation(s_etat_processus, s_objet_argument_1);
! 1559: liberation(s_etat_processus, s_objet_argument_2);
! 1560: liberation(s_etat_processus, s_objet_argument_3);
! 1561:
! 1562: if (last_valide == d_vrai)
! 1563: {
! 1564: sf(s_etat_processus, 31);
! 1565: }
! 1566:
! 1567: return;
! 1568: }
! 1569: }
! 1570: else
! 1571: {
! 1572: liberation(s_etat_processus, s_objet_argument_1);
! 1573: liberation(s_etat_processus, s_objet_argument_2);
! 1574: liberation(s_etat_processus, s_objet_argument_3);
! 1575:
! 1576: if (last_valide == d_vrai)
! 1577: {
! 1578: sf(s_etat_processus, 31);
! 1579: }
! 1580:
! 1581: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 1582: return;
! 1583: }
! 1584:
! 1585: if (last_valide == d_vrai)
! 1586: {
! 1587: sf(s_etat_processus, 31);
! 1588: }
! 1589:
! 1590: return;
! 1591: }
! 1592:
! 1593:
! 1594: /*
! 1595: ================================================================================
! 1596: Fonction 'rcij'
! 1597: ================================================================================
! 1598: Entrées : pointeur sur une structure struct_processus
! 1599: --------------------------------------------------------------------------------
! 1600: Sorties :
! 1601: --------------------------------------------------------------------------------
! 1602: Effets de bord : néant
! 1603: ================================================================================
! 1604: */
! 1605:
! 1606: void
! 1607: instruction_rcij(struct_processus *s_etat_processus)
! 1608: {
! 1609: logical1 last_valide;
! 1610:
! 1611: struct_objet *s_objet_argument_1;
! 1612: struct_objet *s_objet_argument_2;
! 1613: struct_objet *s_objet_argument_3;
! 1614: struct_objet *s_objet_argument_4;
! 1615: struct_objet *tampon;
! 1616:
! 1617: (*s_etat_processus).erreur_execution = d_ex;
! 1618:
! 1619: if ((*s_etat_processus).affichage_arguments == 'Y')
! 1620: {
! 1621: printf("\n RCIJ ");
! 1622:
! 1623: if ((*s_etat_processus).langue == 'F')
! 1624: {
! 1625: printf("(multiplication puis ajout d'une ligne d'une matrice)\n\n");
! 1626: }
! 1627: else
! 1628: {
! 1629: printf("(multiply and add a row in a matrix)\n\n");
! 1630: }
! 1631:
! 1632: printf(" 4: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 1633: printf(" 3: %s, %s, %s\n", d_INT, d_REL, d_CPL);
! 1634: printf(" 2: %s\n", d_INT);
! 1635: printf(" 1: %s\n", d_INT);
! 1636: printf("-> 1: %s, %s, %s\n", d_MIN, d_MRL, d_MCX);
! 1637:
! 1638: return;
! 1639: }
! 1640: else if ((*s_etat_processus).test_instruction == 'Y')
! 1641: {
! 1642: (*s_etat_processus).nombre_arguments = -1;
! 1643: return;
! 1644: }
! 1645:
! 1646: if ((last_valide = test_cfsf(s_etat_processus, 31)) == d_vrai)
! 1647: {
! 1648: if (empilement_pile_last(s_etat_processus, 4) == d_erreur)
! 1649: {
! 1650: return;
! 1651: }
! 1652:
! 1653: cf(s_etat_processus, 31);
! 1654: }
! 1655:
! 1656: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1657: &s_objet_argument_1) == d_erreur)
! 1658: {
! 1659: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1660: return;
! 1661: }
! 1662:
! 1663: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1664: &s_objet_argument_2) == d_erreur)
! 1665: {
! 1666: liberation(s_etat_processus, s_objet_argument_1);
! 1667:
! 1668: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1669: return;
! 1670: }
! 1671:
! 1672: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1673: &s_objet_argument_3) == d_erreur)
! 1674: {
! 1675: liberation(s_etat_processus, s_objet_argument_1);
! 1676: liberation(s_etat_processus, s_objet_argument_2);
! 1677:
! 1678: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1679: return;
! 1680: }
! 1681:
! 1682: if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1683: &s_objet_argument_4) == d_erreur)
! 1684: {
! 1685: liberation(s_etat_processus, s_objet_argument_1);
! 1686: liberation(s_etat_processus, s_objet_argument_2);
! 1687: liberation(s_etat_processus, s_objet_argument_3);
! 1688:
! 1689: (*s_etat_processus).erreur_execution = d_ex_manque_argument;
! 1690: return;
! 1691: }
! 1692:
! 1693: if ((((*s_objet_argument_4).type == MIN) ||
! 1694: ((*s_objet_argument_4).type == MRL) ||
! 1695: ((*s_objet_argument_4).type == MCX)) &&
! 1696: (((*s_objet_argument_3).type == INT) ||
! 1697: ((*s_objet_argument_3).type == REL) ||
! 1698: ((*s_objet_argument_3).type == CPL)) &&
! 1699: ((*s_objet_argument_2).type == INT) &&
! 1700: ((*s_objet_argument_1).type == INT))
! 1701: {
! 1702: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1703: s_objet_argument_4) == d_erreur)
! 1704: {
! 1705: return;
! 1706: }
! 1707:
! 1708: tampon = s_objet_argument_1;
! 1709:
! 1710: if ((s_objet_argument_1 = allocation(s_etat_processus, LST)) == NULL)
! 1711: {
! 1712: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1713: return;
! 1714: }
! 1715:
! 1716: if (((*s_objet_argument_1).objet =
! 1717: allocation_maillon(s_etat_processus)) == NULL)
! 1718: {
! 1719: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1720: return;
! 1721: }
! 1722:
! 1723: (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).donnee =
! 1724: tampon;
! 1725: (*((struct_liste_chainee *) (*s_objet_argument_1).objet)).suivant =
! 1726: NULL;
! 1727:
! 1728: tampon = s_objet_argument_2;
! 1729:
! 1730: if ((s_objet_argument_2 = allocation(s_etat_processus, LST)) == NULL)
! 1731: {
! 1732: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1733: return;
! 1734: }
! 1735:
! 1736: if (((*s_objet_argument_2).objet =
! 1737: allocation_maillon(s_etat_processus)) == NULL)
! 1738: {
! 1739: (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
! 1740: return;
! 1741: }
! 1742:
! 1743: (*((struct_liste_chainee *) (*s_objet_argument_2).objet)).donnee =
! 1744: tampon;
! 1745: (*((struct_liste_chainee *) (*s_objet_argument_2).objet)).suivant =
! 1746: NULL;
! 1747:
! 1748: instruction_dup(s_etat_processus);
! 1749:
! 1750: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1751: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1752: ((*s_etat_processus).exception != d_ep))
! 1753: {
! 1754: liberation(s_etat_processus, s_objet_argument_1);
! 1755: liberation(s_etat_processus, s_objet_argument_2);
! 1756: liberation(s_etat_processus, s_objet_argument_3);
! 1757: liberation(s_etat_processus, s_objet_argument_4);
! 1758:
! 1759: if (last_valide == d_vrai)
! 1760: {
! 1761: sf(s_etat_processus, 31);
! 1762: }
! 1763:
! 1764: return;
! 1765: }
! 1766:
! 1767: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1768: s_objet_argument_2) == d_erreur)
! 1769: {
! 1770: return;
! 1771: }
! 1772:
! 1773: instruction_getr(s_etat_processus);
! 1774:
! 1775: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1776: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1777: ((*s_etat_processus).exception != d_ep))
! 1778: {
! 1779: liberation(s_etat_processus, s_objet_argument_1);
! 1780: liberation(s_etat_processus, s_objet_argument_2);
! 1781: liberation(s_etat_processus, s_objet_argument_3);
! 1782: liberation(s_etat_processus, s_objet_argument_4);
! 1783:
! 1784: if (last_valide == d_vrai)
! 1785: {
! 1786: sf(s_etat_processus, 31);
! 1787: }
! 1788:
! 1789: return;
! 1790: }
! 1791:
! 1792: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1793: s_objet_argument_3) == d_erreur)
! 1794: {
! 1795: return;
! 1796: }
! 1797:
! 1798: instruction_multiplication(s_etat_processus);
! 1799:
! 1800: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1801: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1802: ((*s_etat_processus).exception != d_ep))
! 1803: {
! 1804: liberation(s_etat_processus, s_objet_argument_1);
! 1805: liberation(s_etat_processus, s_objet_argument_2);
! 1806: liberation(s_etat_processus, s_objet_argument_3);
! 1807: liberation(s_etat_processus, s_objet_argument_4);
! 1808:
! 1809: if (last_valide == d_vrai)
! 1810: {
! 1811: sf(s_etat_processus, 31);
! 1812: }
! 1813:
! 1814: return;
! 1815: }
! 1816:
! 1817: instruction_over(s_etat_processus);
! 1818:
! 1819: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1820: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1821: ((*s_etat_processus).exception != d_ep))
! 1822: {
! 1823: liberation(s_etat_processus, s_objet_argument_1);
! 1824: liberation(s_etat_processus, s_objet_argument_2);
! 1825: liberation(s_etat_processus, s_objet_argument_3);
! 1826: liberation(s_etat_processus, s_objet_argument_4);
! 1827:
! 1828: if (last_valide == d_vrai)
! 1829: {
! 1830: sf(s_etat_processus, 31);
! 1831: }
! 1832:
! 1833: return;
! 1834: }
! 1835:
! 1836: if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
! 1837: s_objet_argument_1) == d_erreur)
! 1838: {
! 1839: return;
! 1840: }
! 1841:
! 1842: instruction_swap(s_etat_processus);
! 1843:
! 1844: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1845: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1846: ((*s_etat_processus).exception != d_ep))
! 1847: {
! 1848: liberation(s_etat_processus, s_objet_argument_1);
! 1849: liberation(s_etat_processus, s_objet_argument_2);
! 1850: liberation(s_etat_processus, s_objet_argument_3);
! 1851: liberation(s_etat_processus, s_objet_argument_4);
! 1852:
! 1853: if (last_valide == d_vrai)
! 1854: {
! 1855: sf(s_etat_processus, 31);
! 1856: }
! 1857:
! 1858: return;
! 1859: }
! 1860:
! 1861: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1862: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1863: ((*s_etat_processus).exception != d_ep))
! 1864: {
! 1865: liberation(s_etat_processus, s_objet_argument_1);
! 1866: liberation(s_etat_processus, s_objet_argument_2);
! 1867: liberation(s_etat_processus, s_objet_argument_3);
! 1868: liberation(s_etat_processus, s_objet_argument_4);
! 1869:
! 1870: if (last_valide == d_vrai)
! 1871: {
! 1872: sf(s_etat_processus, 31);
! 1873: }
! 1874:
! 1875: return;
! 1876: }
! 1877:
! 1878: instruction_over(s_etat_processus);
! 1879:
! 1880: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1881: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1882: ((*s_etat_processus).exception != d_ep))
! 1883: {
! 1884: liberation(s_etat_processus, s_objet_argument_1);
! 1885: liberation(s_etat_processus, s_objet_argument_2);
! 1886: liberation(s_etat_processus, s_objet_argument_3);
! 1887: liberation(s_etat_processus, s_objet_argument_4);
! 1888:
! 1889: if (last_valide == d_vrai)
! 1890: {
! 1891: sf(s_etat_processus, 31);
! 1892: }
! 1893:
! 1894: return;
! 1895: }
! 1896:
! 1897: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1898: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1899: ((*s_etat_processus).exception != d_ep))
! 1900: {
! 1901: liberation(s_etat_processus, s_objet_argument_1);
! 1902: liberation(s_etat_processus, s_objet_argument_2);
! 1903: liberation(s_etat_processus, s_objet_argument_3);
! 1904: liberation(s_etat_processus, s_objet_argument_4);
! 1905:
! 1906: if (last_valide == d_vrai)
! 1907: {
! 1908: sf(s_etat_processus, 31);
! 1909: }
! 1910:
! 1911: return;
! 1912: }
! 1913:
! 1914: instruction_getr(s_etat_processus);
! 1915:
! 1916: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1917: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1918: ((*s_etat_processus).exception != d_ep))
! 1919: {
! 1920: liberation(s_etat_processus, s_objet_argument_1);
! 1921: liberation(s_etat_processus, s_objet_argument_2);
! 1922: liberation(s_etat_processus, s_objet_argument_3);
! 1923: liberation(s_etat_processus, s_objet_argument_4);
! 1924:
! 1925: if (last_valide == d_vrai)
! 1926: {
! 1927: sf(s_etat_processus, 31);
! 1928: }
! 1929:
! 1930: return;
! 1931: }
! 1932:
! 1933: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1934: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1935: ((*s_etat_processus).exception != d_ep))
! 1936: {
! 1937: liberation(s_etat_processus, s_objet_argument_1);
! 1938: liberation(s_etat_processus, s_objet_argument_2);
! 1939: liberation(s_etat_processus, s_objet_argument_3);
! 1940: liberation(s_etat_processus, s_objet_argument_4);
! 1941:
! 1942: if (last_valide == d_vrai)
! 1943: {
! 1944: sf(s_etat_processus, 31);
! 1945: }
! 1946:
! 1947: return;
! 1948: }
! 1949:
! 1950: instruction_rot(s_etat_processus);
! 1951:
! 1952: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1953: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1954: ((*s_etat_processus).exception != d_ep))
! 1955: {
! 1956: liberation(s_etat_processus, s_objet_argument_1);
! 1957: liberation(s_etat_processus, s_objet_argument_2);
! 1958: liberation(s_etat_processus, s_objet_argument_3);
! 1959: liberation(s_etat_processus, s_objet_argument_4);
! 1960:
! 1961: if (last_valide == d_vrai)
! 1962: {
! 1963: sf(s_etat_processus, 31);
! 1964: }
! 1965:
! 1966: return;
! 1967: }
! 1968:
! 1969: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1970: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1971: ((*s_etat_processus).exception != d_ep))
! 1972: {
! 1973: liberation(s_etat_processus, s_objet_argument_1);
! 1974: liberation(s_etat_processus, s_objet_argument_2);
! 1975: liberation(s_etat_processus, s_objet_argument_3);
! 1976: liberation(s_etat_processus, s_objet_argument_4);
! 1977:
! 1978: if (last_valide == d_vrai)
! 1979: {
! 1980: sf(s_etat_processus, 31);
! 1981: }
! 1982:
! 1983: return;
! 1984: }
! 1985:
! 1986: instruction_plus(s_etat_processus);
! 1987:
! 1988: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 1989: ((*s_etat_processus).erreur_execution != d_ex) ||
! 1990: ((*s_etat_processus).exception != d_ep))
! 1991: {
! 1992: liberation(s_etat_processus, s_objet_argument_1);
! 1993: liberation(s_etat_processus, s_objet_argument_2);
! 1994: liberation(s_etat_processus, s_objet_argument_3);
! 1995: liberation(s_etat_processus, s_objet_argument_4);
! 1996:
! 1997: if (last_valide == d_vrai)
! 1998: {
! 1999: sf(s_etat_processus, 31);
! 2000: }
! 2001:
! 2002: return;
! 2003: }
! 2004:
! 2005: instruction_putr(s_etat_processus);
! 2006:
! 2007: if (((*s_etat_processus).erreur_systeme != d_es) ||
! 2008: ((*s_etat_processus).erreur_execution != d_ex) ||
! 2009: ((*s_etat_processus).exception != d_ep))
! 2010: {
! 2011: liberation(s_etat_processus, s_objet_argument_1);
! 2012: liberation(s_etat_processus, s_objet_argument_2);
! 2013: liberation(s_etat_processus, s_objet_argument_3);
! 2014: liberation(s_etat_processus, s_objet_argument_4);
! 2015:
! 2016: if (last_valide == d_vrai)
! 2017: {
! 2018: sf(s_etat_processus, 31);
! 2019: }
! 2020:
! 2021: return;
! 2022: }
! 2023: }
! 2024: else
! 2025: {
! 2026: liberation(s_etat_processus, s_objet_argument_1);
! 2027: liberation(s_etat_processus, s_objet_argument_2);
! 2028: liberation(s_etat_processus, s_objet_argument_3);
! 2029: liberation(s_etat_processus, s_objet_argument_4);
! 2030:
! 2031: if (last_valide == d_vrai)
! 2032: {
! 2033: sf(s_etat_processus, 31);
! 2034: }
! 2035:
! 2036: (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
! 2037: return;
! 2038: }
! 2039:
! 2040: if (last_valide == d_vrai)
! 2041: {
! 2042: sf(s_etat_processus, 31);
! 2043: }
! 2044:
! 2045: return;
! 2046: }
! 2047:
! 2048: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>