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

⟦9b11a72a6⟧ Ada Source

    Length: 5120 (0x1400)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Size_Utilities, seg_00462e

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



--| @SUMMARY This package computes the size (in bits) of objects.
--| @DESCRIPTION This package computes the size of objects or their type
--| declartion by recursively decomposing them into atomic elements (like
--| integers, characters and booleans).  The size of these elements are
--| defined in the package Size_Parameters.  These values can be initialized
--| from a file to allow computation of target sizes.  Anlysis of
--| representation clauses for records can be controlled by parameter selection
--|
--| LIMITATATIONS
--|
--|    Sizing discriminant records has only limited support.  If the
--|    discriminant is an enumerated value the correct discriminant can in
--|    most cases be selected.  Integer descriminants are not processed.
--|
--|    There is a concept of alignment coded into the algorithm, but the
--|    types that require alignment (current access values) is hard coded.
--|    An extention could place this in the file parameterization.
--|
--|    Overhead for dope vectors required for composite types is supported
--|    only for dicriminant record and only as a fixed number of bits.
--|    This concept could also be extended.
--|
--| @INDICES (Ada_Analysis, Size_Computation, Type_Traversal)
with Ada_Program;
with Declarations;
with Type_Information;
package Size_Utilities is

    subtype Long_Natural is Long_Integer range 0 .. Long_Integer'Last;

    --| @DESCRIPTION Computs the number of identifiers in an object
    --| or exception declaration
    procedure Number_Of_Ids (Object :     Declarations.Object_Declaration;
                             Count  : out Long_Natural);

    --| @DESCRIPTION Computes the total number of array elements designated by
    --| a sequence of index constraints.  The total is computed as the product
    --| of the number of elements in each index.  If the size of any index
    --| constraint cannot be computed statically, the Static parameter is set
    --| to false.
    procedure Number_Of_Elements
                 (Index_Constraints :        Ada_Program.Element_Iterator;
                  Count             : out    Long_Natural;
                  Static            : in out Boolean);

    --| @DESCRIPTION Computes the size (in bits) of any type definition by
    --| recusively decmoposing them into atomic elements.  If the size of any
    --| component cannot be statically computed, the Static parameter is
    --| set to false.
    procedure Type_Size (For_Type : Type_Information.Type_Definition;
                         Ignore_Type_Representation_Clauses : Boolean := False;
                         Result : out Long_Natural;
                         Static : in out Boolean);

    --| @DESCRIPTION Computes the size of the type associated with the object.
    procedure Object_Size
                 (For_Object : Declarations.Object_Declaration;
                  Ignore_Type_Representation_Clauses : Boolean := False;
                  Result : out Long_Natural;
                  Static : in out Boolean);

end Size_Utilities;

E3 Meta Data

    nblk1=4
    nid=0
    hdr6=8
        [0x00] rec0=14 rec1=00 rec2=01 rec3=008
        [0x01] rec0=15 rec1=00 rec2=02 rec3=022
        [0x02] rec0=13 rec1=00 rec2=03 rec3=01c
        [0x03] rec0=04 rec1=00 rec2=04 rec3=001
    tail 0x217002480815c65fe76ec 0x42a00088462061e03