From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE autolearn=no autolearn_force=no version=3.4.4 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!usc!apple!sun-barr!rutgers!ncs.dnd.ca!asterix.drev.dnd.ca!binette From: binette@asterix.drev.dnd.ca (Louis-Simon Binette) Newsgroups: comp.lang.ada Subject: Abstraction of variable size vectors (Corrected) Keywords: Abstraction,Variable size,Vector,Corrected Message-ID: <1990Aug1.183617.218@asterix.drev.dnd.ca> Date: 1 Aug 90 18:36:17 GMT Distribution: comp Organization: DREV, Defence Research Est. Valcartier List-Id: 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