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


Adam Beneschan 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

However, it now seems I have another issue, with similar code...

---------------------------------------------------------------------------------------------------------------------------
with my_package; use my_package;
package other_package is
  type type_one (<>) is private;

  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;

   procedure get_type_one (t_2: in out type_two'class; t_1: out
other_package.type_one'class);
.........
end my_package
---------------------------------------------------------------------------------------------------------------------------
package body my_package is
 procedure get_type_one (t_2: in out type_two'class; t_1: out
other_package.type_one'class);
 begin
   t_1 := create(t_2);
 end get_type_one;
end my_package;
 
---------------------------------------------------------------------------------------------------------------------------

This time the compiler is complaining that:
1) procedure get_type_one in the package body of my_package is "not
fully conformant with declaration" in the spec and that,
2) the type of t_1 does not match




  parent reply	other threads:[~2007-06-20 16:27 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
2007-06-20 16:32     ` Adam Beneschan
2007-06-20 16:27   ` adam.betts155 [this message]
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