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: 3364 $ $Date: 2012-11-11 01:52:37 +0400 (Sun, 11 Nov 2012) $
43------------------------------------------------------------------------------
44--  This file is generated, don't edit it.
45------------------------------------------------------------------------------
46--  A named element supports using a string expression to specify its name.
47--  This allows names of model elements to involve template parameters. The
48--  actual name is evaluated from the string expression only when it is
49--  sensible to do so (e.g., when a template is bound).
50--
51--  A named element is an element in a model that may have a name.
52------------------------------------------------------------------------------
53limited with AMF.UML.Dependencies.Collections;
54with AMF.UML.Elements;
55limited with AMF.UML.Namespaces.Collections;
56limited with AMF.UML.Packages.Collections;
57limited with AMF.UML.String_Expressions;
58with League.Strings;
59
60package AMF.UML.Named_Elements is
61
62   pragma Preelaborate;
63
64   type UML_Named_Element is limited interface
65     and AMF.UML.Elements.UML_Element;
66
67   type UML_Named_Element_Access is
68     access all UML_Named_Element'Class;
69   for UML_Named_Element_Access'Storage_Size use 0;
70
71   not overriding function Get_Client_Dependency
72    (Self : not null access constant UML_Named_Element)
73       return AMF.UML.Dependencies.Collections.Set_Of_UML_Dependency is abstract;
74   --  Getter of NamedElement::clientDependency.
75   --
76   --  Indicates the dependencies that reference the client.
77
78   not overriding function Get_Name
79    (Self : not null access constant UML_Named_Element)
80       return AMF.Optional_String is abstract;
81   --  Getter of NamedElement::name.
82   --
83   --  The name of the NamedElement.
84
85   not overriding procedure Set_Name
86    (Self : not null access UML_Named_Element;
87     To   : AMF.Optional_String) is abstract;
88   --  Setter of NamedElement::name.
89   --
90   --  The name of the NamedElement.
91
92   not overriding function Get_Name_Expression
93    (Self : not null access constant UML_Named_Element)
94       return AMF.UML.String_Expressions.UML_String_Expression_Access is abstract;
95   --  Getter of NamedElement::nameExpression.
96   --
97   --  The string expression used to define the name of this named element.
98
99   not overriding procedure Set_Name_Expression
100    (Self : not null access UML_Named_Element;
101     To   : AMF.UML.String_Expressions.UML_String_Expression_Access) is abstract;
102   --  Setter of NamedElement::nameExpression.
103   --
104   --  The string expression used to define the name of this named element.
105
106   not overriding function Get_Namespace
107    (Self : not null access constant UML_Named_Element)
108       return AMF.UML.Namespaces.UML_Namespace_Access is abstract;
109   --  Getter of NamedElement::namespace.
110   --
111   --  Specifies the namespace that owns the NamedElement.
112
113   not overriding function Get_Qualified_Name
114    (Self : not null access constant UML_Named_Element)
115       return AMF.Optional_String is abstract;
116   --  Getter of NamedElement::qualifiedName.
117   --
118   --  A name which allows the NamedElement to be identified within a
119   --  hierarchy of nested Namespaces. It is constructed from the names of the
120   --  containing namespaces starting at the root of the hierarchy and ending
121   --  with the name of the NamedElement itself.
122
123   not overriding function Get_Visibility
124    (Self : not null access constant UML_Named_Element)
125       return AMF.UML.Optional_UML_Visibility_Kind is abstract;
126   --  Getter of NamedElement::visibility.
127   --
128   --  Determines where the NamedElement appears within different Namespaces
129   --  within the overall model, and its accessibility.
130
131   not overriding procedure Set_Visibility
132    (Self : not null access UML_Named_Element;
133     To   : AMF.UML.Optional_UML_Visibility_Kind) is abstract;
134   --  Setter of NamedElement::visibility.
135   --
136   --  Determines where the NamedElement appears within different Namespaces
137   --  within the overall model, and its accessibility.
138
139   not overriding function All_Namespaces
140    (Self : not null access constant UML_Named_Element)
141       return AMF.UML.Namespaces.Collections.Ordered_Set_Of_UML_Namespace is abstract;
142   --  Operation NamedElement::allNamespaces.
143   --
144   --  The query allNamespaces() gives the sequence of namespaces in which the
145   --  NamedElement is nested, working outwards.
146
147   not overriding function All_Owning_Packages
148    (Self : not null access constant UML_Named_Element)
149       return AMF.UML.Packages.Collections.Set_Of_UML_Package is abstract;
150   --  Operation NamedElement::allOwningPackages.
151   --
152   --  The query allOwningPackages() returns all the directly or indirectly
153   --  owning packages.
154
155   not overriding function Is_Distinguishable_From
156    (Self : not null access constant UML_Named_Element;
157     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
158     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
159       return Boolean is abstract;
160   --  Operation NamedElement::isDistinguishableFrom.
161   --
162   --  The query isDistinguishableFrom() determines whether two NamedElements
163   --  may logically co-exist within a Namespace. By default, two named
164   --  elements are distinguishable if (a) they have unrelated types or (b)
165   --  they have related types but different names.
166
167   not overriding function Namespace
168    (Self : not null access constant UML_Named_Element)
169       return AMF.UML.Namespaces.UML_Namespace_Access is abstract;
170   --  Operation NamedElement::namespace.
171   --
172   --  Missing derivation for NamedElement::/namespace : Namespace
173
174   not overriding function Qualified_Name
175    (Self : not null access constant UML_Named_Element)
176       return League.Strings.Universal_String is abstract;
177   --  Operation NamedElement::qualifiedName.
178   --
179   --  When there is a name, and all of the containing namespaces have a name,
180   --  the qualified name is constructed from the names of the containing
181   --  namespaces.
182
183   not overriding function Separator
184    (Self : not null access constant UML_Named_Element)
185       return League.Strings.Universal_String is abstract;
186   --  Operation NamedElement::separator.
187   --
188   --  The query separator() gives the string that is used to separate names
189   --  when constructing a qualified name.
190
191end AMF.UML.Named_Elements;
192