/*************************************************************************************************
** Project:     FSMGenerator
** Package:     FSMGenerator
** Module:      FSMGenerator::db
** File:        FSMTransition.cpp
** Date:        2002.08.01
** Author:      Pavel Bekkerman (chpavel@tx.technion.ac.il)
** Copyright:   Copyright (C) 2002 Pavel Bekkerman
** License:
**              This program is free software; you can redistribute it and/or
**              modify it under the terms of the GNU General Public License as
**              published by the Free Software Foundation; either version 2 of
**              the License, or (at your option) any later version.
**
**              This program is distributed in the hope that it will be useful,
**              but WITHOUT ANY WARRANTY; without even the implied warranty of
**              MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**              GNU General Public License for more details.
**
**              You should have received a copy of the GNU General Public License
**              along with this program; if not, write to the Free Software
**              Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
**
** Contact:     Pavel Bekkerman (chpavel@tx.technion.ac.il)
*************************************************************************************************/

#include "FSMTransition.h"

//********************************************************* Transition Functions

//******************** Constructor

FSMGenerator::Transition::Transition(const string& strName, ID id, INDEX indFrom, INDEX indEvent,
							INDEX indTo,INDEX indCallback)
	 : m_strName(strName), m_id(id), m_indFromState(indFrom), m_indWithEvent(indEvent),
	   m_indToState(indTo), m_indCallback(indCallback)
{ 
}

//******************** Destructor

FSMGenerator::Transition::~Transition()
{
}

//******************** Name

const string&
FSMGenerator::Transition::Name()const 
{
	return m_strName;
}

//******************** GetID

ID
FSMGenerator::Transition::GetID()const 
{
	return m_id;
}

//******************** FromState
INDEX
FSMGenerator::Transition::FromState()const 
{
	return m_indFromState;
}

//******************** WithEvent
INDEX
FSMGenerator::Transition::WithEvent()const 
{
	return m_indWithEvent;
}

//******************** ToState
INDEX
FSMGenerator::Transition::ToState()const 
{
	return m_indToState;
}

//******************** Callback
INDEX
FSMGenerator::Transition::Callback()const 
{
	return m_indCallback;
}
			
//******************** SetCallback

void
FSMGenerator::Transition::SetCallback(INDEX indCallback)
{
	if(m_indCallback != NULL_INDEX)
		throw string("Error: Callback was already attached to '"+m_strName+"' transition.");

	m_indCallback = indCallback;
}

