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: 2937 $ $Date: 2012-05-01 21:07:27 +0400 (Tue, 01 May 2012) $
43------------------------------------------------------------------------------
44with AMF.Internals.UML_Nodes;
45with AMF.String_Collections;
46with AMF.UML.Behaviors.Collections;
47with AMF.UML.Classes.Collections;
48with AMF.UML.Classifier_Template_Parameters;
49with AMF.UML.Classifiers.Collections;
50with AMF.UML.Collaboration_Uses.Collections;
51with AMF.UML.Connectable_Elements.Collections;
52with AMF.UML.Connectors.Collections;
53with AMF.UML.Constraints.Collections;
54with AMF.UML.Dependencies.Collections;
55with AMF.UML.Deployments.Collections;
56with AMF.UML.Devices;
57with AMF.UML.Element_Imports.Collections;
58with AMF.UML.Extensions.Collections;
59with AMF.UML.Features.Collections;
60with AMF.UML.Generalization_Sets.Collections;
61with AMF.UML.Generalizations.Collections;
62with AMF.UML.Interface_Realizations.Collections;
63with AMF.UML.Named_Elements.Collections;
64with AMF.UML.Namespaces;
65with AMF.UML.Nodes.Collections;
66with AMF.UML.Operations.Collections;
67with AMF.UML.Package_Imports.Collections;
68with AMF.UML.Packageable_Elements.Collections;
69with AMF.UML.Packages.Collections;
70with AMF.UML.Parameterable_Elements.Collections;
71with AMF.UML.Ports.Collections;
72with AMF.UML.Properties.Collections;
73with AMF.UML.Receptions.Collections;
74with AMF.UML.Redefinable_Elements.Collections;
75with AMF.UML.Redefinable_Template_Signatures;
76with AMF.UML.String_Expressions;
77with AMF.UML.Substitutions.Collections;
78with AMF.UML.Template_Bindings.Collections;
79with AMF.UML.Template_Parameters;
80with AMF.UML.Template_Signatures;
81with AMF.UML.Types;
82with AMF.UML.Use_Cases.Collections;
83with AMF.Visitors;
84
85package AMF.Internals.UML_Devices is
86
87   type UML_Device_Proxy is
88     limited new AMF.Internals.UML_Nodes.UML_Node_Proxy
89       and AMF.UML.Devices.UML_Device with null record;
90
91   overriding function Get_Nested_Node
92    (Self : not null access constant UML_Device_Proxy)
93       return AMF.UML.Nodes.Collections.Set_Of_UML_Node;
94   --  Getter of Node::nestedNode.
95   --
96   --  The Nodes that are defined (nested) within the Node.
97
98   overriding function Get_Extension
99    (Self : not null access constant UML_Device_Proxy)
100       return AMF.UML.Extensions.Collections.Set_Of_UML_Extension;
101   --  Getter of Class::extension.
102   --
103   --  References the Extensions that specify additional properties of the
104   --  metaclass. The property is derived from the extensions whose memberEnds
105   --  are typed by the Class.
106
107   overriding function Get_Is_Abstract
108    (Self : not null access constant UML_Device_Proxy)
109       return Boolean;
110   --  Getter of Class::isAbstract.
111   --
112   --  True when a class is abstract.
113   --  If true, the Classifier does not provide a complete declaration and can
114   --  typically not be instantiated. An abstract classifier is intended to be
115   --  used by other classifiers e.g. as the target of general
116   --  metarelationships or generalization relationships.
117
118   overriding function Get_Is_Active
119    (Self : not null access constant UML_Device_Proxy)
120       return Boolean;
121   --  Getter of Class::isActive.
122   --
123   --  Determines whether an object specified by this class is active or not.
124   --  If true, then the owning class is referred to as an active class. If
125   --  false, then such a class is referred to as a passive class.
126
127   overriding procedure Set_Is_Active
128    (Self : not null access UML_Device_Proxy;
129     To   : Boolean);
130   --  Setter of Class::isActive.
131   --
132   --  Determines whether an object specified by this class is active or not.
133   --  If true, then the owning class is referred to as an active class. If
134   --  false, then such a class is referred to as a passive class.
135
136   overriding function Get_Nested_Classifier
137    (Self : not null access constant UML_Device_Proxy)
138       return AMF.UML.Classifiers.Collections.Ordered_Set_Of_UML_Classifier;
139   --  Getter of Class::nestedClassifier.
140   --
141   --  References all the Classifiers that are defined (nested) within the
142   --  Class.
143
144   overriding function Get_Owned_Attribute
145    (Self : not null access constant UML_Device_Proxy)
146       return AMF.UML.Properties.Collections.Ordered_Set_Of_UML_Property;
147   --  Getter of Class::ownedAttribute.
148   --
149   --  The attributes (i.e. the properties) owned by the class.
150
151   overriding function Get_Owned_Operation
152    (Self : not null access constant UML_Device_Proxy)
153       return AMF.UML.Operations.Collections.Ordered_Set_Of_UML_Operation;
154   --  Getter of Class::ownedOperation.
155   --
156   --  The operations owned by the class.
157
158   overriding function Get_Owned_Reception
159    (Self : not null access constant UML_Device_Proxy)
160       return AMF.UML.Receptions.Collections.Set_Of_UML_Reception;
161   --  Getter of Class::ownedReception.
162   --
163   --  Receptions that objects of this class are willing to accept.
164
165   overriding function Get_Super_Class
166    (Self : not null access constant UML_Device_Proxy)
167       return AMF.UML.Classes.Collections.Set_Of_UML_Class;
168   --  Getter of Class::superClass.
169   --
170   --  This gives the superclasses of a class.
171
172   overriding function Get_Classifier_Behavior
173    (Self : not null access constant UML_Device_Proxy)
174       return AMF.UML.Behaviors.UML_Behavior_Access;
175   --  Getter of BehavioredClassifier::classifierBehavior.
176   --
177   --  A behavior specification that specifies the behavior of the classifier
178   --  itself.
179
180   overriding procedure Set_Classifier_Behavior
181    (Self : not null access UML_Device_Proxy;
182     To   : AMF.UML.Behaviors.UML_Behavior_Access);
183   --  Setter of BehavioredClassifier::classifierBehavior.
184   --
185   --  A behavior specification that specifies the behavior of the classifier
186   --  itself.
187
188   overriding function Get_Interface_Realization
189    (Self : not null access constant UML_Device_Proxy)
190       return AMF.UML.Interface_Realizations.Collections.Set_Of_UML_Interface_Realization;
191   --  Getter of BehavioredClassifier::interfaceRealization.
192   --
193   --  The set of InterfaceRealizations owned by the BehavioredClassifier.
194   --  Interface realizations reference the Interfaces of which the
195   --  BehavioredClassifier is an implementation.
196
197   overriding function Get_Owned_Behavior
198    (Self : not null access constant UML_Device_Proxy)
199       return AMF.UML.Behaviors.Collections.Set_Of_UML_Behavior;
200   --  Getter of BehavioredClassifier::ownedBehavior.
201   --
202   --  References behavior specifications owned by a classifier.
203
204   overriding function Get_Attribute
205    (Self : not null access constant UML_Device_Proxy)
206       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
207   --  Getter of Classifier::attribute.
208   --
209   --  Refers to all of the Properties that are direct (i.e. not inherited or
210   --  imported) attributes of the classifier.
211
212   overriding function Get_Collaboration_Use
213    (Self : not null access constant UML_Device_Proxy)
214       return AMF.UML.Collaboration_Uses.Collections.Set_Of_UML_Collaboration_Use;
215   --  Getter of Classifier::collaborationUse.
216   --
217   --  References the collaboration uses owned by the classifier.
218
219   overriding function Get_Feature
220    (Self : not null access constant UML_Device_Proxy)
221       return AMF.UML.Features.Collections.Set_Of_UML_Feature;
222   --  Getter of Classifier::feature.
223   --
224   --  Specifies each feature defined in the classifier.
225   --  Note that there may be members of the Classifier that are of the type
226   --  Feature but are not included in this association, e.g. inherited
227   --  features.
228
229   overriding function Get_General
230    (Self : not null access constant UML_Device_Proxy)
231       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
232   --  Getter of Classifier::general.
233   --
234   --  Specifies the general Classifiers for this Classifier.
235   --  References the general classifier in the Generalization relationship.
236
237   overriding function Get_Generalization
238    (Self : not null access constant UML_Device_Proxy)
239       return AMF.UML.Generalizations.Collections.Set_Of_UML_Generalization;
240   --  Getter of Classifier::generalization.
241   --
242   --  Specifies the Generalization relationships for this Classifier. These
243   --  Generalizations navigaten to more general classifiers in the
244   --  generalization hierarchy.
245
246   overriding function Get_Inherited_Member
247    (Self : not null access constant UML_Device_Proxy)
248       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
249   --  Getter of Classifier::inheritedMember.
250   --
251   --  Specifies all elements inherited by this classifier from the general
252   --  classifiers.
253
254   overriding function Get_Is_Final_Specialization
255    (Self : not null access constant UML_Device_Proxy)
256       return Boolean;
257   --  Getter of Classifier::isFinalSpecialization.
258   --
259   --  If true, the Classifier cannot be specialized by generalization. Note
260   --  that this property is preserved through package merge operations; that
261   --  is, the capability to specialize a Classifier (i.e.,
262   --  isFinalSpecialization =false) must be preserved in the resulting
263   --  Classifier of a package merge operation where a Classifier with
264   --  isFinalSpecialization =false is merged with a matching Classifier with
265   --  isFinalSpecialization =true: the resulting Classifier will have
266   --  isFinalSpecialization =false.
267
268   overriding procedure Set_Is_Final_Specialization
269    (Self : not null access UML_Device_Proxy;
270     To   : Boolean);
271   --  Setter of Classifier::isFinalSpecialization.
272   --
273   --  If true, the Classifier cannot be specialized by generalization. Note
274   --  that this property is preserved through package merge operations; that
275   --  is, the capability to specialize a Classifier (i.e.,
276   --  isFinalSpecialization =false) must be preserved in the resulting
277   --  Classifier of a package merge operation where a Classifier with
278   --  isFinalSpecialization =false is merged with a matching Classifier with
279   --  isFinalSpecialization =true: the resulting Classifier will have
280   --  isFinalSpecialization =false.
281
282   overriding function Get_Owned_Template_Signature
283    (Self : not null access constant UML_Device_Proxy)
284       return AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access;
285   --  Getter of Classifier::ownedTemplateSignature.
286   --
287   --  The optional template signature specifying the formal template
288   --  parameters.
289
290   overriding procedure Set_Owned_Template_Signature
291    (Self : not null access UML_Device_Proxy;
292     To   : AMF.UML.Redefinable_Template_Signatures.UML_Redefinable_Template_Signature_Access);
293   --  Setter of Classifier::ownedTemplateSignature.
294   --
295   --  The optional template signature specifying the formal template
296   --  parameters.
297
298   overriding function Get_Owned_Use_Case
299    (Self : not null access constant UML_Device_Proxy)
300       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case;
301   --  Getter of Classifier::ownedUseCase.
302   --
303   --  References the use cases owned by this classifier.
304
305   overriding function Get_Powertype_Extent
306    (Self : not null access constant UML_Device_Proxy)
307       return AMF.UML.Generalization_Sets.Collections.Set_Of_UML_Generalization_Set;
308   --  Getter of Classifier::powertypeExtent.
309   --
310   --  Designates the GeneralizationSet of which the associated Classifier is
311   --  a power type.
312
313   overriding function Get_Redefined_Classifier
314    (Self : not null access constant UML_Device_Proxy)
315       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
316   --  Getter of Classifier::redefinedClassifier.
317   --
318   --  References the Classifiers that are redefined by this Classifier.
319
320   overriding function Get_Representation
321    (Self : not null access constant UML_Device_Proxy)
322       return AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access;
323   --  Getter of Classifier::representation.
324   --
325   --  References a collaboration use which indicates the collaboration that
326   --  represents this classifier.
327
328   overriding procedure Set_Representation
329    (Self : not null access UML_Device_Proxy;
330     To   : AMF.UML.Collaboration_Uses.UML_Collaboration_Use_Access);
331   --  Setter of Classifier::representation.
332   --
333   --  References a collaboration use which indicates the collaboration that
334   --  represents this classifier.
335
336   overriding function Get_Substitution
337    (Self : not null access constant UML_Device_Proxy)
338       return AMF.UML.Substitutions.Collections.Set_Of_UML_Substitution;
339   --  Getter of Classifier::substitution.
340   --
341   --  References the substitutions that are owned by this Classifier.
342
343   overriding function Get_Template_Parameter
344    (Self : not null access constant UML_Device_Proxy)
345       return AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access;
346   --  Getter of Classifier::templateParameter.
347   --
348   --  The template parameter that exposes this element as a formal parameter.
349
350   overriding procedure Set_Template_Parameter
351    (Self : not null access UML_Device_Proxy;
352     To   : AMF.UML.Classifier_Template_Parameters.UML_Classifier_Template_Parameter_Access);
353   --  Setter of Classifier::templateParameter.
354   --
355   --  The template parameter that exposes this element as a formal parameter.
356
357   overriding function Get_Use_Case
358    (Self : not null access constant UML_Device_Proxy)
359       return AMF.UML.Use_Cases.Collections.Set_Of_UML_Use_Case;
360   --  Getter of Classifier::useCase.
361   --
362   --  The set of use cases for which this Classifier is the subject.
363
364   overriding function Get_Element_Import
365    (Self : not null access constant UML_Device_Proxy)
366       return AMF.UML.Element_Imports.Collections.Set_Of_UML_Element_Import;
367   --  Getter of Namespace::elementImport.
368   --
369   --  References the ElementImports owned by the Namespace.
370
371   overriding function Get_Imported_Member
372    (Self : not null access constant UML_Device_Proxy)
373       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
374   --  Getter of Namespace::importedMember.
375   --
376   --  References the PackageableElements that are members of this Namespace
377   --  as a result of either PackageImports or ElementImports.
378
379   overriding function Get_Member
380    (Self : not null access constant UML_Device_Proxy)
381       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
382   --  Getter of Namespace::member.
383   --
384   --  A collection of NamedElements identifiable within the Namespace, either
385   --  by being owned or by being introduced by importing or inheritance.
386
387   overriding function Get_Owned_Member
388    (Self : not null access constant UML_Device_Proxy)
389       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
390   --  Getter of Namespace::ownedMember.
391   --
392   --  A collection of NamedElements owned by the Namespace.
393
394   overriding function Get_Owned_Rule
395    (Self : not null access constant UML_Device_Proxy)
396       return AMF.UML.Constraints.Collections.Set_Of_UML_Constraint;
397   --  Getter of Namespace::ownedRule.
398   --
399   --  Specifies a set of Constraints owned by this Namespace.
400
401   overriding function Get_Package_Import
402    (Self : not null access constant UML_Device_Proxy)
403       return AMF.UML.Package_Imports.Collections.Set_Of_UML_Package_Import;
404   --  Getter of Namespace::packageImport.
405   --
406   --  References the PackageImports owned by the Namespace.
407
408   overriding function Get_Client_Dependency
409    (Self : not null access constant UML_Device_Proxy)
410       return AMF.UML.Dependencies.Collections.Set_Of_UML_Dependency;
411   --  Getter of NamedElement::clientDependency.
412   --
413   --  Indicates the dependencies that reference the client.
414
415   overriding function Get_Name_Expression
416    (Self : not null access constant UML_Device_Proxy)
417       return AMF.UML.String_Expressions.UML_String_Expression_Access;
418   --  Getter of NamedElement::nameExpression.
419   --
420   --  The string expression used to define the name of this named element.
421
422   overriding procedure Set_Name_Expression
423    (Self : not null access UML_Device_Proxy;
424     To   : AMF.UML.String_Expressions.UML_String_Expression_Access);
425   --  Setter of NamedElement::nameExpression.
426   --
427   --  The string expression used to define the name of this named element.
428
429   overriding function Get_Namespace
430    (Self : not null access constant UML_Device_Proxy)
431       return AMF.UML.Namespaces.UML_Namespace_Access;
432   --  Getter of NamedElement::namespace.
433   --
434   --  Specifies the namespace that owns the NamedElement.
435
436   overriding function Get_Qualified_Name
437    (Self : not null access constant UML_Device_Proxy)
438       return AMF.Optional_String;
439   --  Getter of NamedElement::qualifiedName.
440   --
441   --  A name which allows the NamedElement to be identified within a
442   --  hierarchy of nested Namespaces. It is constructed from the names of the
443   --  containing namespaces starting at the root of the hierarchy and ending
444   --  with the name of the NamedElement itself.
445
446   overriding function Get_Package
447    (Self : not null access constant UML_Device_Proxy)
448       return AMF.UML.Packages.UML_Package_Access;
449   --  Getter of Type::package.
450   --
451   --  Specifies the owning package of this classifier, if any.
452
453   overriding procedure Set_Package
454    (Self : not null access UML_Device_Proxy;
455     To   : AMF.UML.Packages.UML_Package_Access);
456   --  Setter of Type::package.
457   --
458   --  Specifies the owning package of this classifier, if any.
459
460   overriding function Get_Owning_Template_Parameter
461    (Self : not null access constant UML_Device_Proxy)
462       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
463   --  Getter of ParameterableElement::owningTemplateParameter.
464   --
465   --  The formal template parameter that owns this element.
466
467   overriding procedure Set_Owning_Template_Parameter
468    (Self : not null access UML_Device_Proxy;
469     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
470   --  Setter of ParameterableElement::owningTemplateParameter.
471   --
472   --  The formal template parameter that owns this element.
473
474   overriding function Get_Template_Parameter
475    (Self : not null access constant UML_Device_Proxy)
476       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access;
477   --  Getter of ParameterableElement::templateParameter.
478   --
479   --  The template parameter that exposes this element as a formal parameter.
480
481   overriding procedure Set_Template_Parameter
482    (Self : not null access UML_Device_Proxy;
483     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access);
484   --  Setter of ParameterableElement::templateParameter.
485   --
486   --  The template parameter that exposes this element as a formal parameter.
487
488   overriding function Get_Owned_Template_Signature
489    (Self : not null access constant UML_Device_Proxy)
490       return AMF.UML.Template_Signatures.UML_Template_Signature_Access;
491   --  Getter of TemplateableElement::ownedTemplateSignature.
492   --
493   --  The optional template signature specifying the formal template
494   --  parameters.
495
496   overriding procedure Set_Owned_Template_Signature
497    (Self : not null access UML_Device_Proxy;
498     To   : AMF.UML.Template_Signatures.UML_Template_Signature_Access);
499   --  Setter of TemplateableElement::ownedTemplateSignature.
500   --
501   --  The optional template signature specifying the formal template
502   --  parameters.
503
504   overriding function Get_Template_Binding
505    (Self : not null access constant UML_Device_Proxy)
506       return AMF.UML.Template_Bindings.Collections.Set_Of_UML_Template_Binding;
507   --  Getter of TemplateableElement::templateBinding.
508   --
509   --  The optional bindings from this element to templates.
510
511   overriding function Get_Is_Leaf
512    (Self : not null access constant UML_Device_Proxy)
513       return Boolean;
514   --  Getter of RedefinableElement::isLeaf.
515   --
516   --  Indicates whether it is possible to further redefine a
517   --  RedefinableElement. If the value is true, then it is not possible to
518   --  further redefine the RedefinableElement. Note that this property is
519   --  preserved through package merge operations; that is, the capability to
520   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
521   --  the resulting RedefinableElement of a package merge operation where a
522   --  RedefinableElement with isLeaf=false is merged with a matching
523   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
524   --  will have isLeaf=false. Default value is false.
525
526   overriding procedure Set_Is_Leaf
527    (Self : not null access UML_Device_Proxy;
528     To   : Boolean);
529   --  Setter of RedefinableElement::isLeaf.
530   --
531   --  Indicates whether it is possible to further redefine a
532   --  RedefinableElement. If the value is true, then it is not possible to
533   --  further redefine the RedefinableElement. Note that this property is
534   --  preserved through package merge operations; that is, the capability to
535   --  redefine a RedefinableElement (i.e., isLeaf=false) must be preserved in
536   --  the resulting RedefinableElement of a package merge operation where a
537   --  RedefinableElement with isLeaf=false is merged with a matching
538   --  RedefinableElement with isLeaf=true: the resulting RedefinableElement
539   --  will have isLeaf=false. Default value is false.
540
541   overriding function Get_Redefined_Element
542    (Self : not null access constant UML_Device_Proxy)
543       return AMF.UML.Redefinable_Elements.Collections.Set_Of_UML_Redefinable_Element;
544   --  Getter of RedefinableElement::redefinedElement.
545   --
546   --  The redefinable element that is being redefined by this element.
547
548   overriding function Get_Redefinition_Context
549    (Self : not null access constant UML_Device_Proxy)
550       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
551   --  Getter of RedefinableElement::redefinitionContext.
552   --
553   --  References the contexts that this element may be redefined from.
554
555   overriding function Get_Owned_Port
556    (Self : not null access constant UML_Device_Proxy)
557       return AMF.UML.Ports.Collections.Set_Of_UML_Port;
558   --  Getter of EncapsulatedClassifier::ownedPort.
559   --
560   --  References a set of ports that an encapsulated classifier owns.
561
562   overriding function Get_Owned_Connector
563    (Self : not null access constant UML_Device_Proxy)
564       return AMF.UML.Connectors.Collections.Set_Of_UML_Connector;
565   --  Getter of StructuredClassifier::ownedConnector.
566   --
567   --  References the connectors owned by the classifier.
568
569   overriding function Get_Part
570    (Self : not null access constant UML_Device_Proxy)
571       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
572   --  Getter of StructuredClassifier::part.
573   --
574   --  References the properties specifying instances that the classifier owns
575   --  by composition. This association is derived, selecting those owned
576   --  properties where isComposite is true.
577
578   overriding function Get_Role
579    (Self : not null access constant UML_Device_Proxy)
580       return AMF.UML.Connectable_Elements.Collections.Set_Of_UML_Connectable_Element;
581   --  Getter of StructuredClassifier::role.
582   --
583   --  References the roles that instances may play in this classifier.
584
585   overriding function Get_Deployed_Element
586    (Self : not null access constant UML_Device_Proxy)
587       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
588   --  Getter of DeploymentTarget::deployedElement.
589   --
590   --  The set of elements that are manifested in an Artifact that is involved
591   --  in Deployment to a DeploymentTarget.
592
593   overriding function Get_Deployment
594    (Self : not null access constant UML_Device_Proxy)
595       return AMF.UML.Deployments.Collections.Set_Of_UML_Deployment;
596   --  Getter of DeploymentTarget::deployment.
597   --
598   --  The set of Deployments for a DeploymentTarget.
599
600   overriding function Extension
601    (Self : not null access constant UML_Device_Proxy)
602       return AMF.UML.Extensions.Collections.Set_Of_UML_Extension;
603   --  Operation Class::extension.
604   --
605   --  Missing derivation for Class::/extension : Extension
606
607   overriding function Inherit
608    (Self : not null access constant UML_Device_Proxy;
609     Inhs : AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element)
610       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
611   --  Operation Class::inherit.
612   --
613   --  The inherit operation is overridden to exclude redefined properties.
614
615   overriding function Super_Class
616    (Self : not null access constant UML_Device_Proxy)
617       return AMF.UML.Classes.Collections.Set_Of_UML_Class;
618   --  Operation Class::superClass.
619   --
620   --  Missing derivation for Class::/superClass : Class
621
622   overriding function All_Features
623    (Self : not null access constant UML_Device_Proxy)
624       return AMF.UML.Features.Collections.Set_Of_UML_Feature;
625   --  Operation Classifier::allFeatures.
626   --
627   --  The query allFeatures() gives all of the features in the namespace of
628   --  the classifier. In general, through mechanisms such as inheritance,
629   --  this will be a larger set than feature.
630
631   overriding function Conforms_To
632    (Self : not null access constant UML_Device_Proxy;
633     Other : AMF.UML.Classifiers.UML_Classifier_Access)
634       return Boolean;
635   --  Operation Classifier::conformsTo.
636   --
637   --  The query conformsTo() gives true for a classifier that defines a type
638   --  that conforms to another. This is used, for example, in the
639   --  specification of signature conformance for operations.
640
641   overriding function General
642    (Self : not null access constant UML_Device_Proxy)
643       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier;
644   --  Operation Classifier::general.
645   --
646   --  The general classifiers are the classifiers referenced by the
647   --  generalization relationships.
648
649   overriding function Has_Visibility_Of
650    (Self : not null access constant UML_Device_Proxy;
651     N : AMF.UML.Named_Elements.UML_Named_Element_Access)
652       return Boolean;
653   --  Operation Classifier::hasVisibilityOf.
654   --
655   --  The query hasVisibilityOf() determines whether a named element is
656   --  visible in the classifier. By default all are visible. It is only
657   --  called when the argument is something owned by a parent.
658
659   overriding function Inheritable_Members
660    (Self : not null access constant UML_Device_Proxy;
661     C : AMF.UML.Classifiers.UML_Classifier_Access)
662       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
663   --  Operation Classifier::inheritableMembers.
664   --
665   --  The query inheritableMembers() gives all of the members of a classifier
666   --  that may be inherited in one of its descendants, subject to whatever
667   --  visibility restrictions apply.
668
669   overriding function Inherited_Member
670    (Self : not null access constant UML_Device_Proxy)
671       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
672   --  Operation Classifier::inheritedMember.
673   --
674   --  The inheritedMember association is derived by inheriting the
675   --  inheritable members of the parents.
676   --  The inheritedMember association is derived by inheriting the
677   --  inheritable members of the parents.
678
679   overriding function Is_Template
680    (Self : not null access constant UML_Device_Proxy)
681       return Boolean;
682   --  Operation Classifier::isTemplate.
683   --
684   --  The query isTemplate() returns whether this templateable element is
685   --  actually a template.
686
687   overriding function May_Specialize_Type
688    (Self : not null access constant UML_Device_Proxy;
689     C : AMF.UML.Classifiers.UML_Classifier_Access)
690       return Boolean;
691   --  Operation Classifier::maySpecializeType.
692   --
693   --  The query maySpecializeType() determines whether this classifier may
694   --  have a generalization relationship to classifiers of the specified
695   --  type. By default a classifier may specialize classifiers of the same or
696   --  a more general type. It is intended to be redefined by classifiers that
697   --  have different specialization constraints.
698
699   overriding function Exclude_Collisions
700    (Self : not null access constant UML_Device_Proxy;
701     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
702       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
703   --  Operation Namespace::excludeCollisions.
704   --
705   --  The query excludeCollisions() excludes from a set of
706   --  PackageableElements any that would not be distinguishable from each
707   --  other in this namespace.
708
709   overriding function Get_Names_Of_Member
710    (Self : not null access constant UML_Device_Proxy;
711     Element : AMF.UML.Named_Elements.UML_Named_Element_Access)
712       return AMF.String_Collections.Set_Of_String;
713   --  Operation Namespace::getNamesOfMember.
714   --
715   --  The query getNamesOfMember() takes importing into account. It gives
716   --  back the set of names that an element would have in an importing
717   --  namespace, either because it is owned, or if not owned then imported
718   --  individually, or if not individually then from a package.
719   --  The query getNamesOfMember() gives a set of all of the names that a
720   --  member would have in a Namespace. In general a member can have multiple
721   --  names in a Namespace if it is imported more than once with different
722   --  aliases. The query takes account of importing. It gives back the set of
723   --  names that an element would have in an importing namespace, either
724   --  because it is owned, or if not owned then imported individually, or if
725   --  not individually then from a package.
726
727   overriding function Import_Members
728    (Self : not null access constant UML_Device_Proxy;
729     Imps : AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element)
730       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
731   --  Operation Namespace::importMembers.
732   --
733   --  The query importMembers() defines which of a set of PackageableElements
734   --  are actually imported into the namespace. This excludes hidden ones,
735   --  i.e., those which have names that conflict with names of owned members,
736   --  and also excludes elements which would have the same name when imported.
737
738   overriding function Imported_Member
739    (Self : not null access constant UML_Device_Proxy)
740       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
741   --  Operation Namespace::importedMember.
742   --
743   --  The importedMember property is derived from the ElementImports and the
744   --  PackageImports. References the PackageableElements that are members of
745   --  this Namespace as a result of either PackageImports or ElementImports.
746
747   overriding function Members_Are_Distinguishable
748    (Self : not null access constant UML_Device_Proxy)
749       return Boolean;
750   --  Operation Namespace::membersAreDistinguishable.
751   --
752   --  The Boolean query membersAreDistinguishable() determines whether all of
753   --  the namespace's members are distinguishable within it.
754
755   overriding function Owned_Member
756    (Self : not null access constant UML_Device_Proxy)
757       return AMF.UML.Named_Elements.Collections.Set_Of_UML_Named_Element;
758   --  Operation Namespace::ownedMember.
759   --
760   --  Missing derivation for Namespace::/ownedMember : NamedElement
761
762   overriding function All_Owning_Packages
763    (Self : not null access constant UML_Device_Proxy)
764       return AMF.UML.Packages.Collections.Set_Of_UML_Package;
765   --  Operation NamedElement::allOwningPackages.
766   --
767   --  The query allOwningPackages() returns all the directly or indirectly
768   --  owning packages.
769
770   overriding function Is_Distinguishable_From
771    (Self : not null access constant UML_Device_Proxy;
772     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
773     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
774       return Boolean;
775   --  Operation NamedElement::isDistinguishableFrom.
776   --
777   --  The query isDistinguishableFrom() determines whether two NamedElements
778   --  may logically co-exist within a Namespace. By default, two named
779   --  elements are distinguishable if (a) they have unrelated types or (b)
780   --  they have related types but different names.
781
782   overriding function Namespace
783    (Self : not null access constant UML_Device_Proxy)
784       return AMF.UML.Namespaces.UML_Namespace_Access;
785   --  Operation NamedElement::namespace.
786   --
787   --  Missing derivation for NamedElement::/namespace : Namespace
788
789   overriding function Conforms_To
790    (Self : not null access constant UML_Device_Proxy;
791     Other : AMF.UML.Types.UML_Type_Access)
792       return Boolean;
793   --  Operation Type::conformsTo.
794   --
795   --  The query conformsTo() gives true for a type that conforms to another.
796   --  By default, two types do not conform to each other. This query is
797   --  intended to be redefined for specific conformance situations.
798
799   overriding function Is_Compatible_With
800    (Self : not null access constant UML_Device_Proxy;
801     P : AMF.UML.Parameterable_Elements.UML_Parameterable_Element_Access)
802       return Boolean;
803   --  Operation ParameterableElement::isCompatibleWith.
804   --
805   --  The query isCompatibleWith() determines if this parameterable element
806   --  is compatible with the specified parameterable element. By default
807   --  parameterable element P is compatible with parameterable element Q if
808   --  the kind of P is the same or a subtype as the kind of Q. Subclasses
809   --  should override this operation to specify different compatibility
810   --  constraints.
811
812   overriding function Is_Template_Parameter
813    (Self : not null access constant UML_Device_Proxy)
814       return Boolean;
815   --  Operation ParameterableElement::isTemplateParameter.
816   --
817   --  The query isTemplateParameter() determines if this parameterable
818   --  element is exposed as a formal template parameter.
819
820   overriding function Parameterable_Elements
821    (Self : not null access constant UML_Device_Proxy)
822       return AMF.UML.Parameterable_Elements.Collections.Set_Of_UML_Parameterable_Element;
823   --  Operation TemplateableElement::parameterableElements.
824   --
825   --  The query parameterableElements() returns the set of elements that may
826   --  be used as the parametered elements for a template parameter of this
827   --  templateable element. By default, this set includes all the owned
828   --  elements. Subclasses may override this operation if they choose to
829   --  restrict the set of parameterable elements.
830
831   overriding function Is_Consistent_With
832    (Self : not null access constant UML_Device_Proxy;
833     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
834       return Boolean;
835   --  Operation RedefinableElement::isConsistentWith.
836   --
837   --  The query isConsistentWith() specifies, for any two RedefinableElements
838   --  in a context in which redefinition is possible, whether redefinition
839   --  would be logically consistent. By default, this is false; this
840   --  operation must be overridden for subclasses of RedefinableElement to
841   --  define the consistency conditions.
842
843   overriding function Is_Redefinition_Context_Valid
844    (Self : not null access constant UML_Device_Proxy;
845     Redefined : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
846       return Boolean;
847   --  Operation RedefinableElement::isRedefinitionContextValid.
848   --
849   --  The query isRedefinitionContextValid() specifies whether the
850   --  redefinition contexts of this RedefinableElement are properly related
851   --  to the redefinition contexts of the specified RedefinableElement to
852   --  allow this element to redefine the other. By default at least one of
853   --  the redefinition contexts of this element must be a specialization of
854   --  at least one of the redefinition contexts of the specified element.
855
856   overriding function Owned_Port
857    (Self : not null access constant UML_Device_Proxy)
858       return AMF.UML.Ports.Collections.Set_Of_UML_Port;
859   --  Operation EncapsulatedClassifier::ownedPort.
860   --
861   --  Missing derivation for EncapsulatedClassifier::/ownedPort : Port
862
863   overriding function Part
864    (Self : not null access constant UML_Device_Proxy)
865       return AMF.UML.Properties.Collections.Set_Of_UML_Property;
866   --  Operation StructuredClassifier::part.
867   --
868   --  Missing derivation for StructuredClassifier::/part : Property
869
870   overriding function Deployed_Element
871    (Self : not null access constant UML_Device_Proxy)
872       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element;
873   --  Operation DeploymentTarget::deployedElement.
874   --
875   --  Missing derivation for DeploymentTarget::/deployedElement :
876   --  PackageableElement
877
878   overriding procedure Enter_Element
879    (Self    : not null access constant UML_Device_Proxy;
880     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
881     Control : in out AMF.Visitors.Traverse_Control);
882   --  Dispatch call to corresponding subprogram of visitor interface.
883
884   overriding procedure Leave_Element
885    (Self    : not null access constant UML_Device_Proxy;
886     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
887     Control : in out AMF.Visitors.Traverse_Control);
888   --  Dispatch call to corresponding subprogram of visitor interface.
889
890   overriding procedure Visit_Element
891    (Self     : not null access constant UML_Device_Proxy;
892     Iterator : in out AMF.Visitors.Abstract_Iterator'Class;
893     Visitor  : in out AMF.Visitors.Abstract_Visitor'Class;
894     Control  : in out AMF.Visitors.Traverse_Control);
895   --  Dispatch call to corresponding subprogram of iterator interface.
896
897end AMF.Internals.UML_Devices;
898