DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦38d40e7ab⟧ Ada Source

    Length: 12288 (0x3000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Generic_Kbs, seg_03c054

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Generic_Expression;
with Generic_Fact_Base;
with Generic_Rule_Base;
with Slot;
generic

    Max_Slots                      : Positive := 20;
    Max_Condition_Elements_By_Rule : Positive := 10;  
    Max_Condition_Elements         : Positive := 200;
    Max_Rules                      : Positive := 50;

    type Class_Names is (<>);
    Null_Class_Name : Class_Names := Class_Names'Last;

    type User_Defined_Expression_Operators is (<>);

    with function User_Defined_Unary_Evaluate
                     (Using_Operator : User_Defined_Expression_Operators;
                      Right          : Slot.Object) return Slot.Object is <>;

    with function User_Defined_Binary_Evaluate
                     (Using_Operator : User_Defined_Expression_Operators;
                      Left, Right    : Slot.Object) return Slot.Object is <>;

    with function User_Defined_Image
                     (Op : User_Defined_Expression_Operators) return String is
       User_Defined_Expression_Operators'Image;

    type User_Defined_Predicate_Operators is (<>);

    with function User_Defined_Unary_Match
                     (Using_Operator : User_Defined_Predicate_Operators;
                      Value          : Slot.Object) return Boolean is <>;

    with function User_Defined_Binary_Match
                     (Using_Operator : User_Defined_Predicate_Operators;
                      Value          : Slot.Object;
                      Against        : Slot.Object) return Boolean is <>;

    with function User_Defined_Image
                     (Op : User_Defined_Predicate_Operators) return String is
       User_Defined_Predicate_Operators'Image;

    type Rule_Bundles is (<>);

package Generic_Kbs is

    package Expression is  
       new Generic_Expression
              (User_Defined_Operators => User_Defined_Expression_Operators,
               User_Defined_Unary_Evaluate => User_Defined_Unary_Evaluate,
               User_Defined_Binary_Evaluate => User_Defined_Binary_Evaluate,
               User_Defined_Image => User_Defined_Image);


    package Fact_Base is  
       new Generic_Fact_Base
              (Class_Names               => Class_Names,
               Null_Class_Name           => Class_Names'Last,
               Max_Slots                 => Max_Slots,  
               User_Defined_Operators    => User_Defined_Predicate_Operators,
               User_Defined_Unary_Match  => User_Defined_Unary_Match,
               User_Defined_Binary_Match => User_Defined_Binary_Match,
               User_Defined_Image        => User_Defined_Image,
               Expression_Object         => Expression.Object,
               Slot_Object_Expression    => Expression.Value,
               Alias_Expression          => Expression.Value,
               Expression_Evaluate       => Expression.Evaluate,
               Expression_Put            => Expression.Put);



    package Rule_Base is
       new  
           Generic_Rule_Base
              (Max_Rules => Max_Rules,
               Max_Condition_Elements_By_Rule =>  
                  Max_Condition_Elements_By_Rule,
               Max_Condition_Elements => Max_Condition_Elements,  
               Rule_Bundles => Rule_Bundles,
               Fact_Name => Fact_Base.Class.User_Object,
               Fact_Collection => Fact_Base.Class.User_Objects,
               Empty_Fact_Collection => Fact_Base.Class.No_User_Objects,
               Fact_Put => Fact_Base.Class.Default_Put,
               Fact_Query => Fact_Base.Query.Object,
               Null_Fact_Query => Fact_Base.Query.Null_Query,
               Fact_Queries => Fact_Base.Query.Objects,
               Null_Premiss => Fact_Base.Query.Null_Queries,
               Retrieve => Fact_Base.Working_Memory.Retrieve,
               Queries_Put => Fact_Base.Query.Put);


    procedure Retrieve is
       new Fact_Base.Working_Memory.Retrieve_With_Conflict_Set
              (Rule_Id             => Rule_Base.Rule_Id,
               Instance_Object     => Rule_Base.Rule_Instance.Object,
               Instance_Value      => Rule_Base.Rule_Instance.Make,
               Add_To_Conflict_Set => Rule_Base.Conflict_Set.Add);


    subtype Fact_Query      is Fact_Base.Query.Object;
    subtype Fact_Queries    is Fact_Base.Query.Objects;
    subtype Fact_Name       is Fact_Base.Class.User_Object;
    subtype Fact_Collection is Fact_Base.Class.User_Objects;
    subtype Rule_Id         is Rule_Base.Rule_Id;

    Empty_Fact_Collection : constant Fact_Collection :=
       Fact_Base.Class.No_User_Objects;
    No_Rule               : Rule_Id renames Rule_Base.No_Rule;



end Generic_Kbs;

E3 Meta Data

    nblk1=b
    nid=9
    hdr6=a
        [0x00] rec0=1b rec1=00 rec2=01 rec3=09c
        [0x01] rec0=1a rec1=00 rec2=04 rec3=006
        [0x02] rec0=15 rec1=00 rec2=0a rec3=014
        [0x03] rec0=15 rec1=00 rec2=0b rec3=054
        [0x04] rec0=14 rec1=00 rec2=07 rec3=000
        [0x05] rec0=0c rec1=00 rec2=09 rec3=000
        [0x06] rec0=00 rec1=00 rec2=09 rec3=014
        [0x07] rec0=14 rec1=00 rec2=0b rec3=01e
        [0x08] rec0=01 rec1=00 rec2=07 rec3=000
        [0x09] rec0=06 rec1=00 rec2=07 rec3=000
        [0x0a] rec0=87 rec1=5d rec2=d0 rec3=000
    tail 0x21739dec08570829a630a 0x42a00088462063c03
Free Block Chain:
  0x9: 0000  00 05 01 97 80 1c 20 69 73 20 46 61 63 74 5f 42  ┆       is Fact_B┆
  0x5: 0000  00 03 03 fc 80 34 6e 65 64 5f 42 69 6e 61 72 79  ┆     4ned_Binary┆
  0x3: 0000  00 02 03 fc 80 15 20 20 3d 3e 20 45 78 70 72 65  ┆        => Expre┆
  0x2: 0000  00 06 03 fc 80 09 69 66 66 65 72 65 6e 74 2c 09  ┆      ifferent, ┆
  0x6: 0000  00 08 00 08 80 05 5f 49 73 5f 44 05 20 3d 3e 20  ┆      _Is_D  => ┆
  0x8: 0000  00 00 00 1a 80 17 20 20 6e 65 77 20 47 65 6e 65  ┆        new Gene┆