|  | DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes | 
This is an automatic "excavation" of a thematic subset of
 See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. | 
top - metrics - downloadIndex: T V
    Length: 6667 (0x1a0b)
    Types: TextFile
    Names: »V«
└─⟦149519bd4⟧ Bits:30000546 8mm tape, Rational 1000, !projects 93-07-13
    └─⟦124ff5788⟧ »DATA« 
        └─⟦this⟧ 
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
    └─⟦129cab021⟧ »DATA« 
        └─⟦this⟧ 
└─⟦f64eaa120⟧ Bits:30000752 8mm tape, Rational 1000, !projects 93 02 16
    └─⟦6f12a12be⟧ »DATA« 
        └─⟦this⟧ 
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 
with Action;
pragma Private_Eyes_Only;
with Directory;
with Simple_Status;
package Requirements is
    subtype Count is Natural range 0 .. 127;
    type Requirement_Kind is (Not_A_Requirement,
                              Functional,
                              Performance,  
                              External_Interface,  
                              Operational,  
                              Resource,  
                              Qualification_Testing,  
                              Acceptance_Testing,  
                              Documentation,  
                              Quality,  
                              Safety,  
                              Reliability,  
                              Maintainability,  
                              Development_And_Verification,  
                              Design_And_Programming,  
                              Reuse_And_Commonality);
    subtype Non_Functional is
       Requirement_Kind range Requirement_Kind'Succ (Functional) ..
                                 Requirement_Kind'Last;
    subtype Verification is
       Requirement_Kind range Qualification_Testing .. Acceptance_Testing;
    subtype Dependability is Requirement_Kind range Quality .. Maintainability;
    subtype Implementation is
       Requirement_Kind range Development_And_Verification ..
                                 Reuse_And_Commonality;
    type Requirement_Number is new Positive;
    subtype Functional_Requirement_Number is
       Requirement_Number range Requirement_Number'First .. 9;
    subtype Non_Functional_Requirement_Number is
       Requirement_Number range Functional_Requirement_Number'Last + 1 ..
                                   Requirement_Number'Last;
    --                    ---------------------------
    --                    ( ) Individual requirements
    --                    ---------------------------
    type Requirement (Kind : Requirement_Kind := Not_A_Requirement) is private;
    subtype Functional_Requirement is Requirement (Functional);
    function Resolve (Model_Gateway_Name : in String;
                      Module_Id : in Positive;  
                      Requirement_Id : in Requirement_Number;
                      Action_Id : in Action.Id) return Requirement;
    function Comment (Asa_Gateway_Name : in String;  
                      Action_Id : in Action.Id) return String;
    function Diagnosis (Req : in Requirement) return String;
    function Gateway_Full_Name (Req : in Requirement) return String;
    function Unique_Id (Req : in Requirement) return String;
    function Text (Req : in Requirement) return String;
    type Permanent_Representation is array (Positive range 1 .. 4) of Integer;
    function Convert (Req : in Requirement) return Permanent_Representation;
    function Convert (Rep : in Permanent_Representation;
                      Action_Id : in Action.Id) return Requirement;
    --                    --------------------------
    --                    ( ) Requirements hierarchy
    --                    --------------------------
    type Requirement_Iterator (Size : Count := 0) is private;
    function Resolve (Asa_Gateway_Name : in String;
                      Kind : in Requirement_Kind;
                      Action_Id : Action.Id) return Requirement_Iterator;
    function Value (Reqs : in Requirement_Iterator) return Requirement;
    function Done (Reqs : in Requirement_Iterator) return Boolean;
    procedure Next (Reqs : in out Requirement_Iterator);
    procedure Add (Req : in Requirement; Reqs : in out Requirement_Iterator);
    procedure Remove (Req : in Requirement; Reqs : in out Requirement_Iterator);
    --                    ----------------
    --                    ( ) Dependencies
    --                    ----------------
    type Dependents (Is_Bad : Boolean) is private;
    function Get_Dependents (Req : in Requirement) return Dependents;
    procedure Set_Dependents (Req : in Requirement;  
                              Dep : in Dependents);
    procedure Add (Dep : in out Dependents;  
                   Onto : in String);
    procedure Remove (Dep : in out Dependents;  
                      Onto : in String);
    function Diagnosis (Dep : in Dependents) return String;
    --                    --------------
    --                    ( ) Exceptions
    --                    --------------
    Dependent_Error : exception;
    Requirement_Error : exception;
private
    package Dir renames Directory;
    package Dna renames Directory.Naming;
    type Status_Kind is (Module_Id_Error,  
                         Directory_Error,  
                         Directory_Naming_Error,  
                         General_Error);
    type Status (Kind : Status_Kind := General_Error) is
        record  
            case Kind is
                when Module_Id_Error =>
                    null;
                when Directory_Error =>
                    Error_Status : Dir.Error_Status;
                when Directory_Naming_Error =>
                    Name_Status : Dna.Name_Status;
                when General_Error =>
                    Condition : Simple_Status.Condition;
            end case;
        end record;
    type Requirement (Kind : Requirement_Kind := Not_A_Requirement) is
        record
            case Kind is
                when Not_A_Requirement =>
                    Error : Status;
                when Functional | Non_Functional =>
                    Action_Id : Action.Id;
                    Object : Dir.Object;
                    case Kind is
                        when Not_A_Requirement =>
                            null;
                        when Functional =>
                            Id : Functional_Requirement_Number;
                        when Non_Functional =>
                            null;
                    end case;
            end case;
        end record;
    type Requirement_List is array (Count range <>) of Requirement;
    type Requirement_Iterator (Size : Count := 0) is
        record
            Pos : Count := 1;
            Contents : Requirement_List (1 .. Size);
        end record;
    type Object_List is array (Count range <>) of Dir.Object;
    type Object_List_Access is access Object_List;
    pragma Segmented_Heap (Object_List_Access);
    type Dependents (Is_Bad : Boolean) is
        record
            case Is_Bad is
                when False =>
                    Objects : Object_List_Access;
                when True =>
                    Error : Status;
            end case;
        end record;
end Requirements;