|
|
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: B T
Length: 4733 (0x127d)
Types: TextFile
Names: »B«
└─⟦180fe333a⟧ Bits:30000405 8mm tape, Rational 1000, SW CATALOG, 10_20_0
└─⟦180fe333a⟧ Bits:30000537 8mm tape, Rational 1000, SW Catalog 10_20_0
└─⟦5cb1d1d7f⟧ »DATA«
└─⟦3b1ee7bd8⟧
└─⟦this⟧
separate (Structure)
function Filtered_Version_Of (This_Catalog : in Catalog) return Catalog is
--
The_Result : Filtration_State;
--
procedure Filter_Catalog (This_Catalog : in Catalog;
This_State : in out Filtration_State;
Control_Result : out Traversal_Control) is
begin
This_State.Filtered_Catalog := new Catalog_Node;
This_State.Filtered_Catalog.Name := Lines.Copy (This_Catalog.Name);
This_State.Filtered_Catalog.Version :=
Lines.Copy (This_Catalog.Version);
This_State.Filtered_Catalog.Location :=
Lines.Copy (This_Catalog.Location);
This_State.Filtered_Catalog.Description :=
Text (Lines.Copy (Lines.Iterator (This_Catalog.Description)));
This_State.Filtered_Catalog.The_Diagnostic :=
Copy_Diagnostic (This_Catalog.The_Diagnostic);
This_State.Filtered_Catalog.The_Data_File := This_Catalog.The_Data_File;
This_State.Filtered_Catalog.Allowable_Models :=
Copy_Object_List (This_Catalog.Allowable_Models);
This_State.Filtered_Catalog.Allowable_Links :=
Copy_Object_List (This_Catalog.Allowable_Links);
This_State.Filtered_Catalog.Actual_Catalog :=
This_Catalog.Actual_Catalog;
This_State.Filtered_Catalog.Is_Good := This_Catalog.Is_Good;
Control_Result := Continue;
end Filter_Catalog;
--
procedure Filter_Section (This_Section : in Section;
This_State : in out Filtration_State;
Control_Result : out Traversal_Control) is
begin
if (not Dont_Want (This_Section)) then
This_State.Filtered_Section := new Section_Node;
This_State.Filtered_Section.Name := Lines.Copy (This_Section.Name);
This_State.Filtered_Section.Location :=
Lines.Copy (This_Section.Location);
This_State.Filtered_Section.Description :=
Text (Lines.Copy (Lines.Iterator (This_Section.Description)));
This_State.Filtered_Section.Kind := This_Section.Kind;
This_State.Filtered_Section.Parent := This_State.Filtered_Catalog;
This_State.Filtered_Section.Actual_Section :=
This_Section.Actual_Section;
Section_Lists.Add (This_State.Filtered_Catalog.Sections,
This_State.Filtered_Section);
end if;
Control_Result := Continue;
end Filter_Section;
--
procedure Filter_Item (This_Item : in Item;
This_State : in out Filtration_State;
Control_Result : out Traversal_Control) is
begin
if (not Dont_Want (This_Item)) then
This_State.Filtered_Item := new Item_Node;
This_State.Filtered_Item.Name := Lines.Copy (This_Item.Name);
This_State.Filtered_Item.Location :=
Lines.Copy (This_Item.Location);
This_State.Filtered_Item.Description :=
Text (Lines.Copy (Lines.Iterator (This_Item.Description)));
This_State.Filtered_Item.Kind := This_Item.Kind;
This_State.Filtered_Item.Imports :=
Copy_Object_List (This_Item.Imports);
This_State.Filtered_Item.Spec_Views :=
Copy_Object_List (This_Item.Spec_Views);
This_State.Filtered_Item.Load_Views :=
Copy_Object_List (This_Item.Load_Views);
This_State.Filtered_Item.Is_Proprietary := This_Item.Is_Proprietary;
This_State.Filtered_Item.Parent := This_State.Filtered_Section;
This_State.Filtered_Item.Actual_Item := This_Item.Actual_Item;
Item_Lists.Add (This_State.Filtered_Section.Items,
This_State.Filtered_Item);
end if;
Control_Result := Continue;
end Filter_Item;
--
procedure No_Op (This_Catalog : in Catalog;
This_State : in out Filtration_State) is
begin
null;
end No_Op;
--
procedure Traverse_And_Filter is new Traverse (Filtration_State,
Filter_Catalog,
Filter_Section,
Filter_Item,
No_Op);
--
begin
declare
Original_Catalog : Catalog := This_Catalog;
begin
Traverse_And_Filter (Original_Catalog, The_Result);
return (The_Result.Filtered_Catalog);
exception
when others =>
raise Bad_Element;
end;
end Filtered_Version_Of;