GDCM 3.0.24
gdcmULTransitionTable.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
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
27namespace gdcm {
28class Subject;
29 namespace network{
30class ULConnection;
31class ULAction;
32class 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 = nullptr;
41 }
43 if (mAction != nullptr){
44 delete mAction;
45 mAction = nullptr;
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] = nullptr;
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
Subject.
Definition gdcmSubject.h:29
Definition gdcmULTransitionTable.h:62
Transition * transitions[cMaxStateID]
Definition gdcmULTransitionTable.h:77
TableRow()
Definition gdcmULTransitionTable.h:64
~TableRow()
Definition gdcmULTransitionTable.h:70
ULAction.
Definition gdcmULAction.h:62
ULConnection.
Definition gdcmULConnection.h:58
ULEvent.
Definition gdcmULEvent.h:37
ULTransitionTable The transition table of all the ULEvents, new ULActions, and ULStates.
Definition gdcmULTransitionTable.h:99
void HandleEvent(Subject *s, ULEvent &inEvent, ULConnection &inConnection, bool &outWaitingForEvent, EEventID &outRaisedEvent) const
const int cMaxStateID
Definition gdcmNetworkStateID.h:49
@ eStaDoesNotExist
Definition gdcmNetworkStateID.h:33
const int cMaxEventID
Definition gdcmNetworkEvents.h:56
EEventID
Definition gdcmNetworkEvents.h:33
Definition gdcmASN1.h:21
Definition gdcmULTransitionTable.h:35
static Transition * MakeNew(int inEndState, ULAction *inAction)
Definition gdcmULTransitionTable.h:52
ULAction * mAction
Definition gdcmULTransitionTable.h:37
Transition(int inEndState, ULAction *inAction)
Definition gdcmULTransitionTable.h:48
Transition()
Definition gdcmULTransitionTable.h:38
~Transition()
Definition gdcmULTransitionTable.h:42
int mEnd
Definition gdcmULTransitionTable.h:36