1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
package Machina is
-- Les mots sources sont représentés par des tableaux de positifs.
type T_Positive_String is array (Positive range <>) of Positive;
-- Pour le nommage des systèmes linguistiques.
subtype T_System_Name is String(1..16);
-- L'unité de traitement parallèle pour chaque utilisateur;
type T_Machina is limited private;
task Life_Cycle is
-- Démmarer et redémmarer le service après une suspension.
entry Start;
-- Suspendre le service.
entry Suspend;
-- Terminer le processus.
entry Halt;
-- Création de système linguistique --
-- 'Length' est la taille de l'alphabet ;
-- 'System_Name' est le nom du système.
entry Create_System(Length : in Positive; System_Name : in T_System_Name);
-- Création d'un mot d'un système --
-- 'Word' est la représentation du mot ;
-- 'System_Name' est le système auquel appartient le mot.
entry Create_Word(Word : in T_Positive_string; System_Name : in T_System_Name);
-- Création d'un utilisateur --
-- 'User_name' est un nom unique.
-- System_Name est le système utilisé par l'utilisateur.
entry Create_User(User_Name : in String; System_name : in T_System_Name);
-- Obtenir une connection --
-- 'User_Name' est le nom de l'utilisateur demandeur de la connection.
-- 'System_Name' est le système linguistique utilisé par le demandeur.
-- 'Recipient' est l'utilisateur cible de la connection.
-- 'Cross_Name' est le système linguistique d'lutilisateur cible.
entry Connect_User(User_Name : in String; System_Name : in T_System_Name;
Recipient : in String; Cross_Name : in T_System_Name;
Treatment_Unit : out T_machina);
end Life_Cycle;
-- Si l'alphabet utilisé dans word à la création d'un mot est en dehors
-- de la borne supérieur de l'alphabet, on lève une exception ;
Out_Of_Range : exception;
-- Si un système porte déjà le nom donné à la création d'un système,
-- on lève une exception ;
System_Exist : exception;
-- Si un utilisateur porte déjà le nom donné à la création d'un utilisateur,
-- on lève une excpetion ;
User_Exist : exception;
-- Si un des deux utilisateurs donnés à la demande de connection est inconnu
-- du système,on lève une exception ;
No_User : exception;
-- Si un des deux systèmes linguistiques donnée à la connection est inconnu
-- du système,on lève une exception ;
No_Systeme : exception;
-- Un support d'information est une liste de mots d'un système linguistique.
type T_Word_List is private;
-- Pour construire une liste de mots.
procedure Constructor(Word_List : in out T_Word_List;
Word : in T_Positive_String);
-- Pour connaitre la taille d'un liste.
function Length(Word_List : in T_Word_List) return Natural;
-- Pour extraire les mots d'une liste de mots.
function Extract_Word(Word_List : in T_Word_List;
Index : in Positive) return T_Positive_String;
-- Si index est supérieur à la longueur de la liste, on lève une exception ;
Index_Error : exception;
-- Procéder au traitement de l'information.
-- Substrat est modifier pour contenir le résulat.
procedure Proceed(Machina : in out T_Machina; Substrat : in out T_Word_List);
-- Pour la conversion Ascii à T_Positive_Array ;
function To_Positive(Source : in String) return T_Positive_String;
-- Pour la convertsion de Positive_String à ascii.
function To_String(Source : in T_Positive_String) return String;
private
type T_Positive_Word(Length : Positive) is
record
Positive_String : T_Positive_String(1..Length);
end record;
type T_Word_Node(Length : Positive);
type Word_Node_Access is access T_Word_Node;
type T_Word_Node(Length : Positive) is
record
Word : T_Positive_Word(Length);
Prev, Next : Word_Node_Access;
end record;
type T_Word_List is
record
Root : Word_Node_Access;
Count : Natural;
end record;
type T_System;
type System_Access is access T_System;
type T_Machina is limited
record
Source : System_Access ;
Destination : System_Access ;
end record;
end Machina; |
Partager