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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,d7ad26fbff0ddd28 X-Google-Attributes: gid103376,public From: Niklas Holsti Subject: Re: Generic package exporting a type with a rep spec Date: 1998/05/14 Message-ID: <355B5569.EDBDF09B@icon.fi>#1/1 X-Deja-AN: 353317983 Content-Transfer-Encoding: 7bit References: <6j7j5j$7i1$1@newsreader.digex.net> <6j9b0i$m2a$1@nnrp1.dejanews.com> Content-Type: text/plain; charset=us-ascii Organization: Telecom Finland News Service Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 1998-05-14T00:00:00+00:00 List-Id: "Bob Mikkelsen" wrote: > > Is there any good way to construct a generic package which exports a data > structure whose rep spec may vary on separate instantiations? > > We are trying to solve a problem where we have data coming in from various > sources. All the data requires similar processing when it gets to us, but > when it is imported or exported to the sources, it may have slightly > different forms: sometimes 7 bytes, sometimes 11. > > We are trying to generalize the representation of the data in the generic by > bringing the data size into the generic with a generic formal parameter, but > when we try to use this value in the rep spec, the complier gets very fussy > (a static value is required). > > Any solution not requiring C will be welcomed. Perhaps you could replace the "size" formal parameter with two generic formal subprogram parameters, one to convert data from the external form to the internal form, and the other to convert from internal form to external form. The generic would define the internal form without a rep spec; the user who instantiates the generic would define an external form with the particular rep spec needed, and provide the internal/external converters. I'm assuming that the structure of the type "exported" by the generic is public, so that the user can write the conversion subprograms.