comp.lang.ada
 help / color / mirror / Atom feed
From: Javi <fjvera@gmail.com>
Subject: Re: declaration of an incomplete private type before the private part
Date: Fri, 1 Feb 2008 01:53:56 -0800 (PST)
Date: 2008-02-01T01:53:56-08:00	[thread overview]
Message-ID: <de74e5ef-f7f0-4f1a-872b-f3eb1a702f3f@q21g2000hsa.googlegroups.com> (raw)
In-Reply-To: 47a2d8fd$0$23828$4f793bc4@news.tdc.fi

On 1 feb, 09:49, Niklas Holsti <niklas.hol...@tidorum.invalid> wrote:
> Javi wrote:
> > My problem: I need to do a declaration such as:
>
> > -----------------------------------------
> > ...
> >    type ListNode is private;
> >    type List is private;
>
> >    package IterList is new Iterators   (Creator => List,
> >                                         Item => ListNode,
> >                                         getFirst => Lists.getFirst,
> >                                         getNext => Lists.getNext,
> >                                         isLast => Lists.isLast);
>
> >    function makeIter (L : List) return IterList.Iterator;
> > ...
> >    private:
> >       (complete declaration of ListNode and List)
> > -----------------------------------------
>
> > The problem is that I need to complete the type (ListNode and List)
> > before instancing the new package. But I do not know how to do that!
> > The only solution I have found is to declare the types non-private and
> > then give them the complete declaration. Obviously, this solution does
> > not satisfy me since I want to make the types private.
>
> As I understand it, you want to instantiate the Iterators package
> before the "private" part, because you want to use the type
> Iterator, defined in the instance, in the declaration of public
> oeprations (makeIter). One way to work around this problem is to
> define a new type for that purpose:
>
>     type ListNode     is private;
>     type List         is private;
>     type ListIterator is private;   -- Added.
>
>     function makeIter (L : List) return ListIterator;
>
>     private
>
>     type ListNode is ... -- Complete declaration.
>     type List is     ... -- Complete declaration.
>
>     packate IterList is new Iterators (....);  -- As above.
>
>     type ListIterator is new IterList.Iterator;
>
> HTH,
>
> --
> Niklas Holsti
> Tidorum Ltd
> niklas holsti tidorum fi
>        .      @       .

many thanks :-)



  reply	other threads:[~2008-02-01  9:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-02-01  8:28 declaration of an incomplete private type before the private part Javi
2008-02-01  8:49 ` Niklas Holsti
2008-02-01  9:53   ` Javi [this message]
2008-02-01 14:00 ` Robert A Duff
replies disabled

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