gdcmULTransitionTable.h
Go to the documentation of this file.
/*=========================================================================
*
* Copyright NumFOCUS
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0.txt
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*=========================================================================*/
#ifndef GDCMULTRANSITIONTABLE_H
#define GDCMULTRANSITIONTABLE_H
#include "gdcmNetworkStateID.h"
#include "gdcmNetworkEvents.h"
#include "gdcmULAction.h"
#include <cstdlib> // NULL
namespace gdcm {
class Subject;
namespace network{
class ULConnection;
class ULAction;
class ULEvent;
//The transition dictates the action that should be taken from the start state to the end state
struct Transition {
int mEnd;
ULAction* mAction;
Transition(){
mEnd = eStaDoesNotExist;
mAction = nullptr;
}
~Transition(){
if (mAction != nullptr){
delete mAction;
mAction = nullptr;
}
}
Transition(int inEndState, ULAction* inAction){
mEnd = inEndState;
mAction = inAction;
}
static Transition* MakeNew(int inEndState, ULAction* inAction){
return new Transition(inEndState, inAction);
}
};
//used to define a row in table 9-10 of 3.8 2009
//the transition table is events, then state,
//then the transition itself (which has the event
//and start state implied by their starting locations)
//don't need to store the event; that's implicitly defined in the Table itself by location
class TableRow{
public:
TableRow() {
for(int stateIndex = 0; stateIndex < cMaxStateID; ++stateIndex)
{
transitions[stateIndex] = nullptr;
}
}
~TableRow() {
for(int stateIndex = 0; stateIndex < cMaxStateID; ++stateIndex)
{
Transition *t = transitions[stateIndex];
delete t;
}
}
Transition *transitions[cMaxStateID];
//copy constructor for stl additions into the transition table below.
};
class ULTransitionTable
{
private:
TableRow mTable[cMaxEventID];
public:
ULTransitionTable();
void HandleEvent(Subject*s,ULEvent& inEvent, ULConnection& inConnection,
bool& outWaitingForEvent, EEventID& outRaisedEvent) const;
void PrintTable() const; //so that the table can be printed and verified against the DICOM standard
};
}
}
#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