GDCM  2.2.6
gdcmULTransitionTable.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef GDCMULTRANSITIONTABLE_H
19 #define GDCMULTRANSITIONTABLE_H
20 
21 #include "gdcmNetworkStateID.h"
22 #include "gdcmNetworkEvents.h"
23 #include "gdcmULAction.h"
24 
25 #include <cstdlib> // NULL
26 
27 namespace gdcm {
28 class Subject;
29  namespace network{
30 class ULConnection;
31 class ULAction;
32 class ULEvent;
33 
34  //The transition dictates the action that should be taken from the start state to the end state
35  struct Transition {
36  int mEnd;
40  mAction = NULL;
41  }
43  if (mAction != NULL){
44  delete mAction;
45  mAction = NULL;
46  }
47  }
48  Transition(int inEndState, ULAction* inAction){
49  mEnd = inEndState;
50  mAction = inAction;
51  }
52  static Transition* MakeNew(int inEndState, ULAction* inAction){
53  return new Transition(inEndState, inAction);
54  }
55  };
56 
57  //used to define a row in table 9-10 of 3.8 2009
58  //the transition table is events, then state,
59  //then the transition itself (which has the event
60  //and start state implied by their starting locations)
61  //don't need to store the event; that's implicitly defined in the Table itself by location
62  class TableRow{
63  public:
65  for(int stateIndex = 0; stateIndex < cMaxStateID; ++stateIndex)
66  {
67  transitions[stateIndex] = NULL;
68  }
69  }
71  for(int stateIndex = 0; stateIndex < cMaxStateID; ++stateIndex)
72  {
73  Transition *t = transitions[stateIndex];
74  delete t;
75  }
76  }
78 
79  //copy constructor for stl additions into the transition table below.
80  };
81 
99 {
100  private:
101  TableRow mTable[cMaxEventID];
102  public:
104 
105  void HandleEvent(Subject*s,ULEvent& inEvent, ULConnection& inConnection,
106  bool& outWaitingForEvent, EEventID& outRaisedEvent) const;
107 
108  void PrintTable() const; //so that the table can be printed and verified against the DICOM standard
109  };
110  }
111 }
112 #endif // GDCMULTRANSITIONTABLE_H
ULConnection This is the class that contains the socket to another machine, and passes data through i...
Definition: gdcmULConnection.h:57
ULAction * mAction
Definition: gdcmULTransitionTable.h:37
Definition: gdcmULTransitionTable.h:62
const int cMaxEventID
Definition: gdcmNetworkEvents.h:56
int mEnd
Definition: gdcmULTransitionTable.h:36
~Transition()
Definition: gdcmULTransitionTable.h:42
const int cMaxStateID
Definition: gdcmNetworkStateID.h:49
TableRow()
Definition: gdcmULTransitionTable.h:64
Subject.
Definition: gdcmSubject.h:28
ULEvent base class for network events.
Definition: gdcmULEvent.h:37
static Transition * MakeNew(int inEndState, ULAction *inAction)
Definition: gdcmULTransitionTable.h:52
~TableRow()
Definition: gdcmULTransitionTable.h:70
ULTransitionTable The transition table of all the ULEvents, new ULActions, and ULStates.
Definition: gdcmULTransitionTable.h:98
Transition * transitions[cMaxStateID]
Definition: gdcmULTransitionTable.h:77
Definition: gdcmULTransitionTable.h:35
EEventID
Definition: gdcmNetworkEvents.h:33
Transition()
Definition: gdcmULTransitionTable.h:38
Definition: gdcmNetworkStateID.h:33
Transition(int inEndState, ULAction *inAction)
Definition: gdcmULTransitionTable.h:48
ULAction A ULConnection in a given ULState can perform certain ULActions. This base class provides th...
Definition: gdcmULAction.h:62
void HandleEvent(Subject *s, ULEvent &inEvent, ULConnection &inConnection, bool &outWaitingForEvent, EEventID &outRaisedEvent) const

Generated on Sat Dec 21 2013 05:56:18 for GDCM by doxygen 1.8.5
SourceForge.net Logo