// $Source: /usr/local/SimSoft/Sfx3D/src/gsl/route.h,v $
// $Revision: 1.2 $
// $Author: baum $
// $Date: 2001/11/29 15:18:10 $
//
// Login name of the user who locked the revision
// $Locker:  $
// Tag name used to checkout the file
// $Name:  $
// State assigned to revision
// $State: Exp $
//
//
// $Log: route.h,v $
// Revision 1.2  2001/11/29 15:18:10  baum
// -Realzeitsteuerung eingebaut
// -Handsteuerung eingebaut
//

#ifndef _ROUTE_H
#define _ROUTE_H	1

#include "Messung.h"

#include "Token.h"
#include "List.h"

#include "transp.h"

#ifdef _ROUTE_CPP
#  undef _impexp
#  define _impexp __declspec(dllexport)
#elif defined BUILD_MAIN_DLL
#  undef _impexp
#  define _impexp 
#else
#  undef _impexp
#  define _impexp __declspec(dllimport)
#endif

#if defined __GNUC__ || defined __hpux
#  undef _impexp
#  define _impexp
#endif

//-----------------------------------------------------
//   class typTransportRoute
//-----------------------------------------------------

class _impexp typTransportRoute {
  public :
    typTransportRoute (unsigned n);
    virtual ~typTransportRoute ();

    unsigned Nummer () const;
    unsigned TempEin  () const;
    unsigned TempAus  () const;

    typBaustein* nextBaustein (typBaustein* zS) const;
    const List<typBaustein>& Stationen () const;

    Register* DlzRegister    () const;
    void      setDlzRegister (Register *newReg);

    void startBDE ();
    void stopBDE  (typTransportEinheit *zTE);

    void     lesen             (InputFile& file);
    ostream& schreiben         (ostream& ostrm) const;
    ostream& schreibeZustand   (ostream& ostrm) const;
    ostream& schreibeProtokoll (ostream& ostrm) const;

  private:
    unsigned ObjNummer;
    unsigned ObjTempEin;
    unsigned ObjTempAus;
    List<typBaustein> ObjStationen;
    Register *ObjDlzRegister;

}; // typTransportRoute

#endif /* _ROUTE_H */
