|
|
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 - metrics - download
Length: 8192 (0x2000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, function Get_Next, seg_0043e9, separate Ct_Hierarchy
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
with New_Keys;
separate (Ct_Hierarchy)
function Get_Next (This_Map : Display_Map; In_This_Window : Window)
return Ada_Program.Element is
function "=" (Left, Right : Window_Io.Raw.Key) return Boolean
renames Window_Io.Raw."=";
type Locations is (Element_Row, Parents_Row, Children_Row);
Location : Locations := Element_Row;
Position : Positive := 1;
Inverse_Bold : constant Window_Io.Font :=
(Window_Io.Plain, (Inverse => True, others => False));
The_Stream : Window_Io.Raw.Stream_Type;
Key_Hit : Window_Io.Raw.Key;
Current_Box : Object := This_Map.Element;
begin
Window_Io.Raw.Open (The_Stream);
loop
-- highlight the current element
Window_Io.Position_Cursor
(File => In_This_Window,
Line => Current_Box.Line,
Column => Current_Box.Col +
Ub_Strings.Length (Current_Box.Name) - 1,
Offset => 0);
Window_Io.Position_Cursor (File => In_This_Window,
Line => Current_Box.Line,
Column => Current_Box.Col,
Offset => 0);
Window_Io.Overwrite (File => In_This_Window,
Item => Ub_Strings.Image (Current_Box.Name),
Image => Inverse_Bold,
Kind => Window_Io.Text);
-- get a key
Window_Io.Raw.Get (The_Stream, Key_Hit);
-- de-highlight the current element
Window_Io.Position_Cursor (File => In_This_Window,
Line => Current_Box.Line,
Column => Current_Box.Col,
Offset => 0);
Window_Io.Overwrite (File => In_This_Window,
Item => Ub_Strings.Image (Current_Box.Name),
Image => Window_Io.Normal,
Kind => Window_Io.Text);
if Key_Hit = New_Keys.Left then
Location := Element_Row;
Current_Box := This_Map.Element;
elsif Key_Hit = New_Keys.Right then
Location := Element_Row;
Current_Box := This_Map.Return_Option;
elsif Key_Hit = New_Keys.Up then
case Location is
when Parents_Row =>
if Position > 1 then
Position := Position - 1;
Current_Box := This_Map.Parents (Position);
end if;
when Element_Row =>
if This_Map.Num_Parents > 0 then
Location := Parents_Row;
Position := This_Map.Num_Parents;
Current_Box := This_Map.Parents (Position);
end if;
when Children_Row =>
if Position = 1 then
Current_Box := This_Map.Element;
Location := Element_Row;
else
Position := Position - 1;
Current_Box := This_Map.Children (Position);
end if;
end case;
elsif Key_Hit = New_Keys.Down then
case Location is
when Parents_Row =>
if Position = 1 then
Location := Element_Row;
Current_Box := This_Map.Element;
else
Position := Position + 1;
Current_Box := This_Map.Parents (Position);
end if;
when Element_Row =>
if This_Map.Num_Children > 0 then
Location := Children_Row;
Position := 1;
Current_Box := This_Map.Children (1);
end if;
when Children_Row =>
if Position < This_Map.Num_Children then
Position := Position + 1;
Current_Box := This_Map.Children (Position);
end if;
end case;
elsif Key_Hit = New_Keys.Definition then
exit;
end if;
end loop;
Window_Io.Raw.Close (The_Stream);
return Current_Box.Contents;
end Get_Next;
nblk1=7
nid=0
hdr6=e
[0x00] rec0=1d rec1=00 rec2=01 rec3=00c
[0x01] rec0=00 rec1=00 rec2=07 rec3=020
[0x02] rec0=14 rec1=00 rec2=02 rec3=02c
[0x03] rec0=1a rec1=00 rec2=03 rec3=01e
[0x04] rec0=00 rec1=00 rec2=06 rec3=01e
[0x05] rec0=18 rec1=00 rec2=04 rec3=048
[0x06] rec0=16 rec1=00 rec2=05 rec3=000
tail 0x217001696815c634c096c 0x42a00088462061e03