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 component represents a modular part of a system that encapsulates its
47--  contents and whose manifestation is replaceable within its environment.
48--
49--  In the namespace of a component, all model elements that are involved in
50--  or related to its definition are either owned or imported explicitly. This
51--  may include, for example, use cases and dependencies (e.g. mappings),
52--  packages, components, and artifacts.
53------------------------------------------------------------------------------
54with AMF.UML.Classes;
55limited with AMF.UML.Classifiers;
56limited with AMF.UML.Component_Realizations.Collections;
57limited with AMF.UML.Interfaces.Collections;
58limited with AMF.UML.Packageable_Elements.Collections;
59
60package AMF.UML.Components is
61
62   pragma Preelaborate;
63
64   type UML_Component is limited interface
65     and AMF.UML.Classes.UML_Class;
66
67   type UML_Component_Access is
68     access all UML_Component'Class;
69   for UML_Component_Access'Storage_Size use 0;
70
71   not overriding function Get_Is_Indirectly_Instantiated
72    (Self : not null access constant UML_Component)
73       return Boolean is abstract;
74   --  Getter of Component::isIndirectlyInstantiated.
75   --
76   --  isIndirectlyInstantiated : Boolean {default = true} The kind of
77   --  instantiation that applies to a Component. If false, the component is
78   --  instantiated as an addressable object. If true, the Component is
79   --  defined at design-time, but at run-time (or execution-time) an object
80   --  specified by the Component does not exist, that is, the component is
81   --  instantiated indirectly, through the instantiation of its realizing
82   --  classifiers or parts. Several standard stereotypes use this meta
83   --  attribute (e.g., «specification», «focus», «subsystem»).
84
85   not overriding procedure Set_Is_Indirectly_Instantiated
86    (Self : not null access UML_Component;
87     To   : Boolean) is abstract;
88   --  Setter of Component::isIndirectlyInstantiated.
89   --
90   --  isIndirectlyInstantiated : Boolean {default = true} The kind of
91   --  instantiation that applies to a Component. If false, the component is
92   --  instantiated as an addressable object. If true, the Component is
93   --  defined at design-time, but at run-time (or execution-time) an object
94   --  specified by the Component does not exist, that is, the component is
95   --  instantiated indirectly, through the instantiation of its realizing
96   --  classifiers or parts. Several standard stereotypes use this meta
97   --  attribute (e.g., «specification», «focus», «subsystem»).
98
99   not overriding function Get_Packaged_Element
100    (Self : not null access constant UML_Component)
101       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element is abstract;
102   --  Getter of Component::packagedElement.
103   --
104   --  The set of PackageableElements that a Component owns. In the namespace
105   --  of a component, all model elements that are involved in or related to
106   --  its definition may be owned or imported explicitly. These may include
107   --  e.g. Classes, Interfaces, Components, Packages, Use cases, Dependencies
108   --  (e.g. mappings), and Artifacts.
109
110   not overriding function Get_Provided
111    (Self : not null access constant UML_Component)
112       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is abstract;
113   --  Getter of Component::provided.
114   --
115   --  The interfaces that the component exposes to its environment. These
116   --  interfaces may be Realized by the Component or any of its
117   --  realizingClassifiers, or they may be the Interfaces that are provided
118   --  by its public Ports.
119
120   not overriding function Get_Realization
121    (Self : not null access constant UML_Component)
122       return AMF.UML.Component_Realizations.Collections.Set_Of_UML_Component_Realization is abstract;
123   --  Getter of Component::realization.
124   --
125   --  The set of Realizations owned by the Component. Realizations reference
126   --  the Classifiers of which the Component is an abstraction; i.e., that
127   --  realize its behavior.
128
129   not overriding function Get_Required
130    (Self : not null access constant UML_Component)
131       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is abstract;
132   --  Getter of Component::required.
133   --
134   --  The interfaces that the component requires from other components in its
135   --  environment in order to be able to offer its full set of provided
136   --  functionality. These interfaces may be used by the Component or any of
137   --  its realizingClassifiers, or they may be the Interfaces that are
138   --  required by its public Ports.
139
140   not overriding function Provided
141    (Self : not null access constant UML_Component)
142       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is abstract;
143   --  Operation Component::provided.
144   --
145   --  Missing derivation for Component::/provided : Interface
146
147   not overriding function Realized_Interfaces
148    (Self : not null access constant UML_Component;
149     Classifier : AMF.UML.Classifiers.UML_Classifier_Access)
150       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is abstract;
151   --  Operation Component::realizedInterfaces.
152   --
153   --  Utility returning the set of realized interfaces of a component.
154
155   not overriding function Required
156    (Self : not null access constant UML_Component)
157       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is abstract;
158   --  Operation Component::required.
159   --
160   --  Missing derivation for Component::/required : Interface
161
162   not overriding function Used_Interfaces
163    (Self : not null access constant UML_Component;
164     Classifier : AMF.UML.Classifiers.UML_Classifier_Access)
165       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is abstract;
166   --  Operation Component::usedInterfaces.
167   --
168   --  Utility returning the set of used interfaces of a component.
169
170end AMF.UML.Components;
171