comp.lang.ada
 help / color / mirror / Atom feed
From: binette@asterix.drev.dnd.ca (Louis-Simon Binette)
Subject: Abstraction of variable size vectors (Corrected)
Date: 1 Aug 90 18:36:17 GMT	[thread overview]
Message-ID: <1990Aug1.183617.218@asterix.drev.dnd.ca> (raw)


                                                 Valcartier, August 1st

      I post this message again since I just realized that the original
one (dated July 23 or so..) contained an error in its IP address (I did
not receive any answer to it !).   I apologize for those who spent time
trying to send me an answer.  Anyway here is the message with the right
IP address:

Dear Folks,

      I am currently in the process of designing a generic package that
encapsulates variable size vectors whose components are referenced by a
discrete type. The basic declarations of the package specification are:

generic
  type GT_ELM is private;   -- Element type
  type GT_NDX is (<>);      -- Index type of vector
package VECTOR_MNGR_TEMPLATE is
  type T_VECTOR is limited private;
  -- Other declarations come here (types and subprograms)

       with T_VECTOR being the abstract data type for the variable size
vector.  In order to extend the functionality of the language with res-
pect to the bounds of arrays [LRM 3.6.1] I have encapsulated the actual
values of the lower and upper bounds as part of the vector structure:

private
  ...;
  type T_VECTOR is record
                     LOWER_BOUND,
                     UPPER_BOUND : ...;  -- Base type of GT_NDX !!!
                     ...;
                   end record;
  ...;
end VECTOR_MNGR_TEMPLATE;

      As you might know, the range covered by the bounds of the array is
defined by the _base type_ of GT_NDX [LRM 3.5 (4)] in order to cope with
_null arrays_.  Unfortunately, a type declaration like:

  type T_BASE_NDX is range GT_NDX'BASE'FIRST..GT_NDX'BASE'LAST;

      in the package is illegal since the bounds are not static (as spe-
cified in LRM 4.9 (11): "...other than a generic formal type;...").

     Any opinion about what looks to me as a lack of extensibility of the
language?  I would greatly appreciate suggestions (if any !) to this pro-
blem while keeping the genericity ("type GT_NDX is (<>);") of the package


                                      Thanks in advance

                                      Louis-Simon Binette
                                      Internet : simon@quebec.drev.dnd.ca
                                      IP...... : simon@131.132.32.17

             reply	other threads:[~1990-08-01 18:36 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1990-08-01 18:36 Louis-Simon Binette [this message]
  -- strict thread matches above, loose matches on Subject: below --
1990-08-02 14:58 Abstraction of variable size vectors (Corrected) "Norman H. Cohen"
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox