Annotation of rpl/src/instructions_p6.c, revision 1.65

1.1       bertrand    1: /*
                      2: ================================================================================
1.64      bertrand    3:   RPL/2 (R) version 4.1.32
1.65    ! bertrand    4:   Copyright (C) 1989-2020 Dr. BERTRAND Joël
1.1       bertrand    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: 
1.11      bertrand   23: #include "rpl-conv.h"
1.1       bertrand   24: 
                     25: 
                     26: /*
                     27: ================================================================================
                     28:   Fonction 'ppar'
                     29: ================================================================================
                     30:   Entrées :
                     31: --------------------------------------------------------------------------------
                     32:   Sorties :
                     33: --------------------------------------------------------------------------------
                     34:   Effets de bord : néant
                     35: ================================================================================
                     36: */
                     37: 
                     38: void
                     39: instruction_ppar(struct_processus *s_etat_processus)
                     40: {
                     41:    struct_liste_chainee            *l_ancienne_base;
                     42:    struct_liste_chainee            *l_nouvelle_base;
                     43: 
                     44:    struct_objet                    *s_objet_resultat;
                     45: 
                     46:    /*
                     47:     * { { Xmin Xmax } { Ymin Ymax } { Zmin Zmax }
                     48:     *      INDEP DEPND RES { EYEPT } }
                     49:     * { "automatic" { Ymin Ymax } "automatic" INDEP DEPND RES { EYEPT } }
                     50:     */
                     51: 
                     52:    (*s_etat_processus).erreur_execution = d_ex;
                     53: 
                     54:    if ((*s_etat_processus).affichage_arguments == 'Y')
                     55:    {
                     56:        printf("\n  PPAR ");
                     57: 
                     58:        if ((*s_etat_processus).langue == 'F')
                     59:        {
                     60:            printf("(paramètres graphiques)\n\n");
                     61:        }
                     62:        else
                     63:        {
                     64:            printf("(graphical parameters)\n\n");
                     65:        }
                     66: 
                     67:        printf("->  1: %s\n", d_LST);
                     68: 
                     69:        return;
                     70:    }
                     71:    else if ((*s_etat_processus).test_instruction == 'Y')
                     72:    {
                     73:        (*s_etat_processus).nombre_arguments = -1;
                     74:        return;
                     75:    }
                     76: 
                     77:    if (test_cfsf(s_etat_processus, 31) == d_vrai)
                     78:    {
                     79:        if (empilement_pile_last(s_etat_processus, 0) == d_erreur)
                     80:        {
                     81:            return;
                     82:        }
                     83:    }
                     84: 
                     85:    if ((s_objet_resultat = allocation(s_etat_processus, LST)) == NULL)
                     86:    {
                     87:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                     88:        return;
                     89:    }
                     90: 
                     91:    (*s_objet_resultat).objet = NULL;
                     92:    l_ancienne_base = (*s_objet_resultat).objet;
                     93: 
                     94:    // Paramètres des courbes de niveau
                     95: 
                     96:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                     97:    {
                     98:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                     99:        return;
                    100:    }
                    101: 
                    102:    if (((*l_nouvelle_base).donnee = copie_objet(s_etat_processus,
                    103:            (*s_etat_processus).parametres_courbes_de_niveau, 'O')) == NULL)
                    104:    {
                    105:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    106:        return;
                    107:    }
                    108: 
                    109:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    110:    (*s_objet_resultat).objet = l_nouvelle_base;
                    111:    l_ancienne_base = (*s_objet_resultat).objet;
                    112: 
                    113:    // Point de vue
                    114: 
                    115:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    116:    {
                    117:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    118:        return;
                    119:    }
                    120: 
                    121:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, LST))
                    122:            == NULL)
                    123:    {
                    124:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    125:        return;
                    126:    }
                    127: 
                    128:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    129: 
                    130:    if (((*(*l_nouvelle_base).donnee).objet =
                    131:            allocation_maillon(s_etat_processus)) == NULL)
                    132:    {
                    133:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    134:        return;
                    135:    }
                    136: 
                    137:    if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet)).donnee
                    138:            = allocation(s_etat_processus, REL)) == NULL)
                    139:    {
                    140:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    141:        return;
                    142:    }
                    143: 
                    144:    (*((real8 *) (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    145:            .objet)).donnee).objet)) = (*s_etat_processus).point_de_vue_theta;
                    146: 
                    147:    if (test_cfsf(s_etat_processus, 60) == d_faux)
                    148:    {
                    149:        conversion_radians_vers_degres((real8 *) (*(*((struct_liste_chainee *)
                    150:                (*(*l_nouvelle_base).donnee).objet)).donnee).objet);
                    151:    }
                    152: 
                    153:    if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    154:            .suivant = allocation_maillon(s_etat_processus)) == NULL)
                    155:    {
                    156:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    157:        return;
                    158:    }
                    159: 
                    160:    if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    161:            .suivant).donnee = allocation(s_etat_processus, REL)) == NULL)
                    162:    {
                    163:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    164:        return;
                    165:    }
                    166: 
                    167:    (*((real8 *) (*(*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    168:            .objet)).suivant).donnee).objet)) =
                    169:            (*s_etat_processus).point_de_vue_phi;
                    170: 
                    171:    if (test_cfsf(s_etat_processus, 60) == d_faux)
                    172:    {
                    173:        conversion_radians_vers_degres((real8 *) (*(*(*((struct_liste_chainee *)
                    174:                (*(*l_nouvelle_base).donnee).objet)).suivant).donnee).objet);
                    175:    }
                    176: 
                    177:    if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    178:            .suivant).suivant = allocation_maillon(s_etat_processus)) == NULL)
                    179:    {
                    180:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    181:        return;
                    182:    }
                    183: 
                    184:    if (((*(*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    185:            .suivant).suivant).donnee = allocation(s_etat_processus, REL))
                    186:            == NULL)
                    187:    {
                    188:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    189:        return;
                    190:    }
                    191: 
                    192:    (*((real8 *) (*(*(*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    193:            .objet)).suivant).suivant).donnee).objet)) =
                    194:            (*s_etat_processus).echelle_3D;
                    195: 
                    196:    (*((*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    197:            .suivant)).suivant)).suivant = NULL;
                    198: 
                    199:    (*s_objet_resultat).objet = l_nouvelle_base;
                    200:    l_ancienne_base = (*s_objet_resultat).objet;
                    201: 
                    202:    // Type en cours
                    203: 
                    204:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    205:    {
                    206:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    207:        return;
                    208:    }
                    209: 
                    210:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, CHN))
                    211:            == NULL)
                    212:    {
                    213:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    214:        return;
                    215:    }
                    216: 
                    217:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    218: 
                    219:    if (strcmp((*s_etat_processus).type_trace_eq, "FONCTION") == 0)
                    220:    {
                    221:        if (((*(*l_nouvelle_base).donnee).objet = malloc(9 *
                    222:                sizeof(unsigned char))) == NULL)
                    223:        {
                    224:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    225:            return;
                    226:        }
                    227: 
                    228:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    229:                "FUNCTION");
                    230:    }
                    231:    else if (strcmp((*s_etat_processus).type_trace_eq, "PARAMETRIQUE") == 0)
                    232:    {
                    233:        if (((*(*l_nouvelle_base).donnee).objet = malloc(11 *
                    234:                sizeof(unsigned char))) == NULL)
                    235:        {
                    236:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    237:            return;
                    238:        }
                    239: 
                    240:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    241:                "PARAMETRIC");
                    242:    }
                    243:    else if (strcmp((*s_etat_processus).type_trace_eq, "POLAIRE") == 0)
                    244:    {
                    245:        if (((*(*l_nouvelle_base).donnee).objet = malloc(6 *
                    246:                sizeof(unsigned char))) == NULL)
                    247:        {
                    248:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    249:            return;
                    250:        }
                    251: 
                    252:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    253:                "POLAR");
                    254:    }
                    255:    else if (strcmp((*s_etat_processus).type_trace_eq, "COURBES DE NIVEAU")
                    256:            == 0)
                    257:    {
                    258:        if (((*(*l_nouvelle_base).donnee).objet = malloc(6 *
                    259:                sizeof(unsigned char))) == NULL)
                    260:        {
                    261:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    262:            return;
                    263:        }
                    264: 
                    265:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    266:                "SLICE");
                    267:    }
                    268:    else if (strcmp((*s_etat_processus).type_trace_eq, "GRILLE 3D") == 0)
                    269:    {
                    270:        if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
                    271:                sizeof(unsigned char))) == NULL)
                    272:        {
                    273:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    274:            return;
                    275:        }
                    276: 
                    277:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    278:                "WIREFRAME");
                    279:    }
                    280:    else
                    281:    {
                    282:        if (((*(*l_nouvelle_base).donnee).objet = malloc(
                    283:                sizeof(unsigned char))) == NULL)
                    284:        {
                    285:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    286:            return;
                    287:        }
                    288: 
                    289:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet, "");
                    290:    }
                    291: 
                    292:    (*s_objet_resultat).objet = l_nouvelle_base;
                    293:    l_ancienne_base = (*s_objet_resultat).objet;
                    294: 
                    295:    // Résolution
                    296: 
                    297:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    298:    {
                    299:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    300:        return;
                    301:    }
                    302: 
                    303:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, REL))
                    304:            == NULL)
                    305:    {
                    306:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    307:        return;
                    308:    }
                    309: 
                    310:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    311:    (*((real8 *) (*(*l_nouvelle_base).donnee).objet)) =
                    312:            (*s_etat_processus).resolution;
                    313:    (*s_objet_resultat).objet = l_nouvelle_base;
                    314:    l_ancienne_base = (*s_objet_resultat).objet;
                    315: 
                    316:    // DEPND
                    317: 
                    318:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    319:    {
                    320:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    321:        return;
                    322:    }
                    323: 
                    324:    if (((*l_nouvelle_base).donnee = copie_objet(s_etat_processus,
                    325:            (*s_etat_processus).depend, 'O')) == NULL)
                    326:    {
                    327:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    328:        return;
                    329:    }
                    330: 
                    331:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    332:    (*s_objet_resultat).objet = l_nouvelle_base;
                    333:    l_ancienne_base = (*s_objet_resultat).objet;
                    334: 
                    335:    // INDEP
                    336:    
                    337:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    338:    {
                    339:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    340:        return;
                    341:    }
                    342: 
                    343:    if (((*l_nouvelle_base).donnee = copie_objet(s_etat_processus,
                    344:            (*s_etat_processus).indep, 'O')) == NULL)
                    345:    {
                    346:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    347:        return;
                    348:    }
                    349: 
                    350:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    351:    (*s_objet_resultat).objet = l_nouvelle_base;
                    352:    l_ancienne_base = (*s_objet_resultat).objet;
                    353: 
                    354:    // Coordonnées Z2
                    355: 
                    356:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    357:    {
                    358:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    359:        return;
                    360:    }
                    361: 
                    362:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
                    363:            == NULL)
                    364:    {
                    365:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    366:        return;
                    367:    }
                    368: 
                    369:    if ((*s_etat_processus).echelle_automatique_z2 == d_vrai)
                    370:    {
                    371:        if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
                    372:                sizeof(unsigned char))) == NULL)
                    373:        {
                    374:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    375:            return;
                    376:        }
                    377: 
                    378:        (*(*l_nouvelle_base).donnee).type = CHN;
                    379:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    380:                "AUTOMATIC");
                    381:    }
                    382:    else
                    383:    {
                    384:        (*(*l_nouvelle_base).donnee).type = LST;
                    385: 
                    386:        if (((*(*l_nouvelle_base).donnee).objet =
                    387:                allocation_maillon(s_etat_processus)) == NULL)
                    388:        {
                    389:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    390:            return;
                    391:        }
                    392: 
                    393:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    394:                .donnee = allocation(s_etat_processus, REL)) == NULL)
                    395:        {
                    396:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    397:            return;
                    398:        }
                    399: 
                    400:        (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    401:                .objet)).donnee)).objet)) = (*s_etat_processus).z2_min;
                    402: 
                    403:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    404:                .suivant = allocation_maillon(s_etat_processus)) == NULL)
                    405:        {
                    406:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    407:            return;
                    408:        }
                    409: 
                    410:        (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    411:                .suivant).suivant = NULL;
                    412: 
                    413:        if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    414:                .suivant).donnee = allocation(s_etat_processus, REL))
                    415:                == NULL)
                    416:        {
                    417:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    418:            return;
                    419:        }
                    420: 
                    421:        (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
                    422:                .donnee).objet)).suivant).donnee)).objet)) =
                    423:                (*s_etat_processus).z2_max;
                    424:    }
                    425: 
                    426:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    427:    (*s_objet_resultat).objet = l_nouvelle_base;
                    428:    l_ancienne_base = (*s_objet_resultat).objet;
                    429: 
                    430:    // Coordonnées Y2
                    431: 
                    432:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    433:    {
                    434:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    435:        return;
                    436:    }
                    437: 
                    438:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
                    439:            == NULL)
                    440:    {
                    441:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    442:        return;
                    443:    }
                    444: 
                    445:    if ((*s_etat_processus).echelle_automatique_y2 == d_vrai)
                    446:    {
                    447:        if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
                    448:                sizeof(unsigned char))) == NULL)
                    449:        {
                    450:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    451:            return;
                    452:        }
                    453: 
                    454:        (*(*l_nouvelle_base).donnee).type = CHN;
                    455:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    456:                "AUTOMATIC");
                    457:    }
                    458:    else
                    459:    {
                    460:        (*(*l_nouvelle_base).donnee).type = LST;
                    461: 
                    462:        if (((*(*l_nouvelle_base).donnee).objet =
                    463:                allocation_maillon(s_etat_processus)) == NULL)
                    464:        {
                    465:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    466:            return;
                    467:        }
                    468: 
                    469:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    470:                .donnee = allocation(s_etat_processus, REL)) == NULL)
                    471:        {
                    472:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    473:            return;
                    474:        }
                    475: 
                    476:        (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    477:                .objet)).donnee)).objet)) = (*s_etat_processus).y2_min;
                    478: 
                    479:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    480:                .suivant = allocation_maillon(s_etat_processus)) == NULL)
                    481:        {
                    482:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    483:            return;
                    484:        }
                    485: 
                    486:        (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    487:                .suivant).suivant = NULL;
                    488: 
                    489:        if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    490:                .suivant).donnee = allocation(s_etat_processus, REL))
                    491:                == NULL)
                    492:        {
                    493:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    494:            return;
                    495:        }
                    496: 
                    497:        (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
                    498:                .donnee).objet)).suivant).donnee)).objet)) =
                    499:                (*s_etat_processus).y2_max;
                    500:    }
                    501: 
                    502:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    503:    (*s_objet_resultat).objet = l_nouvelle_base;
                    504:    l_ancienne_base = (*s_objet_resultat).objet;
                    505: 
                    506:    // Coordonnées X2
                    507: 
                    508:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    509:    {
                    510:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    511:        return;
                    512:    }
                    513: 
                    514:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
                    515:            == NULL)
                    516:    {
                    517:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    518:        return;
                    519:    }
                    520: 
                    521:    if ((*s_etat_processus).echelle_automatique_x2 == d_vrai)
                    522:    {
                    523:        if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
                    524:                sizeof(unsigned char))) == NULL)
                    525:        {
                    526:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    527:            return;
                    528:        }
                    529: 
                    530:        (*(*l_nouvelle_base).donnee).type = CHN;
                    531:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    532:                "AUTOMATIC");
                    533:    }
                    534:    else
                    535:    {
                    536:        (*(*l_nouvelle_base).donnee).type = LST;
                    537: 
                    538:        if (((*(*l_nouvelle_base).donnee).objet =
                    539:                allocation_maillon(s_etat_processus)) == NULL)
                    540:        {
                    541:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    542:            return;
                    543:        }
                    544: 
                    545:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    546:                .donnee = allocation(s_etat_processus, REL)) == NULL)
                    547:        {
                    548:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    549:            return;
                    550:        }
                    551: 
                    552:        (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    553:                .objet)).donnee)).objet)) = (*s_etat_processus).x2_min;
                    554: 
                    555:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    556:                .suivant = allocation_maillon(s_etat_processus)) == NULL)
                    557:        {
                    558:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    559:            return;
                    560:        }
                    561: 
                    562:        (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    563:                .suivant).suivant = NULL;
                    564: 
                    565:        if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    566:                .suivant).donnee = allocation(s_etat_processus, REL))
                    567:                == NULL)
                    568:        {
                    569:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    570:            return;
                    571:        }
                    572: 
                    573:        (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
                    574:                .donnee).objet)).suivant).donnee)).objet)) =
                    575:                (*s_etat_processus).x2_max;
                    576:    }
                    577: 
                    578:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    579:    (*s_objet_resultat).objet = l_nouvelle_base;
                    580:    l_ancienne_base = (*s_objet_resultat).objet;
                    581: 
                    582:    // Coordonnées Z
                    583: 
                    584:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    585:    {
                    586:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    587:        return;
                    588:    }
                    589: 
                    590:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
                    591:            == NULL)
                    592:    {
                    593:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    594:        return;
                    595:    }
                    596: 
                    597:    if ((*s_etat_processus).echelle_automatique_z == d_vrai)
                    598:    {
                    599:        if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
                    600:                sizeof(unsigned char))) == NULL)
                    601:        {
                    602:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    603:            return;
                    604:        }
                    605: 
                    606:        (*(*l_nouvelle_base).donnee).type = CHN;
                    607:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    608:                "AUTOMATIC");
                    609:    }
                    610:    else
                    611:    {
                    612:        (*(*l_nouvelle_base).donnee).type = LST;
                    613: 
                    614:        if (((*(*l_nouvelle_base).donnee).objet =
                    615:                allocation_maillon(s_etat_processus)) == NULL)
                    616:        {
                    617:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    618:            return;
                    619:        }
                    620: 
                    621:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    622:                .donnee = allocation(s_etat_processus, REL)) == NULL)
                    623:        {
                    624:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    625:            return;
                    626:        }
                    627: 
                    628:        (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    629:                .objet)).donnee)).objet)) = (*s_etat_processus).z_min;
                    630: 
                    631:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    632:                .suivant = allocation_maillon(s_etat_processus)) == NULL)
                    633:        {
                    634:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    635:            return;
                    636:        }
                    637: 
                    638:        (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    639:                .suivant).suivant = NULL;
                    640: 
                    641:        if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    642:                .suivant).donnee = allocation(s_etat_processus, REL))
                    643:                == NULL)
                    644:        {
                    645:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    646:            return;
                    647:        }
                    648: 
                    649:        (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
                    650:                .donnee).objet)).suivant).donnee)).objet)) =
                    651:                (*s_etat_processus).z_max;
                    652:    }
                    653: 
                    654:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    655:    (*s_objet_resultat).objet = l_nouvelle_base;
                    656:    l_ancienne_base = (*s_objet_resultat).objet;
                    657: 
                    658:    // Coordonnées Y
                    659: 
                    660:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    661:    {
                    662:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    663:        return;
                    664:    }
                    665: 
                    666:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
                    667:            == NULL)
                    668:    {
                    669:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    670:        return;
                    671:    }
                    672: 
                    673:    if ((*s_etat_processus).echelle_automatique_y == d_vrai)
                    674:    {
                    675:        if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
                    676:                sizeof(unsigned char))) == NULL)
                    677:        {
                    678:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    679:            return;
                    680:        }
                    681: 
                    682:        (*(*l_nouvelle_base).donnee).type = CHN;
                    683:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    684:                "AUTOMATIC");
                    685:    }
                    686:    else
                    687:    {
                    688:        (*(*l_nouvelle_base).donnee).type = LST;
                    689: 
                    690:        if (((*(*l_nouvelle_base).donnee).objet =
                    691:                allocation_maillon(s_etat_processus)) == NULL)
                    692:        {
                    693:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    694:            return;
                    695:        }
                    696: 
                    697:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    698:                .donnee = allocation(s_etat_processus, REL)) == NULL)
                    699:        {
                    700:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    701:            return;
                    702:        }
                    703: 
                    704:        (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    705:                .objet)).donnee)).objet)) = (*s_etat_processus).y_min;
                    706: 
                    707:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    708:                .suivant = allocation_maillon(s_etat_processus)) == NULL)
                    709:        {
                    710:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    711:            return;
                    712:        }
                    713: 
                    714:        (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    715:                .suivant).suivant = NULL;
                    716: 
                    717:        if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    718:                .suivant).donnee = allocation(s_etat_processus, REL))
                    719:                == NULL)
                    720:        {
                    721:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    722:            return;
                    723:        }
                    724: 
                    725:        (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
                    726:                .donnee).objet)).suivant).donnee)).objet)) =
                    727:                (*s_etat_processus).y_max;
                    728:    }
                    729: 
                    730:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    731:    (*s_objet_resultat).objet = l_nouvelle_base;
                    732:    l_ancienne_base = (*s_objet_resultat).objet;
                    733: 
                    734:    // Coordonnées X
                    735: 
                    736:    if ((l_nouvelle_base = allocation_maillon(s_etat_processus)) == NULL)
                    737:    {
                    738:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    739:        return;
                    740:    }
                    741: 
                    742:    if (((*l_nouvelle_base).donnee = allocation(s_etat_processus, NON))
                    743:            == NULL)
                    744:    {
                    745:        (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    746:        return;
                    747:    }
                    748: 
                    749:    if ((*s_etat_processus).echelle_automatique_x == d_vrai)
                    750:    {
                    751:        if (((*(*l_nouvelle_base).donnee).objet = malloc(10 *
                    752:                sizeof(unsigned char))) == NULL)
                    753:        {
                    754:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    755:            return;
                    756:        }
                    757: 
                    758:        (*(*l_nouvelle_base).donnee).type = CHN;
                    759:        strcpy((unsigned char *) (*(*l_nouvelle_base).donnee).objet,
                    760:                "AUTOMATIC");
                    761:    }
                    762:    else
                    763:    {
                    764:        (*(*l_nouvelle_base).donnee).type = LST;
                    765: 
                    766:        if (((*(*l_nouvelle_base).donnee).objet =
                    767:                allocation_maillon(s_etat_processus)) == NULL)
                    768:        {
                    769:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    770:            return;
                    771:        }
                    772: 
                    773:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    774:                .donnee = allocation(s_etat_processus, REL)) == NULL)
                    775:        {
                    776:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    777:            return;
                    778:        }
                    779: 
                    780:        (*((real8 *) (*((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee)
                    781:                .objet)).donnee)).objet)) = (*s_etat_processus).x_min;
                    782: 
                    783:        if (((*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    784:                .suivant = allocation_maillon(s_etat_processus)) == NULL)
                    785:        {
                    786:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    787:            return;
                    788:        }
                    789: 
                    790:        (*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    791:                .suivant).suivant = NULL;
                    792: 
                    793:        if (((*(*((struct_liste_chainee *) (*(*l_nouvelle_base).donnee).objet))
                    794:                .suivant).donnee = allocation(s_etat_processus, REL))
                    795:                == NULL)
                    796:        {
                    797:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    798:            return;
                    799:        }
                    800: 
                    801:        (*((real8 *) (*((*(*((struct_liste_chainee *) (*(*l_nouvelle_base)
                    802:                .donnee).objet)).suivant).donnee)).objet)) =
                    803:                (*s_etat_processus).x_max;
                    804:    }
                    805: 
                    806:    (*l_nouvelle_base).suivant = l_ancienne_base;
                    807:    (*s_objet_resultat).objet = l_nouvelle_base;
                    808: 
                    809:    if (empilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    810:            s_objet_resultat) == d_erreur)
                    811:    {
                    812:        return;
                    813:    }
                    814: 
                    815:    return;
                    816: }
                    817: 
                    818: 
                    819: /*
                    820: ================================================================================
                    821:   Fonction 'plotter' (passe en mode d'affichage relié)
                    822: ================================================================================
                    823:   Entrées : structure processus
                    824: --------------------------------------------------------------------------------
                    825:   Sorties :
                    826: --------------------------------------------------------------------------------
                    827:   Effets de bord : néant
                    828: ================================================================================
                    829: */
                    830: 
                    831: void
                    832: instruction_plotter(struct_processus *s_etat_processus)
                    833: {
                    834:    (*s_etat_processus).erreur_execution = d_ex;
                    835: 
                    836:    if ((*s_etat_processus).affichage_arguments == 'Y')
                    837:    {
                    838:        printf("\n  PLOTTER ");
                    839: 
                    840:        if ((*s_etat_processus).langue == 'F')
                    841:        {
                    842:            printf("(nuage de points reliés entre eux)\n\n");
                    843:            printf("  Aucun argument\n");
                    844:        }
                    845:        else
                    846:        {
                    847:            printf("(plotter mode)\n\n");
                    848:            printf("  No argument\n");
                    849:        }
                    850: 
                    851:        return;
                    852:    }
                    853:    else if ((*s_etat_processus).test_instruction == 'Y')
                    854:    {
                    855:        (*s_etat_processus).nombre_arguments = -1;
                    856:        return;
                    857:    }
                    858:    
                    859:    strcpy((*s_etat_processus).type_trace_sigma, "TABLE TRACANTE");
                    860: 
                    861:    return;
                    862: }
                    863: 
                    864: 
                    865: /*
                    866: ================================================================================
                    867:   Fonction 'paper'
                    868: ================================================================================
                    869:   Entrées :
                    870: --------------------------------------------------------------------------------
                    871:   Sorties :
                    872: --------------------------------------------------------------------------------
                    873:   Effets de bord : néant
                    874: ================================================================================
                    875: */
                    876: 
                    877: void
                    878: instruction_paper(struct_processus *s_etat_processus)
                    879: {
                    880:    struct_objet                *s_objet_argument;
                    881: 
                    882:    unsigned char               *tampon;
                    883: 
                    884:    (*s_etat_processus).erreur_execution = d_ex;
                    885: 
                    886:    if ((*s_etat_processus).affichage_arguments == 'Y')
                    887:    {
                    888:        printf("\n  PAPER ");
                    889: 
                    890:        if ((*s_etat_processus).langue == 'F')
                    891:        {
                    892:            printf("(format de papier)\n\n");
                    893:        }
                    894:        else
                    895:        {
                    896:            printf("(paper format)\n\n");
                    897:        }
                    898: 
                    899:        printf("    1: %s\n\n", d_CHN);
                    900: 
                    901:        if ((*s_etat_processus).langue == 'F')
                    902:        {
                    903:            printf("  Formats :\n\n");
                    904:        }
                    905:        else
                    906:        {
                    907:            printf("  Format:\n\n");
                    908:        }
                    909: 
                    910:        printf("    A4, A5, B5, EXECUTIVE, LETTER, LEGAL\n");
                    911: 
                    912:        return;
                    913:    }
                    914:    else if ((*s_etat_processus).test_instruction == 'Y')
                    915:    {
                    916:        (*s_etat_processus).nombre_arguments = -1;
                    917:        return;
                    918:    }
                    919:    
                    920:    if (test_cfsf(s_etat_processus, 31) == d_vrai)
                    921:    {
                    922:        if (empilement_pile_last(s_etat_processus, 1) == d_erreur)
                    923:        {
                    924:            return;
                    925:        }
                    926:    }
                    927: 
                    928:    if (depilement(s_etat_processus, &((*s_etat_processus).l_base_pile),
                    929:            &s_objet_argument) == d_erreur)
                    930:    {
                    931:        (*s_etat_processus).erreur_execution = d_ex_manque_argument;
                    932:        return;
                    933:    }
                    934: 
                    935:    if ((*s_objet_argument).type == CHN)
                    936:    {
1.50      bertrand  937:        if ((tampon = conversion_majuscule(s_etat_processus, (unsigned char *)
1.1       bertrand  938:                (*s_objet_argument).objet)) == NULL)
                    939: 
                    940:        {
                    941:            (*s_etat_processus).erreur_systeme = d_es_allocation_memoire;
                    942:            return;
                    943:        }
                    944: 
                    945:        if (strcmp(tampon, "A4") == 0)
                    946:        {
                    947:            strcpy((*s_etat_processus).format_papier, "a4paper");
                    948:        }
                    949:        else if (strcmp(tampon, "A5") == 0)
                    950:        {
                    951:            strcpy((*s_etat_processus).format_papier, "a5paper");
                    952:        }
                    953:        else if (strcmp(tampon, "B5") == 0)
                    954:        {
                    955:            strcpy((*s_etat_processus).format_papier, "b5paper");
                    956:        }
                    957:        else if (strcmp(tampon, "LETTER") == 0)
                    958:        {
                    959:            strcpy((*s_etat_processus).format_papier, "letterpaper");
                    960:        }
                    961:        else if (strcmp(tampon, "LEGAL") == 0)
                    962:        {
                    963:            strcpy((*s_etat_processus).format_papier, "legalpaper");
                    964:        }
                    965:        else if (strcmp(tampon, "EXECUTIVE") == 0)
                    966:        {
                    967:            strcpy((*s_etat_processus).format_papier, "executivepaper");
                    968:        }
                    969:        else
                    970:        {
                    971:            (*s_etat_processus).erreur_execution = d_ex_argument_invalide;
                    972:        }
                    973: 
                    974:        free(tampon);
                    975:    }
                    976:    else
                    977:    {
                    978:        liberation(s_etat_processus, s_objet_argument);
                    979: 
                    980:        (*s_etat_processus).erreur_execution = d_ex_erreur_type_argument;
                    981:        return;
                    982:    }
                    983: 
                    984:    liberation(s_etat_processus, s_objet_argument);
                    985: 
                    986:    return;
                    987: }
                    988: 
                    989: // vim: ts=4

CVSweb interface <joel.bertrand@systella.fr>