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