
![[PREVIOUS]](lrm-prev.gif)
![[UP]](lrm-up.gif)
At most one representation clause is allowed for a given type and a given aspect of its representation. Hence, if an alternative representation is needed, it is necessary to declare a second type, derived from the first, and to specify a different representation for the second type.
Example:
  -- PACKED_DESCRIPTOR and DESCRIPTOR are two different types
  -- with identical characteristics, apart from their representation
  type DESCRIPTOR is
      record
        -- components of a descriptor
      end record;
  type PACKED_DESCRIPTOR is new DESCRIPTOR;
  for PACKED_DESCRIPTOR use
      record
        -- component clauses for some or for all components
      end record;
Change of representation can now be accomplished by assignment with explicit type conversions:
      D : DESCRIPTOR;
      P : PACKED_DESCRIPTOR;
      P := PACKED_DESCRIPTOR (D); -- pack D
      D := DESCRIPTOR(P);         -- unpack P
References: assignment, derived type, type, type conversion, type declaration, representation clause.
Rationale references: 15.3 Multiple Representations and Change of Representation
Style Guide references: 7.6.1 Representation Clauses
![[Ada Information Clearinghouse]](small_adaic_logo.gif)
Address any questions or comments to adainfo@sw-eng.falls-church.va.us.