comp.lang.ada
 help / color / mirror / Atom feed
From: adam.betts155@gmail.com
Subject: Re: "limited with" packages
Date: Wed, 20 Jun 2007 09:06:01 -0700
Date: 2007-06-20T09:06:01-07:00	[thread overview]
Message-ID: <1182355561.359900.160710@k79g2000hse.googlegroups.com> (raw)
In-Reply-To: <1182353886.851068.178990@j4g2000prf.googlegroups.com>

On Jun 20, 4:38 pm, Adam Beneschan <a...@irvine.com> wrote:
> On Jun 20, 6:20 am, adam.betts...@gmail.com wrote:
>
>
>
> > I have the following code:
>
> > ---------------------------------------------------------------------------------------------------------------------------
> > with my_package; use my_package;
> > package other_package is
> >    type type_one (<>) is private;
> >    type type_one_pointer is access constant type_one'class;
>
> >    function create (t_2: type_two'class) return type_one'class;
> > ........
> > end other_package;
> > ---------------------------------------------------------------------------------------------------------------------------
> > limited with other_package;
> > package my_package is
> >   type type_two is private;
>
> >   function get_type_one (t_2: type_two'class) return
> > other_package.type_one_pointer;
> > .........
> > end my_package
> > ---------------------------------------------------------------------------------------------------------------------------
> > package body my_package is
>
> > function get_type_one (t_2: type_two'class) return
> > other_package.type_one_pointer is
> >   t_one_ptr : other_package.type_one_pointer;
> > begin
> >   t_one_ptr := new
> > other_package.type_one'class'( other_package.create(t_2) );
> > end get_type_one;
>
> > end my_package;
> > ---------------------------------------------------------------------------------------------------------------------------
>
> > However, I'm getting the error:"create" not declared in
> > "other_package"
>
> > which I do not understand as it does not complain about the types
> > (type_one and type_one_pointer). Maybe it is my misunderstanding of
> > the "limited with" clause. Any help much appreciated.
>
> See 10.1.1(12.1-12.3).  "limited with" gives you a limited view of a
> package; the only things you get in the limited view are types (and
> types inside nested packages), plus those types are viewed as if they
> were incomplete types, in essence.  You don't get functions like
> "create".  Put a regular "with other_package" on my_package's body:
>
> with other_package;
> package body my_package is......
>
>                        -- Adam


Really thanks. I've spent a couple of hours banging my head about
this, in the end I programmed around it. I can't believe the solution
is so simple. Not to make excuses but I'm relatively new to Ada (few
months), and I'm trying to use most of the advanced features as my
project requires it. I think I lack a thorough understanding of how
the Ada compiler works. So, does the "limited with" clause only apply
at the spec level?




  reply	other threads:[~2007-06-20 16:06 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-06-20 13:20 "limited with" packages adam.betts155
2007-06-20 15:38 ` Adam Beneschan
2007-06-20 16:06   ` adam.betts155 [this message]
2007-06-20 16:32     ` Adam Beneschan
2007-06-20 16:27   ` adam.betts155
2007-06-20 18:13     ` Adam Beneschan
2007-06-20 18:27       ` Anh Vo
2007-06-20 18:44         ` Adam Beneschan
2007-06-21  8:13         ` adam.betts155
2007-06-22  5:10           ` Simon Wright
replies disabled

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