1------------------------------------------------------------------------------
2--                                                                          --
3--                            Matreshka Project                             --
4--                                                                          --
5--                          Ada Modeling Framework                          --
6--                                                                          --
7--                        Runtime Library Component                         --
8--                                                                          --
9------------------------------------------------------------------------------
10--                                                                          --
11-- Copyright © 2011-2012, Vadim Godunko <vgodunko@gmail.com>                --
12-- All rights reserved.                                                     --
13--                                                                          --
14-- Redistribution and use in source and binary forms, with or without       --
15-- modification, are permitted provided that the following conditions       --
16-- are met:                                                                 --
17--                                                                          --
18--  * Redistributions of source code must retain the above copyright        --
19--    notice, this list of conditions and the following disclaimer.         --
20--                                                                          --
21--  * Redistributions in binary form must reproduce the above copyright     --
22--    notice, this list of conditions and the following disclaimer in the   --
23--    documentation and/or other materials provided with the distribution.  --
24--                                                                          --
25--  * Neither the name of the Vadim Godunko, IE nor the names of its        --
26--    contributors may be used to endorse or promote products derived from  --
27--    this software without specific prior written permission.              --
28--                                                                          --
29-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      --
30-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        --
31-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR    --
32-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT     --
33-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,   --
34-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED --
35-- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   --
36-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   --
37-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     --
38-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS       --
39-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.             --
40--                                                                          --
41------------------------------------------------------------------------------
42--  $Revision: 2714 $ $Date: 2012-03-24 10:29:08 +0400 (Sat, 24 Mar 2012) $
43------------------------------------------------------------------------------
44--  This file is generated, don't edit it.
45------------------------------------------------------------------------------
46--  A package can have one or more profile applications to indicate which
47--  profiles have been applied. Because a profile is a package, it is possible
48--  to apply a profile not only to packages, but also to profiles.
49--
50--  Package specializes TemplateableElement and PackageableElement specializes
51--  ParameterableElement to specify that a package can be used as a template
52--  and a PackageableElement as a template parameter.
53--
54--  A package is used to group elements, and provides a namespace for the
55--  grouped elements.
56------------------------------------------------------------------------------
57limited with AMF.UML.Named_Elements;
58with AMF.UML.Namespaces;
59limited with AMF.UML.Package_Merges.Collections;
60with AMF.UML.Packageable_Elements;
61limited with AMF.UML.Packageable_Elements.Collections;
62limited with AMF.UML.Packages.Collections;
63limited with AMF.UML.Profile_Applications.Collections;
64limited with AMF.UML.Profiles;
65limited with AMF.UML.Stereotypes.Collections;
66with AMF.UML.Templateable_Elements;
67limited with AMF.UML.Types.Collections;
68
69package AMF.UML.Packages is
70
71   pragma Preelaborate;
72
73   type UML_Package is limited interface
74     and AMF.UML.Namespaces.UML_Namespace
75     and AMF.UML.Packageable_Elements.UML_Packageable_Element
76     and AMF.UML.Templateable_Elements.UML_Templateable_Element;
77
78   type UML_Package_Access is
79     access all UML_Package'Class;
80   for UML_Package_Access'Storage_Size use 0;
81
82   not overriding function Get_URI
83    (Self : not null access constant UML_Package)
84       return AMF.Optional_String is abstract;
85   --  Getter of Package::URI.
86   --
87   --  Provides an identifier for the package that can be used for many
88   --  purposes. A URI is the universally unique identification of the package
89   --  following the IETF URI specification, RFC 2396
90   --  http://www.ietf.org/rfc/rfc2396.txt and it must comply with those
91   --  syntax rules.
92
93   not overriding procedure Set_URI
94    (Self : not null access UML_Package;
95     To   : AMF.Optional_String) is abstract;
96   --  Setter of Package::URI.
97   --
98   --  Provides an identifier for the package that can be used for many
99   --  purposes. A URI is the universally unique identification of the package
100   --  following the IETF URI specification, RFC 2396
101   --  http://www.ietf.org/rfc/rfc2396.txt and it must comply with those
102   --  syntax rules.
103
104   not overriding function Get_Nested_Package
105    (Self : not null access constant UML_Package)
106       return AMF.UML.Packages.Collections.Set_Of_UML_Package is abstract;
107   --  Getter of Package::nestedPackage.
108   --
109   --  References the packaged elements that are Packages.
110
111   not overriding function Get_Nesting_Package
112    (Self : not null access constant UML_Package)
113       return AMF.UML.Packages.UML_Package_Access is abstract;
114   --  Getter of Package::nestingPackage.
115   --
116   --  References the Package that owns this Package.
117
118   not overriding procedure Set_Nesting_Package
119    (Self : not null access UML_Package;
120     To   : AMF.UML.Packages.UML_Package_Access) is abstract;
121   --  Setter of Package::nestingPackage.
122   --
123   --  References the Package that owns this Package.
124
125   not overriding function Get_Owned_Stereotype
126    (Self : not null access constant UML_Package)
127       return AMF.UML.Stereotypes.Collections.Set_Of_UML_Stereotype is abstract;
128   --  Getter of Package::ownedStereotype.
129   --
130   --  References the Stereotypes that are owned by the Package
131
132   not overriding function Get_Owned_Type
133    (Self : not null access constant UML_Package)
134       return AMF.UML.Types.Collections.Set_Of_UML_Type is abstract;
135   --  Getter of Package::ownedType.
136   --
137   --  References the packaged elements that are Types.
138
139   not overriding function Get_Package_Merge
140    (Self : not null access constant UML_Package)
141       return AMF.UML.Package_Merges.Collections.Set_Of_UML_Package_Merge is abstract;
142   --  Getter of Package::packageMerge.
143   --
144   --  References the PackageMerges that are owned by this Package.
145
146   not overriding function Get_Packaged_Element
147    (Self : not null access constant UML_Package)
148       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element is abstract;
149   --  Getter of Package::packagedElement.
150   --
151   --  Specifies the packageable elements that are owned by this Package.
152
153   not overriding function Get_Profile_Application
154    (Self : not null access constant UML_Package)
155       return AMF.UML.Profile_Applications.Collections.Set_Of_UML_Profile_Application is abstract;
156   --  Getter of Package::profileApplication.
157   --
158   --  References the ProfileApplications that indicate which profiles have
159   --  been applied to the Package.
160
161   not overriding function All_Applicable_Stereotypes
162    (Self : not null access constant UML_Package)
163       return AMF.UML.Stereotypes.Collections.Set_Of_UML_Stereotype is abstract;
164   --  Operation Package::allApplicableStereotypes.
165   --
166   --  The query allApplicableStereotypes() returns all the directly or
167   --  indirectly owned stereotypes, including stereotypes contained in
168   --  sub-profiles.
169
170   not overriding function Containing_Profile
171    (Self : not null access constant UML_Package)
172       return AMF.UML.Profiles.UML_Profile_Access is abstract;
173   --  Operation Package::containingProfile.
174   --
175   --  The query containingProfile() returns the closest profile directly or
176   --  indirectly containing this package (or this package itself, if it is a
177   --  profile).
178
179   not overriding function Makes_Visible
180    (Self : not null access constant UML_Package;
181     El : AMF.UML.Named_Elements.UML_Named_Element_Access)
182       return Boolean is abstract;
183   --  Operation Package::makesVisible.
184   --
185   --  The query makesVisible() defines whether a Package makes an element
186   --  visible outside itself. Elements with no visibility and elements with
187   --  public visibility are made visible.
188
189   overriding function Must_Be_Owned
190    (Self : not null access constant UML_Package)
191       return Boolean is abstract;
192   --  Operation Package::mustBeOwned.
193   --
194   --  The query mustBeOwned() indicates whether elements of this type must
195   --  have an owner.
196
197   not overriding function Nested_Package
198    (Self : not null access constant UML_Package)
199       return AMF.UML.Packages.Collections.Set_Of_UML_Package is abstract;
200   --  Operation Package::nestedPackage.
201   --
202   --  Missing derivation for Package::/nestedPackage : Package
203
204   not overriding function Owned_Stereotype
205    (Self : not null access constant UML_Package)
206       return AMF.UML.Stereotypes.Collections.Set_Of_UML_Stereotype is abstract;
207   --  Operation Package::ownedStereotype.
208   --
209   --  Missing derivation for Package::/ownedStereotype : Stereotype
210
211   not overriding function Owned_Type
212    (Self : not null access constant UML_Package)
213       return AMF.UML.Types.Collections.Set_Of_UML_Type is abstract;
214   --  Operation Package::ownedType.
215   --
216   --  Missing derivation for Package::/ownedType : Type
217
218   not overriding function Visible_Members
219    (Self : not null access constant UML_Package)
220       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element is abstract;
221   --  Operation Package::visibleMembers.
222   --
223   --  The query visibleMembers() defines which members of a Package can be
224   --  accessed outside it.
225
226end AMF.UML.Packages;
227