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