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

⟦d3f5482fa⟧ Ada Source

    Length: 37888 (0x9400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Dependents, pragma Module_Name 4 2227, pragma Subsystem Object_Editor, seg_012831

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



package Dependents is

    type Display_Kind is (Subsystems, Views, Units, Parents, Item_Kinds,
                          Units_And_Kinds, Units_And_Items, Parents_And_Items);

    type Dependents_Level is (Unfiltered, Immediate,
                              Reference_Closure, Demote_Closure);

    procedure Show (Name : String := "<CURSOR>";
                    Display : Display_Kind := Dependents.Units;
                    Level : Dependents_Level := Dependents.Unfiltered;
                    Limit : String := "<ALL_WORLDS>";
                    Global : Boolean := True;
                    Options : String := "");
    --
    -- invoke the dependents object_editor.
    --
    -- dependents are entities which depend on the identifier specified
    -- by the first argument. this dependence can be because of a direct
    -- naming of that identifier, because of being the second part of a
    -- two part item or because of a closure computation.
    -- dependents can be either compilation units or constructs
    -- within compilation units.
    --
    -- in the comments that follow the term "unit" will mean a
    -- compilation unit.
    -- the term "item" will refer to a construct within a compilation unit.
    -- the term "main_item" will refer to the unit or item whose
    -- dependents are being shown.
    -- the term "kind" will refer to the kind of an item.
    -- the term "parent" will refer to an ada program unit.
    --
    -- the first argument to dependents.show can be a naming expression
    -- which resolves to several def_ids in the same ada space.
    --   e.g. dependents.show ("directory.naming.resolve'spec");
    -- this will run the dependents analysis over all of the def_ids
    -- resolved to by the naming expression.
    -- one can also place marks on a group of def_ids in the same space
    -- and invoke the command as:
    --  dependents.show ("<marks>", options => "count=n");
    -- where n is the number of marks to be taken off the mark_stack.
    -- this will run the dependents analysis over all the def_ids
    -- removed from the mark_stack.
    --
    -- the line(s) of a dependents display before the first blank line
    -- denote the main_item(s).
    -- the succeeding nonblank lines denote dependents.
    --
    -- the display argument determines whether unit level or item
    -- level dependents are shown and how the information is presented.
    -- (see below).
    --
    -- the level argument determines what level of dependence should be
    -- shown initially. this can be changed after the display is brought up.
    --
    -- limit, if not defaulted, restricts the displayed dependents to
    -- those that occur within objects specified by the limit
    -- naming expression.
    --
    -- if global = false then only uses within the unit containing the
    -- identifier resolved to will be shown (by underlining them).
    --
    ---------------------------------------------------------------------------
    --
    -- explanation of the display kinds.
    --
    -- these different displays can be produced using the elide/expand
    -- and sort commands. the display kinds are ordered so that moving
    -- through them produces more specific information about the dependents.
    --
    --  Subsystems
    --    full names of subsystems containing views with dependents.
    --
    --  Views
    --    full names of views containing units with dependents.
    --
    --  Units
    --    names of compilation units that contain dependents or are
    --    themselves dependents.
    --    see below for how to control how compilation unit names
    --    are displayed.
    --
    --  Parents
    --    names of ada program units containing dependents.
    --    these will be the names of procedures, functions, packages,
    --    tasks, generics, or record_types which immediately contain
    --    dependent items.
    --    this display lists the parent name followed by the unit name.
    --    example:
    --
    --       set_value    STACK_MANAGER'BODY !L1.L2.L3
    --       get_value    STACK_MANAGER'BODY !L1.L2.L3
    --       add_element  TEST'BODY          !U1.U2
    --
    --    this says that program unit set_value contains a dependent
    --    as does get_value and add_element.
    --
    --    in the case where the parent ada program unit is itself a
    --    compilation unit or in the case where an entire compilation
    --    unit is a dependent, the parent name field will be given as
    --    *comp_unit*.
    --
    -- Item_Kinds
    --    this display shows the kind of the nearest ada construct
    --    enclosing a dependent, followed by the parent name.
    --    the constructs will be from the categories statements,
    --    declarations, etc.
    --    there will be one line per dependent construct.
    --    example:
    --
    --       assign  set_value    STACK_MANAGER'BODY !L1.L2.L3
    --       if      get_value    STACK_MANAGER'BODY !L1.L2.L3
    --       call    add_element  TEST'BODY          !U1.U2
    --
    --    the first line says that an assignment statement in the
    --    program unit set_value which is in the compilation unit
    --    !L1.L2.L3.STACK_MANAGER'BODY has a dependent within it.
    --
    --    if the display level is demote_closure (see below) then
    --    the construct shown will be the nearest enclosing demotable
    --    item containing dependents.
    --
    --    sometimes an item level dependent will be an entire comp unit.
    --
    -- Units_And_Kinds
    --    this display shows the same information as the previous one
    --    but it presents each compilation unit first, followed by its
    --    list of dependents. with a blank line between each comp unit.
    --    example:
    --
    --       STACK_MANAGER'BODY !L1.L2.L3
    --         assign set_value
    --         if     get_value
    --
    --       TEST'BODY          !U1.U2
    --         call   add_element
    --
    -- Units_And_Items
    --    this display is similar to the previous one in that it
    --    shows the name of each compilation unit preceded by a blank
    --    line; but rather than showing just the name of the kind of
    --    construct which has a dependent, it shows a compressed one
    --    line form of the text of the ada construct.
    --    the place within the construct that has a reference to the
    --    main_item will be underlined. (not shown here).
    --    example:
    --
    --      STACK_MANAGER'BODY !L1.L2.L3
    --         Abc := Def (3);
    --         if Def (5) then
    --
    --      TEST'BODY          !U1.U2
    --         Foo (Stack_Manager.Def (4));
    --
    -- Parents_And_Items
    --   this display is similar to the previous one with the change that
    --   the one line form of the text of an ada construct is replaced
    --   by a group of lines of the form
    --
    --        parent_kind parent_name
    --          line 1 of ada text
    --          ...
    --          line n of ada text.
    --
    --   example:
    --
    --      STACK_MANAGER'BODY !L1.L2.L3
    --         proc_body set_value
    --           Abc := Def (3);
    --
    --         func_body get_value
    --           if Def (5) then
    --               Mumble;
    --           end if;
    --
    --      TEST'BODY          !U1.U2
    --         proc_body add_element
    --           Foo (Stack_Manager.Def (4));
    --
    ---------------------------------------------------------------------------
    --
    -- compilation unit and library names are always shown in upper case.
    -- parent names and item kinds are shown in lower case.
    --
    -- full names of compilation units can be displayed either
    -- with the library unit name first, some space, and then the
    -- library name; or as the standard pathname with library name
    -- first, followed immediately by the library unit name.
    --
    -- there is an option to control which format is used.
    -- this option is either set when the command is invoked;
    -- or if it is not explicitly given in the option string,
    -- the session switch:
    --    Dependents_In_Order_Pathnames is checked.
    -- furthermore after a display has been brought up the value of this
    -- option can be changed by the In_Order command
    --
    -- if pathnames are being shown in transposed order there is an option
    -- to control whether library names are shown.
    -- there is also a corresponding session switch called:
    --    Dependents_Show_Library and a command called Libraries.
    --
    -- there is an option to control whether compilation states are
    -- shown for the units or items in a display.
    -- there is also a corresponding session switch called:
    --    Dependents_Show_Unit_State and a command called States.
    -- compilation states will be shown as a single letter from
    -- S, I, C, preceding the unit or item.
    --
    -- there is a session switch called
    --    Dependents_Delta0_Compatibility (which defaults to true)
    -- which if set implies in_order pathnames and controls the
    -- format of the first line.
    -- this switch also controls the contents of the first line
    -- in obsolescence windows.
    --
    ---------------------------------------------------------------------------

    -- dependents_level meanings:
    --
    --   unfiltered
    --     dependent units directly from the ddb are shown without
    --     checking if they actually have references to the main_item.
    --     sometimes more units will be listed than those that actually
    --     have dependents. this can occur in the case of a main_item
    --     which is overloadable; or in the case of a unit which once had
    --     a dependent but no longer does. also the unit containing
    --     the main_item is always listed as a potential dependent.
    --     this display is only possible for unit displays.
    --     if an elision command is given to change the display to an
    --     item display the units will be automatically filtered.
    --     also if the main_item is a record field the initial display
    --     will always be filtered.
    --
    --   immediate
    --     units are checked for references.
    --     only units which actually have dependents are shown.
    --
    --   reference_closure
    --     in addition to showing immediate references:
    --
    --     * for types, packages, subprograms, exceptions
    --     references to renames and derivations are included.
    --     * for items in generic specs -  references to the corresponding
    --     id in instantiations of that generic are shown.
    --     * for subprogram parameters - parameters passed in calls
    --     are shown.
    --     * for generic parameters - actual parameters passed to the
    --     parameter in instantiations are shown.
    --
    --     also, for any main_item which can occur as a default value for a
    --     subprogram parameter, any call which uses the default will be
    --     marked as a dependent of the main_item.
    --
    --   demote_closure
    --     units or items which have to be demoted to demote the
    --     main_item are shown.
    --
    --     for the demote/promote commands when region selections are used,
    --     which display kind is being shown, determines whether whole
    --     compilation units are demoted/promoted or individual items
    --     within compilation units are demoted/promoted.
    --     if the display kind is Units then comp units will be
    --     demoted/promoted. otherwise items will be demoted/promoted.
    --     (even though comp_unit names occupy a separate line in
    --     certain elision levels and may be included in the selection).
    --
    --     when item level demote_closure is being shown, contiguous
    --     dependent items will be merged into one line in the display.
    --     (and will be demoted as a group).
    --
    --     scenario for editing the main_item:
    --
    --     * bring up an initial unit display.
    --     * if you wish to demote item level dependents.
    --       create a command window and type: items;
    --       this will change the display kind to item level dependents.
    --     * press the complete key.
    --       this will change the display to demote_closure
    --     * select the entire display.
    --     * press the demote key.
    --       this will demote all dependents and the main_item to source.
    --     * to edit the demoted main_item or any of the demoted dependents
    --       put the cursor on the line which represents that item or unit
    --       and press the edit key.
    --       this will bring up a window on the unit or item.
    --     * make any changes, committing the windows.
    --       when all changes have been made, return to dependents menu and
    --     * select the display.
    --     * press the promote key.
    --       this will promote all source units or items in the display
    --       to installed.
    --       if any items fail to install they can be fixed and promoted
    --       again with single line selections or if a region is selected and
    --       it contains a mix of both source and installed items only the
    --       source items will be promoted.
    --
    -- remember that certain kinds of items which one can produce an xref of
    -- cannot be incrementally edited. these include enumeration literals,
    -- record fields, subprogram and generic parameters.
    --
    ---------------------------------------------------------------------------
    --
    -- options on show command.
    --
    --   IN_PLACE
    --      brings up the window on top of the current window.
    --      default is false.
    --
    --   NEW_WINDOW
    --      always create a new window for this display.
    --      default is to reuse an existing dependents window.
    --      previous contents of a reused dependents window can be
    --      revisited using object undo/redo or the Contents command.
    --
    --   MENU_ALWAYS
    --      if menu_always is false (the default) and the only dependents
    --      are within the same unit as the main_item then no window is
    --      brought up and the dependents are underlined.
    --      if menu_always is true then a window is always brought up
    --      if there are any dependents.
    --
    --   COUNT=<integer>
    --      count > 1 specifies that count-many contiguous def_ids
    --      starting at the one selected are to have their dependents
    --      shown. default is 1.
    --
    --   STATES
    --      show unit/item compilation states, default is false.
    --
    --   IN_ORDER
    --      show comp unit names with library first, default is false
    --
    --   LIBRARIES
    --      show library names, default is true.
    --
    --   SOURCE
    --      default is false.
    --      search source units which are registered in the ddb
    --      for dependents. also search source bodies/subunits of
    --      units whose specs/bodies have been checked.
    --      checking for dependents within source units will not in
    --      general be exact. in the absence of semantic information
    --      a heuristic approach is taken which in most cases (if the
    --      identifier of the main_item is distinctive) will find
    --      the set of dependents (and possibly some other items which
    --      aren't actually dependents).
    --
    --   CHECK=<naming_expression>
    --      check any source units in the naming expression for references.
    --
    --   RESTRICT = <argument>
    --      see Restrict command below for legal argument values.
    --
    ---------------------------------------------------------------------------
    --
    -- common commands which can be applied when the cursor is in a
    -- dependents window.
    --
    -- * common.definition
    --    visit the entity denoted by the line the cursor is on.
    --    if the line denotes a compilation unit or parent with dependents
    --    then they will be underlined and the cursor positioned to the
    --    first of them.
    --    if line denotes an item then the cursor will be positioned
    --    on that item, which will be selected.
    --    if the cursor line has a parent or unit name in it and the cursor
    --    has been moved onto that parent or unit name then that parent
    --    or unit will be visited.
    --    if the cursor line is showing full ada text and the cursor has been
    --    moved to a using identifier the definition of the using identifier
    --    will be visited.
    --    the node which would be visited by definition is the node which
    --    this editor returns when name resolution of <CURSOR> is run
    --    against it. so if while reading an xref display one wants to
    --    run another xref off an item in the display this can be done
    --    by positioning the cursor on the desired item in the xref
    --    display and invoking the xref command.
    --
    -- * common.edit:
    --    (demote if necessary and possible and) edit the item
    --    of the line the cursor is on.
    --    if the item is in the installed (or greater) state it
    --    must be selected.
    --
    -- * common.enclosing:
    --    find the image of the object for which these items are dependents.
    --
    -- * common.demote:
    --    demote the entities corresponding to the set of lines selected.
    --    if the entire image is selected the goal state will be source.
    --    otherwise it will be the predecessor of the current state of the
    --    entity.
    --
    -- * common.promote:
    --    promote the entitites corresponding to the set of lines selected.
    --
    -- * common.format
    --    if display is unfiltered, change it to immediate.
    --
    -- * common.semanticize
    --    if display is unfiltered, change it to immediate.
    --    if display is immediate, change it to reference_closure.
    --
    -- * common.complete
    --    change display to demote_closure.
    --
    -- * common.undo and redo
    --    move thru the images in this window.
    --
    -- * common.revert:
    --    recompute the current dependents set of the main_item.
    --
    -- * common.object.delete
    --    destroy the item selected.
    --
    -- * common.expand and elide
    --    relative motion among the display kinds.
    --    repeat count > 1 moves multiple steps.
    --    if there is no selection the entire display is moved to a
    --    new elision level.
    --    if there is a selection, only the selected entity will be
    --    expanded/elided.
    --    if a selected item is at the final elision level and expand
    --    is typed, the display will be replaced by the ada text
    --    for an enclosing construct of that item.
    --    this will continue with further expands until the program unit
    --    containing the item fills the display.
    --    if the display is showing just an expanded_item,
    --    elide will transition the display back to the full dependents
    --    display.
    --
    -- * common.sort_image
    --    absolute addressing of display kinds based on format parameter.
    --    1 = subsystems, 2 = views, 3 = units, 4 = parents, 5 = item_kinds,
    --    6 = units_and_kinds, 7 = units_and_items, 8 = parents_and_items.
    --    if a display has some lines at a different elision level from
    --    the entire display level, 0 as a sort prefix will change all
    --    lines to the current display level.
    --
    -- * common.object.child
    --    if no selection, select the item under the cursor, otherwise
    --    expand the item under the cursor.
    --    if the entire display is showing an expanded_item, this command
    --    will not require a selection to expand.
    --
    -- * common.object.next/previous
    --    if no selection, select the item under the cursor.  If there is a
    --    selection, move it to the next/previous item.

    -- * common.object.parent
    --    if no selection, select the item under the cursor.  If the item is
    --    selected, expand the selection.
    --
    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------
    --
    package Commands is
        -- commands which can be run off of a dependents window

        procedure Items;
        -- change the display to an item level display

        procedure Units;
        -- change the display to a unit level display

        procedure Parents;
        -- change the display to a parents display

        procedure Immediate;
        -- change the display to an immediate dependents display

        ----------------------------------------------------------------------

        procedure Libraries (Show : Boolean := True);
        -- control whether library names are displayed

        procedure States (Show : Boolean := True);
        -- control whether unit states are displayed

        procedure In_Order (Value : Boolean := True);
        -- control whether comp unit names have library names shown first

        procedure Contents;
        -- show a table of contents for the images in this window.

        ---------------------------------------------------------------------

        procedure Keep;
        -- if there is a selection then remove any units not selected
        -- from the display. it there is no selection remove all but the
        -- line the cursor is on.

        procedure Remove;
        -- it there is a selection then remove selected units from the
        -- display. if there is no selection remove the unit the cursor is on.

        procedure Show_All;
        -- redisplay any units removed by keep, or remove.

        procedure Limit (To : String := "<ACTIVITY>");
        -- limit the set of units displayed.

        procedure Unlimit;
        -- show any units that were removed by a limit command

        ------------------------------------------------------------

        procedure Uncode;
        -- demote all coded units selected in the display to installed

        procedure Source;
        -- demote all units selected in the display to source

        procedure Installed;
        -- promote all units selected in the display to installed

        procedure Coded;
        -- promote all units selected in the display to coded

        procedure Remake;
        -- promote all units selected in the display to their state when
        -- first displayed.

        ----------------------------------------------------------------------

        procedure Look_Through (Name : String := "<ACTIVITY>";
                                Limit : Boolean := False);

        -- the main_item must be in a spec.
        --
        -- if name is an activity:
        --   if the main_item is in a load_view find its corresponding
        --   id in the spec view implied by the activity and
        --   display that id's dependents.
        --   if limit is true then limit the dependents to views in the
        --   activity.
        --
        --   if the main_item is in a spec_view find its corresponding
        --   id in the load view implied by the activity and
        --   display that id's dependents.
        --   limit is not relevant is this case.
        --
        -- if name is a view or world:
        --   find the corresponding id for the main_item in the given
        --   view or world and display that id's dependents.

        procedure Succ (Repeat : Integer := 1);
        -- reconstruct the display with the next def_id after the
        -- current main id

        procedure Pred (Repeat : Integer := 1);
        -- reconstruct the display with the prior def_id to the current
        -- main id

        procedure Diana_Edit;
        -- run diana_edit on the node the cursor is on.

        ------------------------------------------------------------

        procedure Restrict (To : String);

        -- restrict the display to a particular kind of reference.
        -- the argument can be a sequence of one or more of the following
        -- restriction kinds:
        --
        --   internal       - show only uses of the main_item (which must
        --                    be in the visible part of a package)
        --                    which are within that package
        --   external       - show only uses of the main_item (which must
        --                    be in the visible part of a package)
        --                    which are outside of that package
        --   defaulted      - show calls where a parameter is defaulted.
        --   nondefaulted   - show calls where a parameter isn't defaulted.
        --   used_ops       - show only operators made visible by a use clause
        --   used_ids       - show only non operators made visible by a
        --                    use clause
        --   closure        - show only references which are in the
        --                    reference_closure and not in the immediate set.
        --   writes         - show places where an object is assigned to.
        --
        --   variables, constants, numbers, exceptions, types,
        --   subtypes, generics, tasks, parameters, withs, uses,
        --   subprograms, specs, bodies, renamings, instantiations,
        --   compound_types, record_types, array_types,
        --   derived_types, access_types, numeric_types, enum_types,
        --   stmts, alternatives, handlers, accepts, assigns,
        --   calls, loops, ifs, cases, returns, raises, selects,
        --   aggregates, allocators, relationals, conversions,
        --   pragmas
        --
        -- any unique prefix of a restriction kind can be given.
        -- several restrictions can be given in one command by
        -- separating them by a space. e.g.
        --    restrict ("external alternatives"); or
        --    restrict ("ext alt");
        -- this means only show case alternatives which are external to
        -- the package containing the main_item.
        --
        -- a restriction kind can be negated by prefixing it with
        -- a not sign (~). e.g.
        --    restrict ("~withs ~parameters);
        -- this means only show contructs that aren't with clauses and
        -- aren't parameter declarations.
        --
        -- restrict ("?"); displays the names of all restriction kinds.


        procedure Unrestrict;
        -- show any items that were removed by a restrict command

        ------------------------------------------------------------

        procedure Display (Constructs : String);

        -- find transitive uses of a main_item which is a type
        -- or record field in a particular kind of construct.
        -- possible values of the argument are:
        --    aggregates,
        --    allocators,
        --    assigns,
        --    cases,
        --    creates,
        --    assign_closure,
        --    create_closure.
        --
        -- any unique prefix of the argument name can be given.
        -- several arguments can be given by separating them by spaces.
        --   e.g. display ("creates create_closure");
        --
        -- aggregates shows all aggregates over the main_item if it is
        -- a compound type (record, array);
        -- if the main_item is a discrete type it shows array aggregates
        -- whose index type is the main_item.
        --
        -- allocators shows all allocators whose result type is the main_item.
        --
        -- assigns show assigment statements where an object of the type
        -- is assigned. in the case of compound types it also shows where an
        -- assignment to a subcomponent is done.
        --
        -- cases shows all cases statements over the main_item
        -- (which must be discrete type).
        --
        -- creates shows places where a variable or constant of the type
        -- is declared; or where an allocator of an object of the type
        -- is done.
        --
        -- assign_closure, create_closure run the analysis over compound types
        -- which contain the main_item as a subcomponent.

        -- object undo will change the display back to a regular
        -- dependents display.
        --
        ------------------------------------------------------------

        procedure Replace (Target : String := "";
                           Replacement : String := "";
                           Wildcard : Boolean := False;
                           Main_Also : Boolean := True);
        -- edit each source item in the display and do a search/replace
        -- of the target with replacement.

        ------------------------------------------------------------

        function Names return String;
        -- return a string of the form [u1,u2,...un]
        -- where ui is the ith unit showing in the display
        -- or in the selection if there is one.

        ---------------------------------------------------------------------------

        procedure Delete;
        -- for a window with a set of images within it,
        -- remove this image from the set and redraw the window
        -- with the prior one in the history.

        ---------------------------------------------------------------------------

        procedure Subunit_Levels (Number : Integer := Integer'Last);
        -- number of parent library unit names to show for the non in_order
        -- unit name field.
        -- a value of 1 means show the name of the innermost enclosing
        -- subunit only (if the enclosing unit is a library unit it
        -- will always be shown).
        -- a value of 2 means show the names of at most 2 of the innermost
        -- enclosing subunits and so on.
        -- a value of integer'last causes full names to be shown again.
        -- a value of 0 means don't show subunit names just show the
        -- library unit name.
        -- a value of integer'first means don't show the unit name field
        -- at all in the items and parents elision levels.
        -- a value of -x means remove abs (x) names from the front of
        -- a name.

        procedure Parent_Levels (Number : Integer := Integer'Last);
        -- number of parent names to show in the parent name field.

        procedure Unit_Length (Max : Integer := Integer'Last);
        -- max length name to display in the unit name field.

        procedure Parent_Length (Max : Integer := Integer'Last);
        -- max length name to display in the parent name field.
    end Commands;

    ---------------------------------------------------------------------------
    ---------------------------------------------------------------------------

    procedure Window (Kind : String := "xref";
                      Restart : Boolean := True;
                      In_Place : Boolean := False;
                      Wrap : Boolean := False);

    -- make visible a menu window.
    -- choices for kind include:
    --  xref, find, unused, errors, holds, ada_menu, menu.
    -- if restart = true bring up the most recently created.
    -- if there are multiple windows of the kind specified and
    -- restart = false then cycle thru the windows with successive calls.
    -- when at last window, wrap controls whether to go back to first.

    ---------------------------------------------------------------------------

    procedure Find (Pattern : String := "";
                    Units : String := "$@?";
                    Display : Display_Kind := Dependents.Units_And_Kinds;
                    Wildcard : Boolean := False;
                    Ignore_Case : Boolean := True;
                    Options : String := "");

    -- search the ada units specified by units for the given pattern.
    -- any units with occurences will be displayed in a menu.


    procedure Unused (In_Units : String := "<CURSOR>";
                      Check_Other_Units : Boolean := False;
                      Display : Display_Kind := Dependents.Units_And_Kinds;
                      Options : String := "");

    -- show the declarations in units that are not referenced.
    -- any units with unused declarations will be displayed in a menu.

    -- for find and unused the following are allowed.
    --
    -- options:
    --   in_place, new_window, restrict, libraries, states, in_order,
    --   menu_always.
    --
    -- common commands:
    --  definition, edit, enclosing, demote, promote, delete,
    --  elide, expand, sort, next, previous, parent, child, undo, redo,
    --  revert (for unused only).
    --
    -- dependents commands:
    --  libraries, in_order, states, items, units, parents,
    --  limit, unlimit,  restrict, unrestrict,  keep, remove, show_all,
    --  contents, replace, names, diana_edit,
    --  uncode, source, installed, coded, remake.
    --
    ---------------------------------------------------------------------------

    procedure Menu (Units : String;
                    First_Line : String := "";
                    Name_Field : String := "";
                    Options : String := "");

    -- display a menu of the units resolved to by units.
    --
    -- options allowed:
    --   in_place, new_window, libraries, states, in_order.
    --
    -- common commands:
    --   definition, edit, enclosing, demote, promote, parent, child,
    --   next, previous, undo, redo
    --
    -- dependents commands:
    --   replace, limit, unlimit, keep, remove, show_all, contents,
    --   in_order, states, libraries, uncode, source, installed, coded, remake.

    ---------------------------------------------------------------------------

    procedure Errors (Units : String := "<CURSOR>"; Options : String := "");

    -- display a menu of the error messages in the units specified.
    -- if <cursor> is given and the cursor is on a node with error messages
    -- then just display the messages on that node.
    --
    -- if an error message refers to another node that node can be accessed
    -- from the menu by moving the cursor to the end of the error message
    -- text and doing definition.
    --
    -- options allowed:
    --   in_place, new_window, in_order, libraries, menu_always,
    --   kind =
    --      all_errors - the default, show all messages.
    --      warnings   - show only warnings messages
    --      errors     - show only error messages, no warnings.
    --
    --   if menu_always is false then no menu will be brought up. the
    --   error nodes will be underlined in the ada unit.
    --
    ---------------------------------------------------------------------------

    procedure Holds (Count : Integer := 10; Options : String := "");

    -- show a menu of the items on the hold stack.


    pragma Subsystem (Object_Editor);
    pragma Module_Name (4, 2227);

end Dependents;

E3 Meta Data

    nblk1=24
    nid=0
    hdr6=48
        [0x00] rec0=17 rec1=00 rec2=01 rec3=01a
        [0x01] rec0=13 rec1=00 rec2=02 rec3=026
        [0x02] rec0=16 rec1=00 rec2=03 rec3=020
        [0x03] rec0=18 rec1=00 rec2=04 rec3=020
        [0x04] rec0=18 rec1=00 rec2=05 rec3=00e
        [0x05] rec0=15 rec1=00 rec2=06 rec3=026
        [0x06] rec0=19 rec1=00 rec2=07 rec3=044
        [0x07] rec0=1d rec1=00 rec2=08 rec3=062
        [0x08] rec0=13 rec1=00 rec2=09 rec3=06e
        [0x09] rec0=15 rec1=00 rec2=0a rec3=078
        [0x0a] rec0=14 rec1=00 rec2=0b rec3=04a
        [0x0b] rec0=13 rec1=00 rec2=0c rec3=06c
        [0x0c] rec0=14 rec1=00 rec2=0d rec3=012
        [0x0d] rec0=13 rec1=00 rec2=0e rec3=014
        [0x0e] rec0=17 rec1=00 rec2=0f rec3=004
        [0x0f] rec0=17 rec1=00 rec2=10 rec3=062
        [0x10] rec0=15 rec1=00 rec2=11 rec3=00e
        [0x11] rec0=14 rec1=00 rec2=12 rec3=04a
        [0x12] rec0=1c rec1=00 rec2=13 rec3=060
        [0x13] rec0=12 rec1=00 rec2=14 rec3=08e
        [0x14] rec0=16 rec1=00 rec2=15 rec3=076
        [0x15] rec0=1e rec1=00 rec2=16 rec3=022
        [0x16] rec0=1b rec1=00 rec2=17 rec3=046
        [0x17] rec0=19 rec1=00 rec2=18 rec3=01a
        [0x18] rec0=1a rec1=00 rec2=19 rec3=050
        [0x19] rec0=0f rec1=00 rec2=1a rec3=062
        [0x1a] rec0=13 rec1=00 rec2=1b rec3=034
        [0x1b] rec0=1b rec1=00 rec2=1c rec3=08a
        [0x1c] rec0=15 rec1=00 rec2=1d rec3=08e
        [0x1d] rec0=19 rec1=00 rec2=1e rec3=012
        [0x1e] rec0=12 rec1=00 rec2=1f rec3=040
        [0x1f] rec0=18 rec1=00 rec2=20 rec3=020
        [0x20] rec0=15 rec1=00 rec2=21 rec3=02e
        [0x21] rec0=19 rec1=00 rec2=22 rec3=018
        [0x22] rec0=18 rec1=00 rec2=23 rec3=042
        [0x23] rec0=1b rec1=00 rec2=24 rec3=001
    tail 0x2170e4f9282b0811f65d3 0x42a00088462060003