Previous Next Up Title Contents General Index Functions Index Bookshelf

1.3.2. L'ÉDITION DE STRUCTURE


C'est la phase d'une application qui consiste à créer, à modifier ou à supprimer des structures.

Les éléments d'une structure peuvent être modifiés par l'édition de cette structure. L'édition d'une structure permet de réaliser les opérations suivantes:

- insertion d'un nouvel élément

- remplacement d'un élément par un autre

- destruction d'un élément

- copie d'un élément

- récupération du contenu d'un élément.

Pour comprendre le principe de l'édition de structure de GPHIGS, il est possible de faire le parallèle avec l'édition d'un fichier par un éditeur de texte. Ci dessous à gauche, sont décrites les différents notions caractérisant l'édition de structure et à droite leur équivalent dans un éditeur de texte.

édition de structure éditeur de texte

ouverture de structure ouverture du fichier dans l'éditeur

fermeture de structure fermeture du fichier courant dans l'éditeur

élément de structure caractère du fichier

pointeur d'élément position du curseur

mode d'édition mode insertion ou de remplacement d'un caractère

label marque de repérage dans l'éditeur

destruction d'élément suppression de caractères

1.3.2.1 LE DÉBUT ET LA FIN D'UNE ÉDITION

Pour débuter une édition, il suffit d'ouvrir la structure désirée par l'appel à la fonction popen_struct (struct_id). L'édition d'une structure se termine quand la fonction pclose_struct () est appelée. Une seule structure peut être ouverte à un moment donné.

1.3.2.2 POINTEUR D'ÉLÉMENT

Une structure est une séquence d'éléments. La position des éléments est implicitement numérotée de 1 à N ; la positon 1 correspond au premier élément. Cette numérotation est toujours dans un ordre croissant consécutif (pas de saut), avec un numéro par élément. Le numéro de la position associée à un élément changera donc en fonction des insertions et des suppressions qui auront lieu lors de l'édition.

Le pointeur d'élément est similaire à la position du curseur d'un éditeur de texte. Il indique donc la position dans la structure où va être effectuée la prochaine modification (insertion d'un nouvel élément ou remplacement d'un élément ou destruction d'un élément). A l'ouverture d'une structure le pointeur d'élément est initialisé

La fonction pinq_elem_ptr (inquire element pointer) fournit la valeur courante du pointeur d'élément.

La fonction pset_elem_ptr (n) positionne le pointeur d'élément au n-ième élément de la structure ouverte. C'est un positionnement absolu du pointeur.

La fonction poffset_elem_ptr (n) permet d'augmenter (si n > 0) ou de diminuer (si n <0) la valeur du pointeur d'élément. C'est un positionnement relatif du pointeur par rapport à sa valeur précédente.

La fonction pset_elem_ptr_label (n) permet de positionner le pointeur d'élément à l'élément suivant dans la structure de type label et de valeur n. Un élément de type label de valeur n est inséré dans une structure par l'appel à la fonction plabel (n). On peut disposer plusieurs éléments de type label dans une même structure. Les critères de déplacement pour la fonction pset_elem_ptr_label sont les suivants:

Si le pointeur d'élément est déjà positionné sur un label, alors la fonction cherchera le prochain label de valeur n en commençant la recherche à partir de l'élément suivant. Dans les autres cas la recherche commence à partir de la position du pointeur d'élément. Si aucun label n'est trouvé lors de la recherche, le pointeur d'élément est inchangé.

le schéma suivant montre les 3 types de déplacement du pointeur d'élément

1.3.2.3 INSERTION OU REMPLACEMENT D'UN ÉLÉMENT

Quand une structure est ouverte, le programme d'application peut insérer de nouveaux éléments ou remplacer des éléments existants par des simples appels à des fonctions telles que ptext, pset_line_colr_ind, pexec_struct, etc....

Le mode d'édition défini par la fonction pset_edit_mode indique si les nouveaux éléments remplacent l'élément désigné par le pointeur d'élément ou si ils sont ajoutés après. Dans tous les cas le pointeur d'élément pointe sur le nouvel élément comme le montrent les 2 schémas suivants.

1.3.2.4 DESTRUCTION D'UN ÉLÉMENT

Trois fonctions sont disponibles dans GPHIGS pour détruire un ou plusieurs éléments d'une structure:

- pdel_elem (delete element)

- pdel_elem_range (delete element range)

- pdel_elems_labels (delete elements between labels)

pdel_elem () supprime l'élément désigné par le pointeur d'élément . Si le pointeur d'élément a la valeur zéro, aucun élément n'est supprimé.

pdel_elem_range (i,j) supprime tous les éléments entre l'élément de position i et l'élément de position j

pdel_elems_labels (i,j) supprime les éléments compris entre les deux labels suivants de la structure de valeur respective i et j. Les labels ne sont pas détruits .

Après chacune des trois précédentes fonctions, le pointeur d'élément pointe sur l'élément qui précède immédiatement l'élément ou le groupe d'éléments qui a été supprimé.

La fonction pempty_struct (struct_id) peut aussi être utilisée pour détruire tous les éléments de la structure d'identificateur struct_id sans affecter les références qui y sont faites.

Ce schéma montre les différents types d'opérations réalisables sur les structures


Previous Next Up Title Contents General Index Functions Index Bookshelf