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: 2981 $ $Date: 2012-05-15 20:56:15 +0400 (Tue, 15 May 2012) $
43------------------------------------------------------------------------------
44with AMF.Elements;
45with AMF.Internals.Element_Collections;
46with AMF.Internals.Helpers;
47with AMF.Internals.Tables.UML_Attributes;
48with AMF.Visitors.UML_Iterators;
49with AMF.Visitors.UML_Visitors;
50with League.Strings.Internals;
51with Matreshka.Internals.Strings;
52
53package body AMF.Internals.UML_Ports is
54
55   -------------------
56   -- Enter_Element --
57   -------------------
58
59   overriding procedure Enter_Element
60    (Self    : not null access constant UML_Port_Proxy;
61     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
62     Control : in out AMF.Visitors.Traverse_Control) is
63   begin
64      if Visitor in AMF.Visitors.UML_Visitors.UML_Visitor'Class then
65         AMF.Visitors.UML_Visitors.UML_Visitor'Class
66          (Visitor).Enter_Port
67            (AMF.UML.Ports.UML_Port_Access (Self),
68           Control);
69      end if;
70   end Enter_Element;
71
72   -------------------
73   -- Leave_Element --
74   -------------------
75
76   overriding procedure Leave_Element
77    (Self    : not null access constant UML_Port_Proxy;
78     Visitor : in out AMF.Visitors.Abstract_Visitor'Class;
79     Control : in out AMF.Visitors.Traverse_Control) is
80   begin
81      if Visitor in AMF.Visitors.UML_Visitors.UML_Visitor'Class then
82         AMF.Visitors.UML_Visitors.UML_Visitor'Class
83          (Visitor).Leave_Port
84            (AMF.UML.Ports.UML_Port_Access (Self),
85           Control);
86      end if;
87   end Leave_Element;
88
89   -------------------
90   -- Visit_Element --
91   -------------------
92
93   overriding procedure Visit_Element
94    (Self     : not null access constant UML_Port_Proxy;
95     Iterator : in out AMF.Visitors.Abstract_Iterator'Class;
96     Visitor  : in out AMF.Visitors.Abstract_Visitor'Class;
97     Control  : in out AMF.Visitors.Traverse_Control) is
98   begin
99      if Iterator in AMF.Visitors.UML_Iterators.UML_Iterator'Class then
100         AMF.Visitors.UML_Iterators.UML_Iterator'Class
101          (Iterator).Visit_Port
102            (Visitor,
103             AMF.UML.Ports.UML_Port_Access (Self),
104             Control);
105      end if;
106   end Visit_Element;
107
108   ---------------------
109   -- Get_Is_Behavior --
110   ---------------------
111
112   overriding function Get_Is_Behavior
113    (Self : not null access constant UML_Port_Proxy)
114       return Boolean is
115   begin
116      return
117        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Behavior
118         (Self.Element);
119   end Get_Is_Behavior;
120
121   ---------------------
122   -- Set_Is_Behavior --
123   ---------------------
124
125   overriding procedure Set_Is_Behavior
126    (Self : not null access UML_Port_Proxy;
127     To   : Boolean) is
128   begin
129      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Behavior
130       (Self.Element, To);
131   end Set_Is_Behavior;
132
133   -----------------------
134   -- Get_Is_Conjugated --
135   -----------------------
136
137   overriding function Get_Is_Conjugated
138    (Self : not null access constant UML_Port_Proxy)
139       return Boolean is
140   begin
141      return
142        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Conjugated
143         (Self.Element);
144   end Get_Is_Conjugated;
145
146   -----------------------
147   -- Set_Is_Conjugated --
148   -----------------------
149
150   overriding procedure Set_Is_Conjugated
151    (Self : not null access UML_Port_Proxy;
152     To   : Boolean) is
153   begin
154      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Conjugated
155       (Self.Element, To);
156   end Set_Is_Conjugated;
157
158   --------------------
159   -- Get_Is_Service --
160   --------------------
161
162   overriding function Get_Is_Service
163    (Self : not null access constant UML_Port_Proxy)
164       return Boolean is
165   begin
166      return
167        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Service
168         (Self.Element);
169   end Get_Is_Service;
170
171   --------------------
172   -- Set_Is_Service --
173   --------------------
174
175   overriding procedure Set_Is_Service
176    (Self : not null access UML_Port_Proxy;
177     To   : Boolean) is
178   begin
179      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Service
180       (Self.Element, To);
181   end Set_Is_Service;
182
183   ------------------
184   -- Get_Protocol --
185   ------------------
186
187   overriding function Get_Protocol
188    (Self : not null access constant UML_Port_Proxy)
189       return AMF.UML.Protocol_State_Machines.UML_Protocol_State_Machine_Access is
190   begin
191      return
192        AMF.UML.Protocol_State_Machines.UML_Protocol_State_Machine_Access
193         (AMF.Internals.Helpers.To_Element
194           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Protocol
195             (Self.Element)));
196   end Get_Protocol;
197
198   ------------------
199   -- Set_Protocol --
200   ------------------
201
202   overriding procedure Set_Protocol
203    (Self : not null access UML_Port_Proxy;
204     To   : AMF.UML.Protocol_State_Machines.UML_Protocol_State_Machine_Access) is
205   begin
206      AMF.Internals.Tables.UML_Attributes.Internal_Set_Protocol
207       (Self.Element,
208        AMF.Internals.Helpers.To_Element
209         (AMF.Elements.Element_Access (To)));
210   end Set_Protocol;
211
212   ------------------
213   -- Get_Provided --
214   ------------------
215
216   overriding function Get_Provided
217    (Self : not null access constant UML_Port_Proxy)
218       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is
219   begin
220      return
221        AMF.UML.Interfaces.Collections.Wrap
222         (AMF.Internals.Element_Collections.Wrap
223           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Provided
224             (Self.Element)));
225   end Get_Provided;
226
227   ------------------------
228   -- Get_Redefined_Port --
229   ------------------------
230
231   overriding function Get_Redefined_Port
232    (Self : not null access constant UML_Port_Proxy)
233       return AMF.UML.Ports.Collections.Set_Of_UML_Port is
234   begin
235      return
236        AMF.UML.Ports.Collections.Wrap
237         (AMF.Internals.Element_Collections.Wrap
238           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Redefined_Port
239             (Self.Element)));
240   end Get_Redefined_Port;
241
242   ------------------
243   -- Get_Required --
244   ------------------
245
246   overriding function Get_Required
247    (Self : not null access constant UML_Port_Proxy)
248       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is
249   begin
250      return
251        AMF.UML.Interfaces.Collections.Wrap
252         (AMF.Internals.Element_Collections.Wrap
253           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Required
254             (Self.Element)));
255   end Get_Required;
256
257   ---------------------
258   -- Get_Aggregation --
259   ---------------------
260
261   overriding function Get_Aggregation
262    (Self : not null access constant UML_Port_Proxy)
263       return AMF.UML.UML_Aggregation_Kind is
264   begin
265      return
266        AMF.Internals.Tables.UML_Attributes.Internal_Get_Aggregation
267         (Self.Element);
268   end Get_Aggregation;
269
270   ---------------------
271   -- Set_Aggregation --
272   ---------------------
273
274   overriding procedure Set_Aggregation
275    (Self : not null access UML_Port_Proxy;
276     To   : AMF.UML.UML_Aggregation_Kind) is
277   begin
278      AMF.Internals.Tables.UML_Attributes.Internal_Set_Aggregation
279       (Self.Element, To);
280   end Set_Aggregation;
281
282   ---------------------
283   -- Get_Association --
284   ---------------------
285
286   overriding function Get_Association
287    (Self : not null access constant UML_Port_Proxy)
288       return AMF.UML.Associations.UML_Association_Access is
289   begin
290      return
291        AMF.UML.Associations.UML_Association_Access
292         (AMF.Internals.Helpers.To_Element
293           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Association
294             (Self.Element)));
295   end Get_Association;
296
297   ---------------------
298   -- Set_Association --
299   ---------------------
300
301   overriding procedure Set_Association
302    (Self : not null access UML_Port_Proxy;
303     To   : AMF.UML.Associations.UML_Association_Access) is
304   begin
305      AMF.Internals.Tables.UML_Attributes.Internal_Set_Association
306       (Self.Element,
307        AMF.Internals.Helpers.To_Element
308         (AMF.Elements.Element_Access (To)));
309   end Set_Association;
310
311   -------------------------
312   -- Get_Association_End --
313   -------------------------
314
315   overriding function Get_Association_End
316    (Self : not null access constant UML_Port_Proxy)
317       return AMF.UML.Properties.UML_Property_Access is
318   begin
319      return
320        AMF.UML.Properties.UML_Property_Access
321         (AMF.Internals.Helpers.To_Element
322           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Association_End
323             (Self.Element)));
324   end Get_Association_End;
325
326   -------------------------
327   -- Set_Association_End --
328   -------------------------
329
330   overriding procedure Set_Association_End
331    (Self : not null access UML_Port_Proxy;
332     To   : AMF.UML.Properties.UML_Property_Access) is
333   begin
334      AMF.Internals.Tables.UML_Attributes.Internal_Set_Association_End
335       (Self.Element,
336        AMF.Internals.Helpers.To_Element
337         (AMF.Elements.Element_Access (To)));
338   end Set_Association_End;
339
340   ---------------
341   -- Get_Class --
342   ---------------
343
344   overriding function Get_Class
345    (Self : not null access constant UML_Port_Proxy)
346       return AMF.UML.Classes.UML_Class_Access is
347   begin
348      return
349        AMF.UML.Classes.UML_Class_Access
350         (AMF.Internals.Helpers.To_Element
351           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Class
352             (Self.Element)));
353   end Get_Class;
354
355   ---------------
356   -- Set_Class --
357   ---------------
358
359   overriding procedure Set_Class
360    (Self : not null access UML_Port_Proxy;
361     To   : AMF.UML.Classes.UML_Class_Access) is
362   begin
363      AMF.Internals.Tables.UML_Attributes.Internal_Set_Class
364       (Self.Element,
365        AMF.Internals.Helpers.To_Element
366         (AMF.Elements.Element_Access (To)));
367   end Set_Class;
368
369   ------------------
370   -- Get_Datatype --
371   ------------------
372
373   overriding function Get_Datatype
374    (Self : not null access constant UML_Port_Proxy)
375       return AMF.UML.Data_Types.UML_Data_Type_Access is
376   begin
377      return
378        AMF.UML.Data_Types.UML_Data_Type_Access
379         (AMF.Internals.Helpers.To_Element
380           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Datatype
381             (Self.Element)));
382   end Get_Datatype;
383
384   ------------------
385   -- Set_Datatype --
386   ------------------
387
388   overriding procedure Set_Datatype
389    (Self : not null access UML_Port_Proxy;
390     To   : AMF.UML.Data_Types.UML_Data_Type_Access) is
391   begin
392      AMF.Internals.Tables.UML_Attributes.Internal_Set_Datatype
393       (Self.Element,
394        AMF.Internals.Helpers.To_Element
395         (AMF.Elements.Element_Access (To)));
396   end Set_Datatype;
397
398   -----------------
399   -- Get_Default --
400   -----------------
401
402   overriding function Get_Default
403    (Self : not null access constant UML_Port_Proxy)
404       return AMF.Optional_String is
405   begin
406      declare
407         use type Matreshka.Internals.Strings.Shared_String_Access;
408
409         Aux : constant Matreshka.Internals.Strings.Shared_String_Access
410           := AMF.Internals.Tables.UML_Attributes.Internal_Get_Default (Self.Element);
411
412      begin
413         if Aux = null then
414            return (Is_Empty => True);
415
416         else
417            return (False, League.Strings.Internals.Create (Aux));
418         end if;
419      end;
420   end Get_Default;
421
422   -----------------
423   -- Set_Default --
424   -----------------
425
426   overriding procedure Set_Default
427    (Self : not null access UML_Port_Proxy;
428     To   : AMF.Optional_String) is
429   begin
430      if To.Is_Empty then
431         AMF.Internals.Tables.UML_Attributes.Internal_Set_Default
432          (Self.Element, null);
433
434      else
435         AMF.Internals.Tables.UML_Attributes.Internal_Set_Default
436          (Self.Element,
437           League.Strings.Internals.Internal (To.Value));
438      end if;
439   end Set_Default;
440
441   -----------------------
442   -- Get_Default_Value --
443   -----------------------
444
445   overriding function Get_Default_Value
446    (Self : not null access constant UML_Port_Proxy)
447       return AMF.UML.Value_Specifications.UML_Value_Specification_Access is
448   begin
449      return
450        AMF.UML.Value_Specifications.UML_Value_Specification_Access
451         (AMF.Internals.Helpers.To_Element
452           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Default_Value
453             (Self.Element)));
454   end Get_Default_Value;
455
456   -----------------------
457   -- Set_Default_Value --
458   -----------------------
459
460   overriding procedure Set_Default_Value
461    (Self : not null access UML_Port_Proxy;
462     To   : AMF.UML.Value_Specifications.UML_Value_Specification_Access) is
463   begin
464      AMF.Internals.Tables.UML_Attributes.Internal_Set_Default_Value
465       (Self.Element,
466        AMF.Internals.Helpers.To_Element
467         (AMF.Elements.Element_Access (To)));
468   end Set_Default_Value;
469
470   -------------------
471   -- Get_Interface --
472   -------------------
473
474   overriding function Get_Interface
475    (Self : not null access constant UML_Port_Proxy)
476       return AMF.UML.Interfaces.UML_Interface_Access is
477   begin
478      return
479        AMF.UML.Interfaces.UML_Interface_Access
480         (AMF.Internals.Helpers.To_Element
481           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Interface
482             (Self.Element)));
483   end Get_Interface;
484
485   -------------------
486   -- Set_Interface --
487   -------------------
488
489   overriding procedure Set_Interface
490    (Self : not null access UML_Port_Proxy;
491     To   : AMF.UML.Interfaces.UML_Interface_Access) is
492   begin
493      AMF.Internals.Tables.UML_Attributes.Internal_Set_Interface
494       (Self.Element,
495        AMF.Internals.Helpers.To_Element
496         (AMF.Elements.Element_Access (To)));
497   end Set_Interface;
498
499   --------------------
500   -- Get_Is_Derived --
501   --------------------
502
503   overriding function Get_Is_Derived
504    (Self : not null access constant UML_Port_Proxy)
505       return Boolean is
506   begin
507      return
508        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Derived
509         (Self.Element);
510   end Get_Is_Derived;
511
512   --------------------
513   -- Set_Is_Derived --
514   --------------------
515
516   overriding procedure Set_Is_Derived
517    (Self : not null access UML_Port_Proxy;
518     To   : Boolean) is
519   begin
520      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Derived
521       (Self.Element, To);
522   end Set_Is_Derived;
523
524   --------------------------
525   -- Get_Is_Derived_Union --
526   --------------------------
527
528   overriding function Get_Is_Derived_Union
529    (Self : not null access constant UML_Port_Proxy)
530       return Boolean is
531   begin
532      return
533        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Derived_Union
534         (Self.Element);
535   end Get_Is_Derived_Union;
536
537   --------------------------
538   -- Set_Is_Derived_Union --
539   --------------------------
540
541   overriding procedure Set_Is_Derived_Union
542    (Self : not null access UML_Port_Proxy;
543     To   : Boolean) is
544   begin
545      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Derived_Union
546       (Self.Element, To);
547   end Set_Is_Derived_Union;
548
549   ---------------
550   -- Get_Is_ID --
551   ---------------
552
553   overriding function Get_Is_ID
554    (Self : not null access constant UML_Port_Proxy)
555       return Boolean is
556   begin
557      return
558        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_ID
559         (Self.Element);
560   end Get_Is_ID;
561
562   ---------------
563   -- Set_Is_ID --
564   ---------------
565
566   overriding procedure Set_Is_ID
567    (Self : not null access UML_Port_Proxy;
568     To   : Boolean) is
569   begin
570      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_ID
571       (Self.Element, To);
572   end Set_Is_ID;
573
574   ----------------------
575   -- Get_Is_Read_Only --
576   ----------------------
577
578   overriding function Get_Is_Read_Only
579    (Self : not null access constant UML_Port_Proxy)
580       return Boolean is
581   begin
582      return
583        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Read_Only
584         (Self.Element);
585   end Get_Is_Read_Only;
586
587   ----------------------
588   -- Set_Is_Read_Only --
589   ----------------------
590
591   overriding procedure Set_Is_Read_Only
592    (Self : not null access UML_Port_Proxy;
593     To   : Boolean) is
594   begin
595      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Read_Only
596       (Self.Element, To);
597   end Set_Is_Read_Only;
598
599   ------------------
600   -- Get_Opposite --
601   ------------------
602
603   overriding function Get_Opposite
604    (Self : not null access constant UML_Port_Proxy)
605       return AMF.UML.Properties.UML_Property_Access is
606   begin
607      return
608        AMF.UML.Properties.UML_Property_Access
609         (AMF.Internals.Helpers.To_Element
610           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Opposite
611             (Self.Element)));
612   end Get_Opposite;
613
614   ------------------
615   -- Set_Opposite --
616   ------------------
617
618   overriding procedure Set_Opposite
619    (Self : not null access UML_Port_Proxy;
620     To   : AMF.UML.Properties.UML_Property_Access) is
621   begin
622      AMF.Internals.Tables.UML_Attributes.Internal_Set_Opposite
623       (Self.Element,
624        AMF.Internals.Helpers.To_Element
625         (AMF.Elements.Element_Access (To)));
626   end Set_Opposite;
627
628   ----------------------------
629   -- Get_Owning_Association --
630   ----------------------------
631
632   overriding function Get_Owning_Association
633    (Self : not null access constant UML_Port_Proxy)
634       return AMF.UML.Associations.UML_Association_Access is
635   begin
636      return
637        AMF.UML.Associations.UML_Association_Access
638         (AMF.Internals.Helpers.To_Element
639           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Owning_Association
640             (Self.Element)));
641   end Get_Owning_Association;
642
643   ----------------------------
644   -- Set_Owning_Association --
645   ----------------------------
646
647   overriding procedure Set_Owning_Association
648    (Self : not null access UML_Port_Proxy;
649     To   : AMF.UML.Associations.UML_Association_Access) is
650   begin
651      AMF.Internals.Tables.UML_Attributes.Internal_Set_Owning_Association
652       (Self.Element,
653        AMF.Internals.Helpers.To_Element
654         (AMF.Elements.Element_Access (To)));
655   end Set_Owning_Association;
656
657   -------------------
658   -- Get_Qualifier --
659   -------------------
660
661   overriding function Get_Qualifier
662    (Self : not null access constant UML_Port_Proxy)
663       return AMF.UML.Properties.Collections.Ordered_Set_Of_UML_Property is
664   begin
665      return
666        AMF.UML.Properties.Collections.Wrap
667         (AMF.Internals.Element_Collections.Wrap
668           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Qualifier
669             (Self.Element)));
670   end Get_Qualifier;
671
672   ----------------------------
673   -- Get_Redefined_Property --
674   ----------------------------
675
676   overriding function Get_Redefined_Property
677    (Self : not null access constant UML_Port_Proxy)
678       return AMF.UML.Properties.Collections.Set_Of_UML_Property is
679   begin
680      return
681        AMF.UML.Properties.Collections.Wrap
682         (AMF.Internals.Element_Collections.Wrap
683           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Redefined_Property
684             (Self.Element)));
685   end Get_Redefined_Property;
686
687   ----------------------------
688   -- Get_Subsetted_Property --
689   ----------------------------
690
691   overriding function Get_Subsetted_Property
692    (Self : not null access constant UML_Port_Proxy)
693       return AMF.UML.Properties.Collections.Set_Of_UML_Property is
694   begin
695      return
696        AMF.UML.Properties.Collections.Wrap
697         (AMF.Internals.Element_Collections.Wrap
698           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Subsetted_Property
699             (Self.Element)));
700   end Get_Subsetted_Property;
701
702   -------------
703   -- Get_End --
704   -------------
705
706   overriding function Get_End
707    (Self : not null access constant UML_Port_Proxy)
708       return AMF.UML.Connector_Ends.Collections.Ordered_Set_Of_UML_Connector_End is
709   begin
710      return
711        AMF.UML.Connector_Ends.Collections.Wrap
712         (AMF.Internals.Element_Collections.Wrap
713           (AMF.Internals.Tables.UML_Attributes.Internal_Get_End
714             (Self.Element)));
715   end Get_End;
716
717   ----------------------------
718   -- Get_Template_Parameter --
719   ----------------------------
720
721   overriding function Get_Template_Parameter
722    (Self : not null access constant UML_Port_Proxy)
723       return AMF.UML.Connectable_Element_Template_Parameters.UML_Connectable_Element_Template_Parameter_Access is
724   begin
725      return
726        AMF.UML.Connectable_Element_Template_Parameters.UML_Connectable_Element_Template_Parameter_Access
727         (AMF.Internals.Helpers.To_Element
728           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Template_Parameter
729             (Self.Element)));
730   end Get_Template_Parameter;
731
732   ----------------------------
733   -- Set_Template_Parameter --
734   ----------------------------
735
736   overriding procedure Set_Template_Parameter
737    (Self : not null access UML_Port_Proxy;
738     To   : AMF.UML.Connectable_Element_Template_Parameters.UML_Connectable_Element_Template_Parameter_Access) is
739   begin
740      AMF.Internals.Tables.UML_Attributes.Internal_Set_Template_Parameter
741       (Self.Element,
742        AMF.Internals.Helpers.To_Element
743         (AMF.Elements.Element_Access (To)));
744   end Set_Template_Parameter;
745
746   --------------
747   -- Get_Type --
748   --------------
749
750   overriding function Get_Type
751    (Self : not null access constant UML_Port_Proxy)
752       return AMF.UML.Types.UML_Type_Access is
753   begin
754      return
755        AMF.UML.Types.UML_Type_Access
756         (AMF.Internals.Helpers.To_Element
757           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Type
758             (Self.Element)));
759   end Get_Type;
760
761   --------------
762   -- Set_Type --
763   --------------
764
765   overriding procedure Set_Type
766    (Self : not null access UML_Port_Proxy;
767     To   : AMF.UML.Types.UML_Type_Access) is
768   begin
769      AMF.Internals.Tables.UML_Attributes.Internal_Set_Type
770       (Self.Element,
771        AMF.Internals.Helpers.To_Element
772         (AMF.Elements.Element_Access (To)));
773   end Set_Type;
774
775   ---------------------------
776   -- Get_Client_Dependency --
777   ---------------------------
778
779   overriding function Get_Client_Dependency
780    (Self : not null access constant UML_Port_Proxy)
781       return AMF.UML.Dependencies.Collections.Set_Of_UML_Dependency is
782   begin
783      return
784        AMF.UML.Dependencies.Collections.Wrap
785         (AMF.Internals.Element_Collections.Wrap
786           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Client_Dependency
787             (Self.Element)));
788   end Get_Client_Dependency;
789
790   -------------------------
791   -- Get_Name_Expression --
792   -------------------------
793
794   overriding function Get_Name_Expression
795    (Self : not null access constant UML_Port_Proxy)
796       return AMF.UML.String_Expressions.UML_String_Expression_Access is
797   begin
798      return
799        AMF.UML.String_Expressions.UML_String_Expression_Access
800         (AMF.Internals.Helpers.To_Element
801           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Name_Expression
802             (Self.Element)));
803   end Get_Name_Expression;
804
805   -------------------------
806   -- Set_Name_Expression --
807   -------------------------
808
809   overriding procedure Set_Name_Expression
810    (Self : not null access UML_Port_Proxy;
811     To   : AMF.UML.String_Expressions.UML_String_Expression_Access) is
812   begin
813      AMF.Internals.Tables.UML_Attributes.Internal_Set_Name_Expression
814       (Self.Element,
815        AMF.Internals.Helpers.To_Element
816         (AMF.Elements.Element_Access (To)));
817   end Set_Name_Expression;
818
819   -------------------
820   -- Get_Namespace --
821   -------------------
822
823   overriding function Get_Namespace
824    (Self : not null access constant UML_Port_Proxy)
825       return AMF.UML.Namespaces.UML_Namespace_Access is
826   begin
827      return
828        AMF.UML.Namespaces.UML_Namespace_Access
829         (AMF.Internals.Helpers.To_Element
830           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Namespace
831             (Self.Element)));
832   end Get_Namespace;
833
834   ------------------------
835   -- Get_Qualified_Name --
836   ------------------------
837
838   overriding function Get_Qualified_Name
839    (Self : not null access constant UML_Port_Proxy)
840       return AMF.Optional_String is
841   begin
842      declare
843         use type Matreshka.Internals.Strings.Shared_String_Access;
844
845         Aux : constant Matreshka.Internals.Strings.Shared_String_Access
846           := AMF.Internals.Tables.UML_Attributes.Internal_Get_Qualified_Name (Self.Element);
847
848      begin
849         if Aux = null then
850            return (Is_Empty => True);
851
852         else
853            return (False, League.Strings.Internals.Create (Aux));
854         end if;
855      end;
856   end Get_Qualified_Name;
857
858   -----------------------------------
859   -- Get_Owning_Template_Parameter --
860   -----------------------------------
861
862   overriding function Get_Owning_Template_Parameter
863    (Self : not null access constant UML_Port_Proxy)
864       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access is
865   begin
866      return
867        AMF.UML.Template_Parameters.UML_Template_Parameter_Access
868         (AMF.Internals.Helpers.To_Element
869           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Owning_Template_Parameter
870             (Self.Element)));
871   end Get_Owning_Template_Parameter;
872
873   -----------------------------------
874   -- Set_Owning_Template_Parameter --
875   -----------------------------------
876
877   overriding procedure Set_Owning_Template_Parameter
878    (Self : not null access UML_Port_Proxy;
879     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access) is
880   begin
881      AMF.Internals.Tables.UML_Attributes.Internal_Set_Owning_Template_Parameter
882       (Self.Element,
883        AMF.Internals.Helpers.To_Element
884         (AMF.Elements.Element_Access (To)));
885   end Set_Owning_Template_Parameter;
886
887   ----------------------------
888   -- Get_Template_Parameter --
889   ----------------------------
890
891   overriding function Get_Template_Parameter
892    (Self : not null access constant UML_Port_Proxy)
893       return AMF.UML.Template_Parameters.UML_Template_Parameter_Access is
894   begin
895      return
896        AMF.UML.Template_Parameters.UML_Template_Parameter_Access
897         (AMF.Internals.Helpers.To_Element
898           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Template_Parameter
899             (Self.Element)));
900   end Get_Template_Parameter;
901
902   ----------------------------
903   -- Set_Template_Parameter --
904   ----------------------------
905
906   overriding procedure Set_Template_Parameter
907    (Self : not null access UML_Port_Proxy;
908     To   : AMF.UML.Template_Parameters.UML_Template_Parameter_Access) is
909   begin
910      AMF.Internals.Tables.UML_Attributes.Internal_Set_Template_Parameter
911       (Self.Element,
912        AMF.Internals.Helpers.To_Element
913         (AMF.Elements.Element_Access (To)));
914   end Set_Template_Parameter;
915
916   --------------------------
917   -- Get_Deployed_Element --
918   --------------------------
919
920   overriding function Get_Deployed_Element
921    (Self : not null access constant UML_Port_Proxy)
922       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element is
923   begin
924      return
925        AMF.UML.Packageable_Elements.Collections.Wrap
926         (AMF.Internals.Element_Collections.Wrap
927           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Deployed_Element
928             (Self.Element)));
929   end Get_Deployed_Element;
930
931   --------------------
932   -- Get_Deployment --
933   --------------------
934
935   overriding function Get_Deployment
936    (Self : not null access constant UML_Port_Proxy)
937       return AMF.UML.Deployments.Collections.Set_Of_UML_Deployment is
938   begin
939      return
940        AMF.UML.Deployments.Collections.Wrap
941         (AMF.Internals.Element_Collections.Wrap
942           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Deployment
943             (Self.Element)));
944   end Get_Deployment;
945
946   ------------------------------
947   -- Get_Featuring_Classifier --
948   ------------------------------
949
950   overriding function Get_Featuring_Classifier
951    (Self : not null access constant UML_Port_Proxy)
952       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier is
953   begin
954      return
955        AMF.UML.Classifiers.Collections.Wrap
956         (AMF.Internals.Element_Collections.Wrap
957           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Featuring_Classifier
958             (Self.Element)));
959   end Get_Featuring_Classifier;
960
961   -------------------
962   -- Get_Is_Static --
963   -------------------
964
965   overriding function Get_Is_Static
966    (Self : not null access constant UML_Port_Proxy)
967       return Boolean is
968   begin
969      return
970        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Static
971         (Self.Element);
972   end Get_Is_Static;
973
974   -------------------
975   -- Set_Is_Static --
976   -------------------
977
978   overriding procedure Set_Is_Static
979    (Self : not null access UML_Port_Proxy;
980     To   : Boolean) is
981   begin
982      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Static
983       (Self.Element, To);
984   end Set_Is_Static;
985
986   -----------------
987   -- Get_Is_Leaf --
988   -----------------
989
990   overriding function Get_Is_Leaf
991    (Self : not null access constant UML_Port_Proxy)
992       return Boolean is
993   begin
994      return
995        AMF.Internals.Tables.UML_Attributes.Internal_Get_Is_Leaf
996         (Self.Element);
997   end Get_Is_Leaf;
998
999   -----------------
1000   -- Set_Is_Leaf --
1001   -----------------
1002
1003   overriding procedure Set_Is_Leaf
1004    (Self : not null access UML_Port_Proxy;
1005     To   : Boolean) is
1006   begin
1007      AMF.Internals.Tables.UML_Attributes.Internal_Set_Is_Leaf
1008       (Self.Element, To);
1009   end Set_Is_Leaf;
1010
1011   ---------------------------
1012   -- Get_Redefined_Element --
1013   ---------------------------
1014
1015   overriding function Get_Redefined_Element
1016    (Self : not null access constant UML_Port_Proxy)
1017       return AMF.UML.Redefinable_Elements.Collections.Set_Of_UML_Redefinable_Element is
1018   begin
1019      return
1020        AMF.UML.Redefinable_Elements.Collections.Wrap
1021         (AMF.Internals.Element_Collections.Wrap
1022           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Redefined_Element
1023             (Self.Element)));
1024   end Get_Redefined_Element;
1025
1026   ------------------------------
1027   -- Get_Redefinition_Context --
1028   ------------------------------
1029
1030   overriding function Get_Redefinition_Context
1031    (Self : not null access constant UML_Port_Proxy)
1032       return AMF.UML.Classifiers.Collections.Set_Of_UML_Classifier is
1033   begin
1034      return
1035        AMF.UML.Classifiers.Collections.Wrap
1036         (AMF.Internals.Element_Collections.Wrap
1037           (AMF.Internals.Tables.UML_Attributes.Internal_Get_Redefinition_Context
1038             (Self.Element)));
1039   end Get_Redefinition_Context;
1040
1041   --------------
1042   -- Provided --
1043   --------------
1044
1045   overriding function Provided
1046    (Self : not null access constant UML_Port_Proxy)
1047       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is
1048   begin
1049      --  Generated stub: replace with real body!
1050      pragma Compile_Time_Warning (Standard.True, "Provided unimplemented");
1051      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Provided";
1052      return Provided (Self);
1053   end Provided;
1054
1055   --------------
1056   -- Required --
1057   --------------
1058
1059   overriding function Required
1060    (Self : not null access constant UML_Port_Proxy)
1061       return AMF.UML.Interfaces.Collections.Set_Of_UML_Interface is
1062   begin
1063      --  Generated stub: replace with real body!
1064      pragma Compile_Time_Warning (Standard.True, "Required unimplemented");
1065      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Required";
1066      return Required (Self);
1067   end Required;
1068
1069   -------------
1070   -- Default --
1071   -------------
1072
1073   overriding function Default
1074    (Self : not null access constant UML_Port_Proxy)
1075       return AMF.Optional_String is
1076   begin
1077      --  Generated stub: replace with real body!
1078      pragma Compile_Time_Warning (Standard.True, "Default unimplemented");
1079      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Default";
1080      return Default (Self);
1081   end Default;
1082
1083   ------------------
1084   -- Is_Attribute --
1085   ------------------
1086
1087   overriding function Is_Attribute
1088    (Self : not null access constant UML_Port_Proxy;
1089     P : AMF.UML.Properties.UML_Property_Access)
1090       return Boolean is
1091   begin
1092      --  Generated stub: replace with real body!
1093      pragma Compile_Time_Warning (Standard.True, "Is_Attribute unimplemented");
1094      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Attribute";
1095      return Is_Attribute (Self, P);
1096   end Is_Attribute;
1097
1098   ------------------------
1099   -- Is_Compatible_With --
1100   ------------------------
1101
1102   overriding function Is_Compatible_With
1103    (Self : not null access constant UML_Port_Proxy;
1104     P : AMF.UML.Parameterable_Elements.UML_Parameterable_Element_Access)
1105       return Boolean is
1106   begin
1107      --  Generated stub: replace with real body!
1108      pragma Compile_Time_Warning (Standard.True, "Is_Compatible_With unimplemented");
1109      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Compatible_With";
1110      return Is_Compatible_With (Self, P);
1111   end Is_Compatible_With;
1112
1113   ------------------
1114   -- Is_Composite --
1115   ------------------
1116
1117   overriding function Is_Composite
1118    (Self : not null access constant UML_Port_Proxy)
1119       return Boolean is
1120   begin
1121      --  Generated stub: replace with real body!
1122      pragma Compile_Time_Warning (Standard.True, "Is_Composite unimplemented");
1123      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Composite";
1124      return Is_Composite (Self);
1125   end Is_Composite;
1126
1127   ------------------------
1128   -- Is_Consistent_With --
1129   ------------------------
1130
1131   overriding function Is_Consistent_With
1132    (Self : not null access constant UML_Port_Proxy;
1133     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
1134       return Boolean is
1135   begin
1136      --  Generated stub: replace with real body!
1137      pragma Compile_Time_Warning (Standard.True, "Is_Consistent_With unimplemented");
1138      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Consistent_With";
1139      return Is_Consistent_With (Self, Redefinee);
1140   end Is_Consistent_With;
1141
1142   ------------------
1143   -- Is_Navigable --
1144   ------------------
1145
1146   overriding function Is_Navigable
1147    (Self : not null access constant UML_Port_Proxy)
1148       return Boolean is
1149   begin
1150      --  Generated stub: replace with real body!
1151      pragma Compile_Time_Warning (Standard.True, "Is_Navigable unimplemented");
1152      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Navigable";
1153      return Is_Navigable (Self);
1154   end Is_Navigable;
1155
1156   --------------
1157   -- Opposite --
1158   --------------
1159
1160   overriding function Opposite
1161    (Self : not null access constant UML_Port_Proxy)
1162       return AMF.UML.Properties.UML_Property_Access is
1163   begin
1164      --  Generated stub: replace with real body!
1165      pragma Compile_Time_Warning (Standard.True, "Opposite unimplemented");
1166      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Opposite";
1167      return Opposite (Self);
1168   end Opposite;
1169
1170   ------------------------
1171   -- Subsetting_Context --
1172   ------------------------
1173
1174   overriding function Subsetting_Context
1175    (Self : not null access constant UML_Port_Proxy)
1176       return AMF.UML.Types.Collections.Set_Of_UML_Type is
1177   begin
1178      --  Generated stub: replace with real body!
1179      pragma Compile_Time_Warning (Standard.True, "Subsetting_Context unimplemented");
1180      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Subsetting_Context";
1181      return Subsetting_Context (Self);
1182   end Subsetting_Context;
1183
1184   ----------
1185   -- Ends --
1186   ----------
1187
1188   overriding function Ends
1189    (Self : not null access constant UML_Port_Proxy)
1190       return AMF.UML.Connector_Ends.Collections.Set_Of_UML_Connector_End is
1191   begin
1192      --  Generated stub: replace with real body!
1193      pragma Compile_Time_Warning (Standard.True, "Ends unimplemented");
1194      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Ends";
1195      return Ends (Self);
1196   end Ends;
1197
1198   -------------------------
1199   -- All_Owning_Packages --
1200   -------------------------
1201
1202   overriding function All_Owning_Packages
1203    (Self : not null access constant UML_Port_Proxy)
1204       return AMF.UML.Packages.Collections.Set_Of_UML_Package is
1205   begin
1206      --  Generated stub: replace with real body!
1207      pragma Compile_Time_Warning (Standard.True, "All_Owning_Packages unimplemented");
1208      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.All_Owning_Packages";
1209      return All_Owning_Packages (Self);
1210   end All_Owning_Packages;
1211
1212   -----------------------------
1213   -- Is_Distinguishable_From --
1214   -----------------------------
1215
1216   overriding function Is_Distinguishable_From
1217    (Self : not null access constant UML_Port_Proxy;
1218     N : AMF.UML.Named_Elements.UML_Named_Element_Access;
1219     Ns : AMF.UML.Namespaces.UML_Namespace_Access)
1220       return Boolean is
1221   begin
1222      --  Generated stub: replace with real body!
1223      pragma Compile_Time_Warning (Standard.True, "Is_Distinguishable_From unimplemented");
1224      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Distinguishable_From";
1225      return Is_Distinguishable_From (Self, N, Ns);
1226   end Is_Distinguishable_From;
1227
1228   ---------------
1229   -- Namespace --
1230   ---------------
1231
1232   overriding function Namespace
1233    (Self : not null access constant UML_Port_Proxy)
1234       return AMF.UML.Namespaces.UML_Namespace_Access is
1235   begin
1236      --  Generated stub: replace with real body!
1237      pragma Compile_Time_Warning (Standard.True, "Namespace unimplemented");
1238      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Namespace";
1239      return Namespace (Self);
1240   end Namespace;
1241
1242   ---------------------------
1243   -- Is_Template_Parameter --
1244   ---------------------------
1245
1246   overriding function Is_Template_Parameter
1247    (Self : not null access constant UML_Port_Proxy)
1248       return Boolean is
1249   begin
1250      --  Generated stub: replace with real body!
1251      pragma Compile_Time_Warning (Standard.True, "Is_Template_Parameter unimplemented");
1252      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Template_Parameter";
1253      return Is_Template_Parameter (Self);
1254   end Is_Template_Parameter;
1255
1256   ----------------------
1257   -- Deployed_Element --
1258   ----------------------
1259
1260   overriding function Deployed_Element
1261    (Self : not null access constant UML_Port_Proxy)
1262       return AMF.UML.Packageable_Elements.Collections.Set_Of_UML_Packageable_Element is
1263   begin
1264      --  Generated stub: replace with real body!
1265      pragma Compile_Time_Warning (Standard.True, "Deployed_Element unimplemented");
1266      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Deployed_Element";
1267      return Deployed_Element (Self);
1268   end Deployed_Element;
1269
1270   ---------------------
1271   -- Compatible_With --
1272   ---------------------
1273
1274   overriding function Compatible_With
1275    (Self : not null access constant UML_Port_Proxy;
1276     Other : AMF.UML.Multiplicity_Elements.UML_Multiplicity_Element_Access)
1277       return Boolean is
1278   begin
1279      --  Generated stub: replace with real body!
1280      pragma Compile_Time_Warning (Standard.True, "Compatible_With unimplemented");
1281      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Compatible_With";
1282      return Compatible_With (Self, Other);
1283   end Compatible_With;
1284
1285   --------------------------
1286   -- Includes_Cardinality --
1287   --------------------------
1288
1289   overriding function Includes_Cardinality
1290    (Self : not null access constant UML_Port_Proxy;
1291     C : Integer)
1292       return Boolean is
1293   begin
1294      --  Generated stub: replace with real body!
1295      pragma Compile_Time_Warning (Standard.True, "Includes_Cardinality unimplemented");
1296      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Includes_Cardinality";
1297      return Includes_Cardinality (Self, C);
1298   end Includes_Cardinality;
1299
1300   ---------------------------
1301   -- Includes_Multiplicity --
1302   ---------------------------
1303
1304   overriding function Includes_Multiplicity
1305    (Self : not null access constant UML_Port_Proxy;
1306     M : AMF.UML.Multiplicity_Elements.UML_Multiplicity_Element_Access)
1307       return Boolean is
1308   begin
1309      --  Generated stub: replace with real body!
1310      pragma Compile_Time_Warning (Standard.True, "Includes_Multiplicity unimplemented");
1311      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Includes_Multiplicity";
1312      return Includes_Multiplicity (Self, M);
1313   end Includes_Multiplicity;
1314
1315   ---------
1316   -- Iss --
1317   ---------
1318
1319   overriding function Iss
1320    (Self : not null access constant UML_Port_Proxy;
1321     Lowerbound : Integer;
1322     Upperbound : Integer)
1323       return Boolean is
1324   begin
1325      --  Generated stub: replace with real body!
1326      pragma Compile_Time_Warning (Standard.True, "Iss unimplemented");
1327      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Iss";
1328      return Iss (Self, Lowerbound, Upperbound);
1329   end Iss;
1330
1331   -----------------------------------
1332   -- Is_Redefinition_Context_Valid --
1333   -----------------------------------
1334
1335   overriding function Is_Redefinition_Context_Valid
1336    (Self : not null access constant UML_Port_Proxy;
1337     Redefined : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
1338       return Boolean is
1339   begin
1340      --  Generated stub: replace with real body!
1341      pragma Compile_Time_Warning (Standard.True, "Is_Redefinition_Context_Valid unimplemented");
1342      raise Program_Error with "Unimplemented procedure UML_Port_Proxy.Is_Redefinition_Context_Valid";
1343      return Is_Redefinition_Context_Valid (Self, Redefined);
1344   end Is_Redefinition_Context_Valid;
1345
1346end AMF.Internals.UML_Ports;
1347