GDCM 2.2.1

- Main Page
- Related Pages
- Namespaces
- Classes
- Files
- Examples

- File List
- File Members

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;
37 ULAction* mAction;
38 Transition(){
39 mEnd = eStaDoesNotExist;
40 mAction = NULL;
41 }
42 ~Transition(){
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:
64 Transition transitions[cMaxStateID];
65
66 //copy constructor for stl additions into the transition table below.
67 };
68
85 class ULTransitionTable
86 {
87 private:
88 TableRow mTable[cMaxEventID];
89 public:
90 ULTransitionTable();
91
92 void HandleEvent(Subject*s,ULEvent& inEvent, ULConnection& inConnection,
93 bool& outWaitingForEvent, EEventID& outRaisedEvent) const;
94
95 void PrintTable() const; //so that the table can be printed and verified against the DICOM standard
96 };
97 }
98 }
99 #endif // GDCMULTRANSITIONTABLE_H