GDCM
2.2.4
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
Source
MessageExchangeDefinition
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
TableRow
() {
65
for
(
int
stateIndex = 0; stateIndex <
cMaxStateID
; ++stateIndex)
66
{
67
transitions
[stateIndex] = NULL;
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
Generated on Mon Sep 9 2013 14:11:46 for GDCM by
1.8.4