GDCM: gdcmULTransitionTable.h Source File

GDCM 3.0.25

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;
37 ULAction* mAction;
38 Transition(){
39 mEnd = eStaDoesNotExist;
40 mAction = nullptr;
41 }
42 ~Transition(){
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:
64 TableRow() {
65 for(int stateIndex = 0; stateIndex < cMaxStateID; ++stateIndex)
66 {
67 transitions[stateIndex] = nullptr;
68 }
69 }
70 ~TableRow() {
71 for(int stateIndex = 0; stateIndex < cMaxStateID; ++stateIndex)
72 {
73 Transition *t = transitions[stateIndex];
74 delete t;
75 }
76 }
77 Transition *transitions[cMaxStateID];
78
79 //copy constructor for stl additions into the transition table below.
80 };
81
98 class ULTransitionTable
99{
100 private:
101 TableRow mTable[cMaxEventID];
102 public:
103 ULTransitionTable();
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
gdcm::Subject
Subject.
Definition gdcmSubject.h:29
gdcm::network::TableRow
Definition gdcmULTransitionTable.h:62
gdcm::network::TableRow::transitions
Transition * transitions[cMaxStateID]
Definition gdcmULTransitionTable.h:77
gdcm::network::TableRow::TableRow
TableRow()
Definition gdcmULTransitionTable.h:64
gdcm::network::TableRow::~TableRow
~TableRow()
Definition gdcmULTransitionTable.h:70
gdcm::network::ULAction
ULAction.
Definition gdcmULAction.h:62
gdcm::network::ULConnection
ULConnection.
Definition gdcmULConnection.h:58
gdcm::network::ULEvent
ULEvent.
Definition gdcmULEvent.h:37
gdcm::network::ULTransitionTable::PrintTable
void PrintTable() const
gdcm::network::ULTransitionTable::ULTransitionTable
ULTransitionTable()
gdcm::network::ULTransitionTable::HandleEvent
void HandleEvent(Subject *s, ULEvent &inEvent, ULConnection &inConnection, bool &outWaitingForEvent, EEventID &outRaisedEvent) const
gdcmNetworkEvents.h
gdcmNetworkStateID.h
gdcmULAction.h
gdcm::network
Definition gdcmAAbortPDU.h:24
gdcm::network::cMaxStateID
const int cMaxStateID
Definition gdcmNetworkStateID.h:49
gdcm::network::eStaDoesNotExist
@ eStaDoesNotExist
Definition gdcmNetworkStateID.h:33
gdcm::network::cMaxEventID
const int cMaxEventID
Definition gdcmNetworkEvents.h:56
gdcm::network::EEventID
EEventID
Definition gdcmNetworkEvents.h:33
gdcm
Definition gdcmASN1.h:21
gdcm::network::Transition
Definition gdcmULTransitionTable.h:35
gdcm::network::Transition::MakeNew
static Transition * MakeNew(int inEndState, ULAction *inAction)
Definition gdcmULTransitionTable.h:52
gdcm::network::Transition::mAction
ULAction * mAction
Definition gdcmULTransitionTable.h:37
gdcm::network::Transition::Transition
Transition(int inEndState, ULAction *inAction)
Definition gdcmULTransitionTable.h:48
gdcm::network::Transition::Transition
Transition()
Definition gdcmULTransitionTable.h:38
gdcm::network::Transition::~Transition
~Transition()
Definition gdcmULTransitionTable.h:42
gdcm::network::Transition::mEnd
int mEnd
Definition gdcmULTransitionTable.h:36