|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 11264 (0x2c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Nos_Listes, seg_046082, seg_0465d7, seg_04696a, seg_0472d1
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧ └─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
package body Nos_Listes is --------------------------------------------------------------- --| --| Ajoute un element a la liste s'il ne s'y trouve pas deja. --| --| Parametres d'entree : --| L : liste sur laquelle doit etre fait l'ajout --| (type objet) --| Item : element a ajouter a la liste --| (type element) --| --------------------------------------------------------------- procedure Add (L : in out Objet; Item : Element) is begin if not Found (L, Item) then L := Liste.Make (Item, L); end if; end Add; --------------------------------------------------------------- --| --| Renvoie la valeur de l'element courant dans la liste. --| --| Parametres d'entree : --| Iter : iterateur sur la liste consultee --| (type iterateur) --| Parametres de sortie : --| La fonction renvoie l'element --| (type element) --| --------------------------------------------------------------- function Consult (Iter : Iterateur) return Element is begin return Liste.Value (Iter); end Consult; --------------------------------------------------------------- --| --| Test si la liste est vide. --| --| Parametres d'entree : --| L : liste sur laquelle porte le test --| (type objet) --| Parametres de sortie : --| La fonction renvoie TRUE ou FALSE selon que la liste est --| vide ou non --| --------------------------------------------------------------- function Is_Empty (L : Objet) return Boolean is begin return Liste.Is_Empty (L); end Is_Empty; --------------------------------------------------------------- --| --| Test si un iterateur a bien survole tous les elements de --| la liste. --| --| Parametres d'entree : --| Iter : iterateur sur la liste testee --| (type iterateur) --| Parametres de sortie : --| La fonction renvoie TRUE ou FALSE selon que l'iterateur --| a bien survole toute la liste ou non --| --------------------------------------------------------------- function At_End (Iter : Iterateur) return Boolean is begin return Liste.Done (Iter); end At_End; --------------------------------------------------------------- --| --| Positionne un iterateur sur le premier element d'une liste. --| --| Parametres d'entree : --| Iter : l'iterateur de la liste --| (type iterateur) --| L : liste a iterer --| (type objet) --| --------------------------------------------------------------- procedure First (Iter : out Iterateur; L : Objet) is begin Liste.Init (Iter, L); end First; --------------------------------------------------------------- --| --| Positionne un iterateur sur l'element suivant d'une liste. --| --| Parametres d'entree : --| Iter : l'iterateur de la liste --| (type iterateur) --| --------------------------------------------------------------- procedure Next (Iter : in out Iterateur) is begin Liste.Next (Iter); end Next; --------------------------------------------------------------- --| --| Supprime un element de la liste si ce dernier s'y trouve. --| Si ce n'est pas le cas cette routine n'a aucun effet. --| --| Parametres d'entree : --| L : liste sur laquelle porte la suppression --| (type objet) --| Item : element a supprimer de la liste --| (type element) --| --------------------------------------------------------------- procedure Delete (L : in out Objet; Item : Element) is Local_List_Iterateur, L_Iterateur : Liste.Iterator; Local_List : Objet; begin if Found (L, Item) then Liste.Init (L_Iterateur, L); while (not Equal (Item, Liste.Value (L_Iterateur))) loop Local_List := Liste.Make (Liste.Value (L_Iterateur), Local_List); L := Liste.Rest (L); Liste.Init (L_Iterateur, L); end loop; L := Liste.Rest (L); Liste.Init (L_Iterateur, L); Liste.Init (Local_List_Iterateur, Local_List); while not Liste.Is_Empty (Local_List) loop L := Liste.Make (Liste.Value (Local_List_Iterateur), L); Liste.Init (Local_List_Iterateur, Local_List); Local_List := Liste.Rest (Local_List); Liste.Init (Local_List_Iterateur, Local_List); end loop; end if; end Delete; --------------------------------------------------------------- --| --| Cherche un element dans une liste. --| --| Parametres d'entree : --| L : liste sur laquelle porte la recherche --| (type objet) --| Item : element a rechercher dans la liste --| (type element) --| Parametres de sortie : --| La fonction renvoie TRUE ou FALSE selon que l'iterateur --| a atteint la fin de la liste ou non --| --------------------------------------------------------------- function Found (L : Objet; Item : Element) return Boolean is Trouve : Boolean := False; Iterateur : Liste.Iterator; begin Liste.Init (Iterateur, L); while not Liste.Done (Iterateur) loop if Equal (Item, Liste.Value (Iterateur)) then Trouve := True; exit; end if; Liste.Next (Iterateur); end loop; return Trouve; end Found; --------------------------------------------------------------- --| --| Initialise une liste (l'a vide). --| --| Parametres d'entree : --| L : liste a initialiser --| (type objet) --| --------------------------------------------------------------- procedure Free (L : in out Objet) is begin Liste.Free (L); end Free; --------------------------------------------------------------- --| --| Compare deux listes entre elles. --| --| Parametres d'entree : --| L1,L2 : les deux listes sur lesquelles porte la --| comparaison (type objet) --| Parametres de sortie : --| La fonction renvoie TRUE ou FALSE selon que les deux --| listes sont identiques ou non. --| --------------------------------------------------------------- function Compare (L1, L2 : Objet) return Boolean is Idem : Boolean; Iterateur_L1 : Liste.Iterator; begin if (Liste.Length (L1) = Liste.Length (L2)) then Idem := True; Liste.Init (Iterateur_L1, L1); while (Idem and (not Liste.Done (Iterateur_L1))) loop Idem := Found (L2, Liste.Value (Iterateur_L1)); Liste.Next (Iterateur_L1); end loop; else Idem := False; end if; return Idem; end Compare; end Nos_Listes;
nblk1=a nid=8 hdr6=10 [0x00] rec0=1f rec1=00 rec2=01 rec3=012 [0x01] rec0=1f rec1=00 rec2=02 rec3=014 [0x02] rec0=1c rec1=00 rec2=05 rec3=064 [0x03] rec0=1b rec1=00 rec2=09 rec3=05a [0x04] rec0=18 rec1=00 rec2=06 rec3=06a [0x05] rec0=1d rec1=00 rec2=04 rec3=026 [0x06] rec0=1d rec1=00 rec2=03 rec3=012 [0x07] rec0=0f rec1=00 rec2=07 rec3=000 [0x08] rec0=28 rec1=36 rec2=00 rec3=005 [0x09] rec0=fd rec1=0c rec2=4c rec3=4d5 tail 0x215429b30864d6c5e63e1 0x42a00088462060003 Free Block Chain: 0x8: 0000 00 0a 00 49 80 0d 74 79 70 65 20 65 6c 65 6d 65 ┆ I type eleme┆ 0xa: 0000 00 00 00 47 80 25 20 28 49 74 65 72 20 3a 20 6f ┆ G % (Iter : o┆