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

⟦d37181a11⟧ Ada Source

    Length: 66560 (0x10400)
    Types: Ada Source
    Notes: 03_class, FILE, Long Ada Source, R1k_Segment, e3_tag, package body Xlbmp_Debugger, seg_004f00

Derivation

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

E3 Source Code



--/ if R1000 or Cdf_Hpux then
with Debug_Tools;
--/ end if;
--/ if R1000 then
with Transport;  
with Transport_Defs;
--/ end if;

with Xlbt_Arithmetic;  
use Xlbt_Arithmetic;  
with Xlbt_Basic3;  
use Xlbt_Basic3;  
with Xlbt_Color;  
use Xlbt_Color;  
with Xlbt_Event2;  
use Xlbt_Event2;  
with Xlbt_Font3;  
use Xlbt_Font3;  
with Xlbt_Gc;  
use Xlbt_Gc;  
with Xlbt_Geometry;  
use Xlbt_Geometry;  
with Xlbt_Hint3;  
use Xlbt_Hint3;  
with Xlbt_Key3;  
use Xlbt_Key3;  
with Xlbt_Keyboard3;  
use Xlbt_Keyboard3;  
with Xlbt_Proc_Var;  
use Xlbt_Proc_Var;  
with Xlbt_Rm;  
use Xlbt_Rm;  
with Xlbt_String;  
use Xlbt_String;  
with Xlbt_Visual3;  
use Xlbt_Visual3;  
with Xlbt_Window4;  
use Xlbt_Window4;

with Xlbp_Rm_Quark;  
use Xlbp_Rm_Quark;

with Xlbmt_Network_Types;  
use Xlbmt_Network_Types;

package body Xlbmp_Debugger is
------------------------------------------------------------------------------
-- X Library Machine Dependent Debugger Support
--
-- Xlbmp_Debugger - Some debuggers have special facilities that can be
-- set up for convenience in debugging.  Do whatever may be necessary to
-- set things up.
------------------------------------------------------------------------------
-- Copyright 1989 - 1991 by Rational, Santa Clara, California.
--
--                  All Rights Reserved.
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright notice(s) appear in all copies and that
-- both that copyright notice(s) and this permission notice appear in
-- supporting documentation, and that the name of Rational not be used in
-- advertising or publicity pertaining to distribution of the software
-- without specific, written prior permission.
--
-- Rational disclaims all warranties with regard to this software, including
-- all implied warranties of merchantability and fitness, in no event shall
-- Rational be liable for any special, indirect or consequential damages or
-- any damages whatsoever resulting from loss of use, data or profits, whether
-- in an action of contract, negligence or other tortious action, arising out
-- of or in connection with the use or performance of this software.
------------------------------------------------------------------------------

--/ if R1000 or Cdf_Hpux then

--\x0c
    ------------------------------------------------------------------------------
-- Variable_String - a crude variable length string type
------------------------------------------------------------------------------

    type Variable_String (Max_Length : Natural) is  
        record  
            Length : Natural := 0;  
            Str    : String (1 .. Max_Length);  
        end record;

    Max_Line : constant := 78;

--\x0c
    function Image (Str : Variable_String) return String is     begin  
        return Str.Str (1 .. Str.Length);  
    end Image;

--\x0c
    procedure Append (Str : in out Variable_String;  
                      Chr :        Character) is
------------------------------------------------------------------------------
--  Str - Specifies the string to modify
--  Chr - Specifies the character to append
--
-- Called to append a character onto the end of a variable string.
------------------------------------------------------------------------------
    begin  
        if Str.Length = Str.Max_Length then  
            return;  
        end if;  
        Str.Length           := Str.Length + 1;  
        Str.Str (Str.Length) := Chr;  
    end Append;

--\x0c
    procedure Append (Str : in out Variable_String;  
                      Val :        String) is
------------------------------------------------------------------------------
--  Str - Specifies the string to modify
--  Chr - Specifies the character to append
--
-- Called to append a string onto the end of a variable string.
------------------------------------------------------------------------------
    begin  
        if Str.Length + Val'Length > Str.Str'Last then  
            Append  
               (Str,  
                Val (Val'First .. Val'First - 1 + Str.Max_Length - Str.Length));  
            return;  
        end if;  
        Str.Str (Str.Length + 1 .. Str.Length + Val'Length) := Val;  
        Str.Length := Str.Length + Val'Length;  
    end Append;

--\x0c
    procedure Add (What      :        String;  
                   Result    : in out Variable_String;  
                   Last_Crlf : in out Natural;  
                   Prefix    :        String) is
------------------------------------------------------------------------------
--  What        - Specifies a string to add to the Result
--  Result      - Specifies our accumulated output
--  Last_Crlf   - Specifies the last crlf that we did
--  Prefix      - Specifies a new-line prefix string to use
--
-- Called to append a character onto the end of our output string.
------------------------------------------------------------------------------
    begin  
        if Last_Crlf + What'Length > Max_Line then  
            Append (Result, Ascii.Lf);  
            Append (Result, Prefix);  
            Last_Crlf := Prefix'Length;  
        end if;  
        Append (Result, What);  
        Last_Crlf := Last_Crlf + What'Length;  
    end Add;

--\x0c
    function Image_X_Atom (Value           : X_Atom;  
                           Level           : Natural;  
                           Prefix          : String;  
                           Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return the name of predefined atoms and something "intelligent" for others.
------------------------------------------------------------------------------
    begin

        case Value.Number is  
            when 1 =>  
                return "PRIMARY";  
            when 2 =>  
                return "SECONDARY";  
            when 3 =>  
                return "ARC";  
            when 4 =>  
                return "ATOM";  
            when 5 =>  
                return "BITMAP";  
            when 6 =>  
                return "CARDINAL";  
            when 7 =>  
                return "COLORMAP";  
            when 8 =>  
                return "CURSOR";  
            when 9 =>  
                return "CUT_BUFFER0";  
            when 10 =>  
                return "CUT_BUFFER1";  
            when 11 =>  
                return "CUT_BUFFER2";  
            when 12 =>  
                return "CUT_BUFFER3";  
            when 13 =>  
                return "CUT_BUFFER4";  
            when 14 =>  
                return "CUT_BUFFER5";  
            when 15 =>  
                return "CUT_BUFFER6";  
            when 16 =>  
                return "CUT_BUFFER7";  
            when 17 =>  
                return "DRAWABLE";  
            when 18 =>  
                return "FONT";  
            when 19 =>  
                return "INTEGER";  
            when 20 =>  
                return "PIXMAP";  
            when 21 =>  
                return "POINT";  
            when 22 =>  
                return "RECTANGLE";  
            when 23 =>  
                return "RESOURCE_MANAGER";  
            when 24 =>  
                return "RGB_COLOR_MAP";  
            when 25 =>  
                return "RGB_BEST_MAP";  
            when 26 =>  
                return "RGB_BLUE_MAP";  
            when 27 =>  
                return "RGB_DEFAULT_MAP";  
            when 28 =>  
                return "RGB_GRAY_MAP";  
            when 29 =>  
                return "RGB_GREEN_MAP";  
            when 30 =>  
                return "RGB_RED_MAP";  
            when 31 =>  
                return "STRING";  
            when 32 =>  
                return "VISUALID";  
            when 33 =>  
                return "WINDOW";  
            when 34 =>  
                return "WM_COMMAND";  
            when 35 =>  
                return "WM_HINTS";  
            when 36 =>  
                return "WM_CLIENT_MACHINE";  
            when 37 =>  
                return "WM_ICON_NAME";  
            when 38 =>  
                return "WM_ICON_SIZE";  
            when 39 =>  
                return "WM_NAME";  
            when 40 =>  
                return "WM_NORMAL_HINTS";  
            when 41 =>  
                return "WM_SIZE_HINTS";  
            when 42 =>  
                return "WM_ZOOM_HINTS";  
            when 43 =>  
                return "MIN_SPACE";  
            when 44 =>  
                return "NORM_SPACE";  
            when 45 =>  
                return "MAX_SPACE";  
            when 46 =>  
                return "END_SPACE";  
            when 47 =>  
                return "SUPERSCRIPT_X";  
            when 48 =>  
                return "SUPERSCRIPT_Y";  
            when 49 =>  
                return "SUBSCRIPT_X";  
            when 50 =>  
                return "SUBSCRIPT_Y";  
            when 51 =>  
                return "UNDERLINE_POSITION";  
            when 52 =>  
                return "UNDERLINE_THICKNESS";  
            when 53 =>  
                return "STRIKEOUT_ASCENT";  
            when 54 =>  
                return "STRIKEOUT_DESCENT";  
            when 55 =>  
                return "ITALIC_ANGLE";  
            when 56 =>  
                return "X_HEIGHT";  
            when 57 =>  
                return "QUAD_WIDTH";  
            when 58 =>  
                return "WEIGHT";  
            when 59 =>  
                return "POINT_SIZE";  
            when 60 =>  
                return "RESOLUTION";  
            when 61 =>  
                return "COPYRIGHT";  
            when 62 =>  
                return "NOTICE";  
            when 63 =>  
                return "FONT_NAME";  
            when 64 =>  
                return "FAMILY_NAME";  
            when 65 =>  
                return "FULL_NAME";  
            when 66 =>  
                return "CAP_HEIGHT";  
            when 67 =>  
                return "WM_CLASS";  
            when 68 =>  
                return "WM_TRANSIENT_FOR";  
            when others =>  
                return "X_Atom'(Number =>" & S_Long'Image (Value.Number) & ")";  
        end case;

    end Image_X_Atom;

    procedure Register_X_Atom is  
       new Debug_Tools.Register (X_Atom, Image_X_Atom);

--\x0c
    function Image_X_Color_Flags (Value           : X_Color_Flags;  
                                  Level           : Natural;  
                                  Prefix          : String;  
                                  Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Color_Flags_Index'Image (I), Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Color_Flags;

    procedure Register_X_Color_Flags is  
       new Debug_Tools.Register (X_Color_Flags, Image_X_Color_Flags);

--\x0c
    function Image_X_Key_Sym (Value           : X_Key_Sym;  
                              Level           : Natural;  
                              Prefix          : String;  
                              Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return the decimal and hexadecimal value of a key sym.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
        Tmp    : String (1 .. 16);  
    begin  
        Append (Result, '<');  
        S_Long_Io.Put (Tmp, S_Long (Value), Base => 10);  
        for I in Tmp'Range loop  
            if Tmp (I) /= ' ' then  
                Append (Result, Tmp (I .. Tmp'Last));  
                exit;  
            end if;  
        end loop;  
        S_Long_Io.Put (Tmp, S_Long (Value), Base => 16);  
        Append (Result, '/');  
        for I in Tmp'Range loop  
            if Tmp (I) /= ' ' then  
                Append (Result, Tmp (I .. Tmp'Last));  
                exit;  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Key_Sym;

    procedure Register_X_Key_Sym is  
       new Debug_Tools.Register (X_Key_Sym,  
                                 Image_X_Key_Sym);

--\x0c
    function Image_X_New_Window_Attributes  
                (Value           : X_New_Window_Attributes;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_New_Window_Attributes_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_New_Window_Attributes;

    procedure Register_X_New_Window_Attributes is  
       new Debug_Tools.Register (X_New_Window_Attributes,  
                                 Image_X_New_Window_Attributes);

--\x0c
    function Image_X_Per_Char_Flags (Value           : X_Per_Char_Flags;  
                                     Level           : Natural;  
                                     Prefix          : String;  
                                     Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Per_Char_Flags_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Per_Char_Flags;

    procedure Register_X_Per_Char_Flags is  
       new Debug_Tools.Register (X_Per_Char_Flags, Image_X_Per_Char_Flags);

--\x0c
    function Image_X_Rm_Quark (Value           : X_Rm_Quark;  
                               Level           : Natural;  
                               Prefix          : String;  
                               Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string containing the name of the quark.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
    begin

        Append (Result, '{');  
        begin  
            Append (Result, To_String (X_Rm_Quark_To_String (Value)));  
        exception  
            when others =>  
                Append (Result, "(bad quark value)");  
        end;  
        Append (Result, S_Long'Image (Value.Id));  
        Append (Result, '}');  
        return Image (Result);

    end Image_X_Rm_Quark;

    procedure Register_X_Rm_Quark is  
       new Debug_Tools.Register (X_Rm_Quark, Image_X_Rm_Quark);

--\x0c
    function Image_X_String (Value           : X_String;  
                             Level           : Natural;  
                             Prefix          : String;  
                             Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string containing the contents of an X_String.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
    begin

        Append (Result, '[');  
        Append (Result, S_Natural'Image (Value'First));  
        Append (Result, "..");  
        Append (Result, S_Natural'Image (Value'Last));  
        Append (Result, "==");  
        Append (Result, S_Natural'Image (Value'Length));  
        Append (Result, "] => ");  
        Append (Result, Ascii.Lf);  
        Append (Result, Prefix);

        Append (Result, '{');  
        for I in Value'Range loop  
            if X_Character'Pos (Value (I)) in 0 .. 127 then  
                if Value (I) = '\' then  
                    Append (Result, '\');  
                    Append (Result, '\');  
                elsif (Value (I) = Lf) then  
                    Append (Result, Ascii.Lf);  
                    Append (Result, Prefix);  
                else  
                    Append (Result, Character'Val  
                                       (X_Character'Pos (Value (I))));  
                end if;  
            else  
                Append (Result, '\');  
                Append (Result, Character'Val  
                                   (X_Character'Pos (Value (I)) - 128));  
            end if;  
        end loop;  
        Append (Result, '}');  
        return Image (Result);

    end Image_X_String;

    procedure Register_X_String is  
       new Debug_Tools.Register (X_String, Image_X_String);

--\x0c
    function Image_X_Window_Changes_Mask  
                (Value           : X_Window_Changes_Mask;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Window_Changes_Mask_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Window_Changes_Mask;

    procedure Register_X_Window_Changes_Mask is  
       new Debug_Tools.Register (X_Window_Changes_Mask,  
                                 Image_X_Window_Changes_Mask);

--\x0c
    function Image_X_Event_Mask (Value           : X_Event_Mask;  
                                 Level           : Natural;  
                                 Prefix          : String;  
                                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Event_Mask_Index'Image (I), Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Event_Mask;

    procedure Register_X_Event_Mask is  
       new Debug_Tools.Register (X_Event_Mask, Image_X_Event_Mask);

--\x0c
    function Image_X_Enter_Leave_Flags  
                (Value           : X_Enter_Leave_Flags;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Enter_Leave_Flags_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Enter_Leave_Flags;

    procedure Register_X_Enter_Leave_Flags is  
       new Debug_Tools.Register (X_Enter_Leave_Flags,  
                                 Image_X_Enter_Leave_Flags);

--\x0c
    function Image_X_Gc_Components (Value           : X_Gc_Components;  
                                    Level           : Natural;  
                                    Prefix          : String;  
                                    Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Gc_Components_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Gc_Components;

    procedure Register_X_Gc_Components is  
       new Debug_Tools.Register (X_Gc_Components, Image_X_Gc_Components);

--\x0c
    function Image_X_Size_Hints_Flags  
                (Value           : X_Size_Hints_Flags;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Size_Hints_Flags_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Size_Hints_Flags;

    procedure Register_X_Size_Hints_Flags is  
       new Debug_Tools.Register (X_Size_Hints_Flags, Image_X_Size_Hints_Flags);

--\x0c
    function Image_X_Wm_Hints_Flags (Value           : X_Wm_Hints_Flags;  
                                     Level           : Natural;  
                                     Prefix          : String;  
                                     Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Wm_Hints_Flags_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Wm_Hints_Flags;

    procedure Register_X_Wm_Hints_Flags is  
       new Debug_Tools.Register (X_Wm_Hints_Flags, Image_X_Wm_Hints_Flags);

--\x0c
    function Image_X_Key_Button_Mask  
                (Value           : X_Key_Button_Mask;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Key_Button_Mask_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Key_Button_Mask;

    procedure Register_X_Key_Button_Mask is  
       new Debug_Tools.Register (X_Key_Button_Mask, Image_X_Key_Button_Mask);

--\x0c
    function Image_X_Keyboard_Control_Flags  
                (Value           : X_Keyboard_Control_Flags;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Keyboard_Control_Flags_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Keyboard_Control_Flags;

    procedure Register_X_Keyboard_Control_Flags is  
       new Debug_Tools.Register (X_Keyboard_Control_Flags,  
                                 Image_X_Keyboard_Control_Flags);

--\x0c
    function Image_X_Parse_Geometry_Flags  
                (Value           : X_Parse_Geometry_Flags;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Parse_Geometry_Flags_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Parse_Geometry_Flags;

    procedure Register_X_Parse_Geometry_Flags is  
       new Debug_Tools.Register (X_Parse_Geometry_Flags,  
                                 Image_X_Parse_Geometry_Flags);

--\x0c
    function Image_X_Visual_Info_Flags  
                (Value           : X_Visual_Info_Flags;  
                 Level           : Natural;  
                 Prefix          : String;  
                 Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result    : Variable_String (5000);  
        Last_Crlf : Natural := Prefix'Length;  
        First     : Boolean := True;  
    begin  
        Append (Result, '<');  
        for I in Value'Range loop  
            if Value (I) then  
                if First then  
                    First := False;  
                else  
                    Append (Result, ',');  
                    Last_Crlf := Last_Crlf + 1;  
                end if;  
                Add (X_Visual_Info_Flags_Index'Image (I),  
                     Result, Last_Crlf, Prefix);  
            end if;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_X_Visual_Info_Flags;

    procedure Register_X_Visual_Info_Flags is  
       new Debug_Tools.Register (X_Visual_Info_Flags,  
                                 Image_X_Visual_Info_Flags);

--\x0c
    function Image_Connection_Id (Value           : Transport.Connection_Id;  
                                  Level           : Natural;  
                                  Prefix          : String;  
                                  Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
    begin  
        Append (Result, '<');  
        if Transport."=" (Value, Transport.Null_Connection_Id) then  
            Append (Result, "Null_Connection_Id");  
        else  
            Append (Result, "non-Null_Connection_Id");  
        end if;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_Connection_Id;

    procedure Register_Connection_Id is  
       new Debug_Tools.Register (Transport.Connection_Id, Image_Connection_Id);

--\x0c
    function Image_Status_Code (Value           : Transport_Defs.Status_Code;  
                                Level           : Natural;  
                                Prefix          : String;  
                                Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
    begin  
        Append (Result, '<');  
        Append (Result, Transport_Defs.Image (Value));  
        Append (Result, '>');  
        return Image (Result);  
    end Image_Status_Code;

    procedure Register_Status_Code is  
       new Debug_Tools.Register (Transport_Defs.Status_Code, Image_Status_Code);

--\x0c
    function Raw_Data_Image (Value : X_Raw_Data) return String is
------------------------------------------------------------------------------
--  Value   - Specifies the value (in the 0..255 range) to convert
--
-- Convert Value into a " ddd(hh)" string.  ddd is the decimal value and hh
-- is the hex value.
------------------------------------------------------------------------------
        Chr    : X_Raw_Data;  
        Result : String (1 .. 8);  
    begin

        Result (1) := ' ';  
        if Value > 99 then  
            Result (2) := Character'Val (Character'Pos ('0') + Value / 100);  
        else  
            Result (2) := ' ';  
        end if;  
        if Value > 9 then  
            Result (3) := Character'Val  
                             (Character'Pos ('0') + Value / 10 rem 10);  
        else  
            Result (3) := ' ';  
        end if;  
        Result (4) := Character'Val (Character'Pos ('0') + Value rem 10);  
        Result (5) := '(';  
        Chr        := Value / 16;  
        if Chr > 9 then  
            Result (6) := Character'Val (Character'Pos ('A') + Chr - 10);  
        else  
            Result (6) := Character'Val (Character'Pos ('0') + Chr);  
        end if;  
        Chr := Value rem 16;  
        if Chr > 9 then  
            Result (7) := Character'Val (Character'Pos ('A') + Chr - 10);  
        else  
            Result (7) := Character'Val (Character'Pos ('0') + Chr);  
        end if;  
        Result (8) := ')';  
        return Result;

    end Raw_Data_Image;

--\x0c
    function Image_X_Raw_Data_Array (Value           : X_Raw_Data_Array;  
                                     Level           : Natural;  
                                     Prefix          : String;  
                                     Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
        J      : Natural := Value'First;  
    begin  
        Append (Result, '[');  
        Append (Result, Natural'Image (Value'First));  
        Append (Result, "..");  
        Append (Result, Natural'Image (Value'Last));  
        Append (Result, "==");  
        Append (Result, Natural'Image (Value'Length));  
        Append (Result, "] => ");

        while J < Value'Last loop  
            Append (Result, Ascii.Lf);  
            Append (Result, Prefix);  
            declare  
                Num : constant String := "   " & Natural'Image (J);  
            begin  
                Append (Result, Num (Num'Last - 4 .. Num'Last));  
            end;  
            Append (Result, ":");  
            for I in reverse 1 .. 8 loop  
                Append (Result, Raw_Data_Image (Value (J)));  
                J := J + 1;  
                if J > Value'Last then  
                    exit;  
                end if;  
            end loop;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);

    exception  
        when others =>  
            return Image (Result);  
    end Image_X_Raw_Data_Array;

    procedure Register_X_Raw_Data_Array is  
       new Debug_Tools.Register (X_Raw_Data_Array, Image_X_Raw_Data_Array);

--\x0c
    function Image_X_Buffer (Value           : X_Buffer;  
                             Level           : Natural;  
                             Prefix          : String;  
                             Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
        J      : Natural := 1;  
    begin  
        Append (Result, '<');  
        Append (Result, "Used:");  
        Append (Result, Natural'Image (Value.Used));  
        Append (Result, "=>");

        while J < Value.Used loop  
            Append (Result, Ascii.Lf);  
            Append (Result, Prefix);  
            declare  
                Num : constant String := "   " & Natural'Image (J);  
            begin  
                Append (Result, Num (Num'Last - 4 .. Num'Last));  
            end;  
            Append (Result, ":");  
            for I in reverse 1 .. 8 loop  
                Append (Result, Raw_Data_Image (Value.Data (J)));  
                J := J + 1;  
                if J > Value.Used then  
                    exit;  
                end if;  
            end loop;  
        end loop;  
        Append (Result, '>');  
        return Image (Result);

    end Image_X_Buffer;

    procedure Register_X_Buffer is  
       new Debug_Tools.Register (X_Buffer, Image_X_Buffer);

--\x0c
    function Image_Subprogram_Type (Value           : X_Procedure_Variable;  
                                    Level           : Natural;  
                                    Prefix          : String;  
                                    Expand_Pointers : Boolean) return String is
------------------------------------------------------------------------------
-- Return a string of the form "<bit,bit,bit,bit>" where each "bit" is the
-- name of a bit that is turned on.
------------------------------------------------------------------------------
        Result : Variable_String (5000);  
    begin  
        Append (Result, '<');  
        if Value = None_X_Procedure_Variable then  
            Append (Result, "None_Proc_Var");  
        else  
            Append (Result, "non-None_Proc_Var");  
        end if;  
        Append (Result, '>');  
        return Image (Result);  
    end Image_Subprogram_Type;

    procedure Register_Subprogram_Type is  
       new Debug_Tools.Register (X_Procedure_Variable, Image_Subprogram_Type);

--/ end if;   -- R1000 or Cdf_Hpux

--\x0c
    procedure Register_Debugging_Imagers is
------------------------------------------------------------------------------
-- Registers special debugging printout routines with the R1000 debugger.
------------------------------------------------------------------------------
    begin

--/ if R1000 or Cdf_Hpux then

----Subprogram_Implementation

        Register_Subprogram_Type;

----Transport

        Register_Connection_Id;  
        Register_Status_Code;

----Basic

        Register_X_Atom;  
        Register_X_Color_Flags;  
        Register_X_Event_Mask;  
        Register_X_New_Window_Attributes;  
        Register_X_Per_Char_Flags;  
        Register_X_Window_Changes_Mask;

----System

        Register_X_Raw_Data_Array;

----Display

        Register_X_Buffer;

----Event

        Register_X_Enter_Leave_Flags;

----Gc

        Register_X_Gc_Components;

----Hints

        Register_X_Size_Hints_Flags;  
        Register_X_Wm_Hints_Flags;

----Key

        Register_X_Key_Button_Mask;  
        Register_X_Key_Sym;  
        Register_X_Keyboard_Control_Flags;

----RM

        Register_X_Rm_Quark;

----String

        Register_X_String;

----Utility

        Register_X_Parse_Geometry_Flags;  
        Register_X_Visual_Info_Flags;

--/ else -- not (R1000 or Cdf_Hpux)
--//    null;
--/ end if;

    end Register_Debugging_Imagers;

--\x0c
    procedure Check_Machine_Assumptions is separate;

--\x0c
begin

    Check_Machine_Assumptions;

end Xlbmp_Debugger;  

E3 Meta Data

    nblk1=40
    nid=0
    hdr6=80
        [0x00] rec0=30 rec1=00 rec2=01 rec3=09c
        [0x01] rec0=14 rec1=00 rec2=02 rec3=022
        [0x02] rec0=17 rec1=00 rec2=03 rec3=07a
        [0x03] rec0=01 rec1=00 rec2=40 rec3=002
        [0x04] rec0=1a rec1=00 rec2=04 rec3=056
        [0x05] rec0=02 rec1=00 rec2=3f rec3=00a
        [0x06] rec0=16 rec1=00 rec2=05 rec3=01c
        [0x07] rec0=15 rec1=00 rec2=06 rec3=09c
        [0x08] rec0=21 rec1=00 rec2=07 rec3=02c
        [0x09] rec0=1e rec1=00 rec2=08 rec3=01e
        [0x0a] rec0=1e rec1=00 rec2=09 rec3=00a
        [0x0b] rec0=1c rec1=00 rec2=0a rec3=04c
        [0x0c] rec0=1f rec1=00 rec2=0b rec3=004
        [0x0d] rec0=15 rec1=00 rec2=0c rec3=00c
        [0x0e] rec0=00 rec1=00 rec2=3e rec3=00e
        [0x0f] rec0=17 rec1=00 rec2=0d rec3=03c
        [0x10] rec0=00 rec1=00 rec2=3d rec3=006
        [0x11] rec0=1b rec1=00 rec2=0e rec3=02a
        [0x12] rec0=19 rec1=00 rec2=0f rec3=034
        [0x13] rec0=00 rec1=00 rec2=3c rec3=00e
        [0x14] rec0=15 rec1=00 rec2=10 rec3=00e
        [0x15] rec0=00 rec1=00 rec2=3b rec3=00e
        [0x16] rec0=16 rec1=00 rec2=11 rec3=09c
        [0x17] rec0=1b rec1=00 rec2=12 rec3=044
        [0x18] rec0=19 rec1=00 rec2=13 rec3=018
        [0x19] rec0=19 rec1=00 rec2=14 rec3=028
        [0x1a] rec0=1b rec1=00 rec2=15 rec3=018
        [0x1b] rec0=00 rec1=00 rec2=3a rec3=00e
        [0x1c] rec0=14 rec1=00 rec2=16 rec3=032
        [0x1d] rec0=01 rec1=00 rec2=39 rec3=00e
        [0x1e] rec0=16 rec1=00 rec2=17 rec3=046
        [0x1f] rec0=01 rec1=00 rec2=38 rec3=002
        [0x20] rec0=1a rec1=00 rec2=18 rec3=01e
        [0x21] rec0=16 rec1=00 rec2=19 rec3=03e
        [0x22] rec0=01 rec1=00 rec2=37 rec3=00a
        [0x23] rec0=17 rec1=00 rec2=1a rec3=032
        [0x24] rec0=00 rec1=00 rec2=36 rec3=00c
        [0x25] rec0=17 rec1=00 rec2=1b rec3=054
        [0x26] rec0=19 rec1=00 rec2=1c rec3=088
        [0x27] rec0=00 rec1=00 rec2=35 rec3=00e
        [0x28] rec0=18 rec1=00 rec2=1d rec3=024
        [0x29] rec0=00 rec1=00 rec2=34 rec3=00e
        [0x2a] rec0=17 rec1=00 rec2=1e rec3=024
        [0x2b] rec0=00 rec1=00 rec2=33 rec3=006
        [0x2c] rec0=1b rec1=00 rec2=1f rec3=024
        [0x2d] rec0=00 rec1=00 rec2=32 rec3=008
        [0x2e] rec0=16 rec1=00 rec2=20 rec3=004
        [0x2f] rec0=00 rec1=00 rec2=31 rec3=00e
        [0x30] rec0=17 rec1=00 rec2=21 rec3=004
        [0x31] rec0=00 rec1=00 rec2=30 rec3=00e
        [0x32] rec0=1a rec1=00 rec2=22 rec3=02a
        [0x33] rec0=16 rec1=00 rec2=23 rec3=05a
        [0x34] rec0=15 rec1=00 rec2=24 rec3=05c
        [0x35] rec0=1b rec1=00 rec2=25 rec3=01c
        [0x36] rec0=00 rec1=00 rec2=2f rec3=014
        [0x37] rec0=16 rec1=00 rec2=26 rec3=042
        [0x38] rec0=1a rec1=00 rec2=27 rec3=024
        [0x39] rec0=00 rec1=00 rec2=2e rec3=00a
        [0x3a] rec0=1a rec1=00 rec2=28 rec3=014
        [0x3b] rec0=00 rec1=00 rec2=2d rec3=00a
        [0x3c] rec0=1e rec1=00 rec2=29 rec3=038
        [0x3d] rec0=15 rec1=00 rec2=2a rec3=044
        [0x3e] rec0=2d rec1=00 rec2=2b rec3=006
        [0x3f] rec0=29 rec1=00 rec2=2c rec3=000
    tail 0x21500953c8197801faaed 0x42a00088462063203