comp.lang.ada
 help / color / mirror / Atom feed
From: cis.ohio-state.edu!magnus.acs.ohio-state.edu!math.ohio-state.edu!howland.
Subject: Re: question about generics
Date: 11 Aug 93 18:48:48 GMT	[thread overview]
Message-ID: <CBLyxC.64x@crdnns.crd.ge.com> (raw)

In article <EACHUS.93Aug10105310@spectre.mitre.org> eachus@spectre.mitre.org (R
obert I. Eachus) writes:
>In article <9308091429.aa12174@Paris.ics.uci.edu> kanderso@mabillon.ICS.UCI.ED
U (Kenneth Anderson) writes:
>  > I.E. I need to be able to say something like
>  >  package Generic_Package_Support is
>  >     Viewers : array (1 .. 5) of STRING := ("How", "Would", "I", "Do", "Thi
s?");
>  >  end Generic_Package_Support;
>
>    You apparently need a package which implements varying strings in
>a way that allows you to have arrays of differently sized strings.
>This can be done in Ada by having a type which has a discriminated
>record (with defaults) wrapped in a record with no discriminants.
>I can send you such a package if you don't have one...

Why the wrapper?  Why won't the following work?

package VAR_STRING is

   Max : constant := 1000; -- substitute your idea of reasonable value

   type STRING_LENGTH_TYPE is range 0 .. Max;

   subtype STRING_INDEX_TYPE is STRING_LENGTH_TYPE range 1 .. Max;

   type TEXT ( Size : STRING_LENGTH_TYPE := 0 ) is private;

   -- all the operations, including conversion functions to and from
   -- STRING, concatenation, etc. two of which are

   function TEXT_OF ( Str : STRING ) return TEXT;

   function STRING_OF ( Txt : TEXT ) return STRING;

   --

end VAR_STRING;

-----------

......

    package INIT is new I_FORGOT_THE_NAME
            ( ( VAR_STRING.TEXT_OF ( "first"  ),
                VAR_STRING.TEXT_OF ( "second" ),
                ...
                VAR_STRING.TEXT_OF ( "last"   ) )  )
.......

Inside the generic you have

  for I in Formal'RANGE loop
    DO_SOMETHING_WITH ( VAR_STRING.STRING_OF ( Formal ( I ) ) );
  end loop;

Although I have not used the VAR_STRING package to pass OBJECTS to a 
generic (except indirectly), I don't see why there should be a problem.

Wes G.

P.S. I have seen several "free" variable string packages that have what is
to me a RIDICULOUS usage of access types, requiring all sorts of contortions
by client packages to avoid dangling pointers and heap exhaustion.  My package
and the ones I'm complaining about make the type private.  In my case, no one
needs to know the fact that it's a simple discriminated record, and "garbage
collection" is done by leaving scope (of a TEXT object).  In the other(s),
the type is private in name only, because the client has to understand the
implementation to protect itself )or carefully follow VERY detailed rules
in the comments in the package spec.  Why are such packages popular, while my
approach is unpopular enough that I couldn't find anything similar in the
repositories and books I checked?  Is there something I don't know?
I have yet to find a disadvantage to it, having used it in user interfaces
and a primitive language parser.  I'm admittedly a bit egotistical when it
comes to my programming skills, but not so much so that I don't get nervous
when it appears that no one else has thought of something so simple.
Robert Eachus's post is the first hint I've seen that I'm not alone.

Huh? A P.S. longer than the "main" ?

             reply	other threads:[~1993-08-11 18:48 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1993-08-11 18:48 cis.ohio-state.edu!magnus.acs.ohio-state.edu!math.ohio-state.edu!howland. [this message]
  -- strict thread matches above, loose matches on Subject: below --
2006-07-02 16:08 Question about generics Peter C. Chapin
2006-07-02 18:49 ` Martin Krischik
2006-07-03  6:30 ` Jeffrey R. Carter
2006-07-03 10:33   ` Peter C. Chapin
2006-07-03 11:42     ` Jean-Pierre Rosen
2006-07-03 16:44     ` Pascal Obry
2006-07-04  1:09       ` Peter C. Chapin
2006-07-04  6:17         ` M E Leypold
2006-07-04 10:48           ` Peter C. Chapin
2006-07-03 20:03     ` Jeffrey R. Carter
2006-07-03 20:18       ` Dmitry A. Kazakov
2006-07-04  0:08         ` Randy Brukardt
2006-07-04  7:48           ` Dmitry A. Kazakov
2006-07-04  0:43         ` Jeffrey R. Carter
2006-07-03  9:46 ` Martin Krischik
2006-07-04 13:29 ` Stephen Leake
2006-07-05 12:08   ` Dmitry A. Kazakov
1993-09-02 17:45 question " Stef  Van Vlierberghe
1993-08-12 15:18 Robert I. Eachus
1993-08-11  0:25 agate!howland.reston.ans.net!europa.eng.gtefsd.com!darwin.sura.net!seas.g
1993-08-10 15:53 Robert I. Eachus
1993-08-09 21:29 Kenneth Anderson
1989-05-29 20:54 Question " "14827_DAVID PAPAY"
1989-05-29  7:02 "Jonathan B. Owen"
replies disabled

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