// Counter.h: interface for the CCounter class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_COUNTER_H__0C20D48D_E90E_4B32_B53C_2C91974411DB__INCLUDED_)
#define AFX_COUNTER_H__0C20D48D_E90E_4B32_B53C_2C91974411DB__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

namespace NLLOGIC
{
class CLogicCounter;
}

/**
* Classe CCounter : represent counters in .LOGIC files
*/
class CCounter  
{
public:
	CCounter( const CString &name = "");

	virtual ~CCounter();

	inline const CString &name() const { return m_sName; }
	inline const CString &way() const { return m_sWay; }
	inline const CString &mode() const { return m_sMode; }
	inline long upperLimit() const { return m_nUpperLimit; }
	inline long lowerLimit() const { return m_nLowerLimit; }

	inline void name( const CString &name) { m_sName = name; }
	inline void way( const CString &way) { m_sWay = way; }
	inline void mode( const CString &mode) { m_sMode = mode; }
	inline void lowerLimit( long min) { m_nLowerLimit = min; }
	inline void upperLimit( long max) { m_nUpperLimit = max; }

//attributes
public:
	/// counter name
	CString	m_sName;

	/// mode (shuttle/loop/stop_on_arrival)
	CString	m_sMode;

	/// way (up/down)
	CString	m_sWay;

	/// lower limit
	long	m_nLowerLimit;

	/// upper limit
	long	m_nUpperLimit;
};


/**
 * Set a CLogicCounter object from a CCounter
 */
void cCounterToCLogicCounter( CCounter& counter, NLLOGIC::CLogicCounter& logicCounter );


/**
 * Set a CCounter object from a CLogicCounter
 */
void cLogicCounterToCCounter( const NLLOGIC::CLogicCounter& logicCounter, CCounter& counter );



#endif // !defined(AFX_COUNTER_H__0C20D48D_E90E_4B32_B53C_2C91974411DB__INCLUDED_)