1------------------------------------------------------------------------------
2--                                                                          --
3--                            Matreshka Project                             --
4--                                                                          --
5--                          Ada Modeling Framework                          --
6--                                                                          --
7--                        Runtime Library Component                         --
8--                                                                          --
9------------------------------------------------------------------------------
10--                                                                          --
11-- Copyright © 2011-2012, Vadim Godunko <vgodunko@gmail.com>                --
12-- All rights reserved.                                                     --
13--                                                                          --
14-- Redistribution and use in source and binary forms, with or without       --
15-- modification, are permitted provided that the following conditions       --
16-- are met:                                                                 --
17--                                                                          --
18--  * Redistributions of source code must retain the above copyright        --
19--    notice, this list of conditions and the following disclaimer.         --
20--                                                                          --
21--  * Redistributions in binary form must reproduce the above copyright     --
22--    notice, this list of conditions and the following disclaimer in the   --
23--    documentation and/or other materials provided with the distribution.  --
24--                                                                          --
25--  * Neither the name of the Vadim Godunko, IE nor the names of its        --
26--    contributors may be used to endorse or promote products derived from  --
27--    this software without specific prior written permission.              --
28--                                                                          --
29-- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS      --
30-- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT        --
31-- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR    --
32-- A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT     --
33-- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,   --
34-- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED --
35-- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR   --
36-- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF   --
37-- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING     --
38-- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS       --
39-- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.             --
40--                                                                          --
41------------------------------------------------------------------------------
42--  $Revision: 2714 $ $Date: 2012-03-24 10:29:08 +0400 (Sat, 24 Mar 2012) $
43------------------------------------------------------------------------------
44--  This file is generated, don't edit it.
45------------------------------------------------------------------------------
46--  State machines can be used to express the behavior of part of a system.
47--  Behavior is modeled as a traversal of a graph of state nodes
48--  interconnected by one or more joined transition arcs that are triggered by
49--  the dispatching of series of (event) occurrences. During this traversal,
50--  the state machine executes a series of activities associated with various
51--  elements of the state machine.
52------------------------------------------------------------------------------
53with AMF.UML.Behaviors;
54limited with AMF.UML.Namespaces;
55limited with AMF.UML.Pseudostates.Collections;
56limited with AMF.UML.Redefinable_Elements;
57limited with AMF.UML.Regions.Collections;
58limited with AMF.UML.State_Machines.Collections;
59limited with AMF.UML.States.Collections;
60
61package AMF.UML.State_Machines is
62
63   pragma Preelaborate;
64
65   type UML_State_Machine is limited interface
66     and AMF.UML.Behaviors.UML_Behavior;
67
68   type UML_State_Machine_Access is
69     access all UML_State_Machine'Class;
70   for UML_State_Machine_Access'Storage_Size use 0;
71
72   not overriding function Get_Connection_Point
73    (Self : not null access constant UML_State_Machine)
74       return AMF.UML.Pseudostates.Collections.Set_Of_UML_Pseudostate is abstract;
75   --  Getter of StateMachine::connectionPoint.
76   --
77   --  The connection points defined for this state machine. They represent
78   --  the interface of the state machine when used as part of submachine
79   --  state.
80
81   not overriding function Get_Extended_State_Machine
82    (Self : not null access constant UML_State_Machine)
83       return AMF.UML.State_Machines.Collections.Set_Of_UML_State_Machine is abstract;
84   --  Getter of StateMachine::extendedStateMachine.
85   --
86   --  The state machines of which this is an extension.
87
88   not overriding function Get_Region
89    (Self : not null access constant UML_State_Machine)
90       return AMF.UML.Regions.Collections.Set_Of_UML_Region is abstract;
91   --  Getter of StateMachine::region.
92   --
93   --  The regions owned directly by the state machine.
94
95   not overriding function Get_Submachine_State
96    (Self : not null access constant UML_State_Machine)
97       return AMF.UML.States.Collections.Set_Of_UML_State is abstract;
98   --  Getter of StateMachine::submachineState.
99   --
100   --  References the submachine(s) in case of a submachine state. Multiple
101   --  machines are referenced in case of a concurrent state.
102
103   not overriding function LCA
104    (Self : not null access constant UML_State_Machine;
105     S1 : AMF.UML.States.UML_State_Access;
106     S2 : AMF.UML.States.UML_State_Access)
107       return AMF.UML.Namespaces.UML_Namespace_Access is abstract;
108   --  Operation StateMachine::LCA.
109   --
110   --  The operation LCA(s1,s2) returns an orthogonal state or region which is
111   --  the least common ancestor of states s1 and s2, based on the
112   --  statemachine containment hierarchy.
113
114   not overriding function Ancestor
115    (Self : not null access constant UML_State_Machine;
116     S1 : AMF.UML.States.UML_State_Access;
117     S2 : AMF.UML.States.UML_State_Access)
118       return Boolean is abstract;
119   --  Operation StateMachine::ancestor.
120   --
121   --  The query ancestor(s1, s2) checks whether s1 is an ancestor state of
122   --  state s2.
123
124   overriding function Is_Consistent_With
125    (Self : not null access constant UML_State_Machine;
126     Redefinee : AMF.UML.Redefinable_Elements.UML_Redefinable_Element_Access)
127       return Boolean is abstract;
128   --  Operation StateMachine::isConsistentWith.
129   --
130   --  The query isConsistentWith() specifies that a redefining state machine
131   --  is consistent with a redefined state machine provided that the
132   --  redefining state machine is an extension of the redefined state
133   --  machine: Regions are inherited and regions can be added, inherited
134   --  regions can be redefined. In case of multiple redefining state
135   --  machines, extension implies that the redefining state machine gets
136   --  orthogonal regions for each of the redefined state machines.
137
138   not overriding function Is_Redefinition_Context_Valid
139    (Self : not null access constant UML_State_Machine;
140     Redefined : AMF.UML.State_Machines.UML_State_Machine_Access)
141       return Boolean is abstract;
142   --  Operation StateMachine::isRedefinitionContextValid.
143   --
144   --  The query isRedefinitionContextValid() specifies whether the
145   --  redefinition contexts of a statemachine are properly related to the
146   --  redefinition contexts of the specified statemachine to allow this
147   --  element to redefine the other. The containing classifier of a
148   --  redefining statemachine must redefine the containing classifier of the
149   --  redefined statemachine.
150
151end AMF.UML.State_Machines;
152