comp.lang.ada
 help / color / mirror / Atom feed
From: anon@anon.org (anon)
Subject: Re: parent package referring to child
Date: Wed, 10 Oct 2007 19:17:58 GMT
Date: 2007-10-10T19:17:58+00:00	[thread overview]
Message-ID: <Gz9Pi.200233$ax1.117382@bgtnsc05-news.ops.worldnet.att.net> (raw)
In-Reply-To: 1191997397.865251.322480@d55g2000hsg.googlegroups.com

Some time package can get too large to handle there are a few ways to 
handle this in all Ada's spec.

The non-standard Ada way is to use "pragma Import" "pragma Export" 
statements.


The standard Ada way is to use the "seperate" paradigm.

That is split the FOO package into smaller files and use the "seperate" 
statement to relink them. To test for errors and build the package use 
"gnat compile foo.adb" the compile will load and compile all seperate 
packages that are in FOO package.

  -- ------------- --
  -- File: Foo.ads --
  -- ------------- --
  package body Foo is 

    procedure Local_Foo ;

  end Foo ;

  -- ------------- --
  -- File: Foo.adb --
  -- ------------- --

  package body Foo is 

   --
   -- spec for seperate packages and routines
   --

    package Ch10 is
      -- spec
    end Ch10 ;


    package Ch11 is
      -- spec
    end Ch11 ;

    procedure Load ;



    use Ch10 ;
    use Ch11 ;

    --
    -- Define children bodies are in external files with name 
    -- PARENT-CHILD.adb
    --

    package body Ch10 is separate ;
    package body Ch11 is separate ;
    procedure Load is separate ;

    --
    -- local procedures and those that are visible to the 
    -- outsise
    --
    procedure Local_Foo is
      ...
      begin -- Local_Foo
        ...
      end Local_Foo ;

    ...

  end Foo ;


  -- ------------------ --
  -- File: foo-ch10.adb --
  -- ------------------ --
  separate (Foo)
  package body Ch10 is
   ... 
  end Ch10 ;


  -- ------------------ --
  -- File: foo-ch11.adb --
  -- ------------------ --
  separate (Foo)
  package body Ch11 is
    ...
  end Ch11 ;


  -- ------------------ --
  -- File: foo-load.adb --
  -- ------------------ --
  separate (Foo)
  procedure Load is
    ...
  begin -- Load
    ...
  end Load ;




In <1191997397.865251.322480@d55g2000hsg.googlegroups.com>,  eliben <eliben@gmail.com> writes:
>Hello,
>
>I have a package FOO that encapsulates a large part of the system. Now
>I need to add to it a public type (that should be visible by external
>code) with a lot of enumerated names (hundreds). I don't want to fill
>the spec of FOO with this huge type, so I thought it would be a good
>idea to create a subpackage: FOO.Names, and place the type there.
>
>However, declarations of subprograms in the spec of FOO must refer to
>the names from FOO.Names, and Ada 95 won't let me do that because it's
>parent referring to child.
>
>Is there any way to overcome this problem ? Perhaps a different design
>that suits the requirement and doesn't go against the Ada standard ?
>
>Thanks in advance.
>




  parent reply	other threads:[~2007-10-10 19:17 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-10  6:23 parent package referring to child eliben
2007-10-10  9:07 ` Georg Bauhaus
2007-10-10  9:24   ` eliben
2007-10-10 14:46     ` Adam Beneschan
2007-10-10 19:26   ` Simon Wright
2007-10-10 14:59 ` Matthew Heaney
2007-10-10 18:54   ` Vadim Godunko
2007-10-10 19:32     ` Matthew Heaney
2007-10-10 20:20       ` Adam Beneschan
2007-10-11  4:12         ` Randy Brukardt
2007-10-11 15:21           ` Adam Beneschan
2007-10-19 12:45           ` Vadim Godunko
2007-10-10 19:51   ` Matthew Heaney
2007-10-10 17:06 ` Jeffrey R. Carter
2007-10-10 19:17 ` anon [this message]
2007-10-11  9:45 ` george
2007-10-12  4:15   ` Jeffrey R. Carter
2007-10-12  9:51     ` Georg Bauhaus
replies disabled

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