|
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: 13312 (0x3400) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, generic, package Generic_Fact_Base, seg_02ced1
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
with Constant_String; with Output_Stream; generic type Class_Names is (<>); Null_Class_Name : Class_Names := Class_Names'Last; Max_Slots : Natural := 20; type Predicate_Object is private; Null_Predicate : Predicate_Object; with function Predicate_Match (Value : Integer; Against : Predicate_Object) return Boolean is <>; with procedure Predicate_Put (The_Expression : Predicate_Object; Where : Output_Stream.Object) is <>; package Generic_Fact_Base is package Query is subtype Query_Size is Natural range 0 .. Max_Slots; type Query_Qualifier is (Find, Check_No); subtype Slot_Names is Query_Size range 1 .. Max_Slots; type Patterns is array (Slot_Names range <>) of Predicate_Object; type Object (Size : Query_Size := 0) is record Kind : Query_Qualifier; Class : Class_Names; Value : Patterns (1 .. Size); end record; type Objects is array (Positive range <>) of Object; Null_Query : constant Object := Query.Object'(Size => 0, Kind => Find, Class => Null_Class_Name, Value => (1 .. 0 => Null_Predicate)); Null_Queries : constant Objects := (1 .. 0 => Null_Query); procedure Put (The_Query : Object; Where : Output_Stream.Object); procedure Put (The_Queries : Objects; Where : Output_Stream.Object); end Query; package Class is type Object is private; Null_Class : constant Object; type User_Object is private; Null_User_Object : constant User_Object; type User_Objects is array (Positive range <>) of User_Object; function No_User_Objects return User_Objects; type Instance_Name is new Natural; subtype Instance_Size is Natural range 0 .. Max_Slots; subtype Slot_Names is Instance_Size range 1 .. Max_Slots; type Slots is array (Slot_Names range <>) of Integer; type Slot_Names_Images is array (Slot_Names range <>) of Constant_String.Object; function As_User_Object (The_Instance : Instance_Name; For_Class : Class.Object) return User_Object; function Class_Of (The_Object : User_Object) return Class.Object; function Class_Name_Of (The_Object : User_Object) return Class_Names; function Class_Name_Of (The_Object : Object) return Class_Names; function Last_Instance (Of_Class : Object) return Instance_Name; function Make (Name : Class_Names; Class_Size : Natural; Names : Slot_Names_Images) return Object; procedure Make_Empty (The_Class : in out Class.Object); function Slot_Name_Image (From_Class : Class.Object; For_Slot : Slot_Names) return String; function Match (The_Instance : Instance_Name; Against_Patterns : Query.Patterns; Using_Class : Class.Object) return Boolean; function Get (The_Object : User_Object) return Slots; function Get (The_Object : User_Object; Slot : Slot_Names) return Integer; procedure Add (To_Class : Class.Object; The_Instance : Slots); procedure Delete (The_Object : User_Object); procedure Change (The_Object : User_Object; To_Value : Slots); procedure Change (The_Object : User_Object; Slot : Slot_Names; To_Value : Integer); procedure Default_Put (The_Object : User_Object; Where : Output_Stream.Object); procedure Default_Put (The_Collection : User_Objects; Where : Output_Stream.Object); procedure Default_Put (The_Class : Class.Object; Where : Output_Stream.Object); generic with procedure Put (The_Object : User_Object; Where : Output_Stream.Object) is Default_Put; procedure Generic_Put (The_Class : Class.Object; Where : Output_Stream.Object); Overflow : exception; private Null_Instance_Name : constant Instance_Name := 0; type Object_Structure (Class_Size : Instance_Name); type Object is access Object_Structure; Null_Class : constant Object := null; type User_Object is record Isa : Class.Object := Class.Null_Class; Name : Class.Instance_Name := Class.Null_Instance_Name; end record; Null_User_Object : constant User_Object := (Isa => Class.Null_Class, Name => Class.Null_Instance_Name); end Class; generic Class_Name : Class_Names; Class_Size : Natural; type Slot_Names is (<>); package Generic_Class is type Slots is array (Slot_Names) of Integer; type Patterns is array (Slot_Names) of Predicate_Object; function Class_Object return Class.Object; function Exist (What : Patterns) return Query.Object; function Not_Any (What : Patterns) return Query.Object; function Absent (What : Patterns) return Query.Object renames Not_Any; function Get (The_Fact : Class.User_Object) return Slots; function Get (The_Fact : Class.User_Object; Slot : Slot_Names) return Integer; procedure Add (The_Fact : Slots); procedure Delete (The_Fact : Class.User_Object); procedure Change (The_Fact : Class.User_Object; Value : Slots); procedure Change (The_Fact : Class.User_Object; The_Slot : Slot_Names; To_Value : Integer); generic with function Image (For_Slot : Slot_Names; Value : Integer) return String; procedure Generic_Put (The_Fact : Class.User_Object; Where : Output_Stream.Object); Illegal_Access : exception; end Generic_Class; package Working_Memory is procedure Make_Empty; procedure Register (The_Class : Class.Object); function Get (Using : Class_Names) return Class.Object; function Retrieve (Filter : Query.Objects) return Class.User_Objects; generic with procedure Put (The_Fact : Class.User_Object; Where : Output_Stream.Object) is Class.Default_Put; procedure Generic_Put (Where : Output_Stream.Object); procedure Default_Put (Where : Output_Stream.Object); end Working_Memory; end Generic_Fact_Base;
nblk1=c nid=6 hdr6=12 [0x00] rec0=1f rec1=00 rec2=01 rec3=050 [0x01] rec0=1e rec1=00 rec2=09 rec3=01a [0x02] rec0=00 rec1=00 rec2=0b rec3=006 [0x03] rec0=12 rec1=00 rec2=07 rec3=062 [0x04] rec0=17 rec1=00 rec2=05 rec3=01e [0x05] rec0=16 rec1=00 rec2=03 rec3=036 [0x06] rec0=19 rec1=00 rec2=04 rec3=02c [0x07] rec0=1b rec1=00 rec2=08 rec3=016 [0x08] rec0=09 rec1=00 rec2=0a rec3=000 [0x09] rec0=0e rec1=00 rec2=0a rec3=000 [0x0a] rec0=15 rec1=00 rec2=07 rec3=000 [0x0b] rec0=0e rec1=00 rec2=0a rec3=000 tail 0x21525bbf2841254722466 0x42a00088462063c03 Free Block Chain: 0x6: 0000 00 02 03 fc 80 23 65 72 65 20 20 20 20 20 20 3a ┆ #ere :┆ 0x2: 0000 00 0c 03 fc 80 2c 68 65 5f 43 6c 61 73 73 20 3a ┆ ,he_Class :┆ 0xc: 0000 00 00 00 28 80 25 61 73 73 20 3a 20 43 6c 61 73 ┆ ( %ass : Clas┆