// $Source: /usr/local/SimSoft/Sfx3D/src/gsl/quelle.h,v $
// $Revision: 1.2 $
// $Author: baum $
// $Date: 2001/11/29 15:18:09 $
//
// 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: quelle.h,v $
// Revision 1.2  2001/11/29 15:18:09  baum
// -Realzeitsteuerung eingebaut
// -Handsteuerung eingebaut
//

#ifndef _QUELLE_H
#define _QUELLE_H     1

#include "bestell.h"
#include "baustein.h"
#include "maschine.h"

#ifdef _QUELLE_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

//-----------------------------------------------------
//   Klasse typQuelle
//-----------------------------------------------------

class _impexp typQuelle : public typPrgBaustein {
  public :
    typQuelle (unsigned n, unsigned b);
    virtual ~typQuelle ();

    virtual void a_aufnehmen ();
    virtual void e_aufnehmen ();
    virtual void e_arbeiten  ();

    virtual unsigned AnzahlArbeitsliste () const;
    virtual bool hasKapazitaet    (typTransportEinheit*) const;
    virtual typPlatz* waehlePlatz (typTransportEinheit*);
    virtual Vec3D UebernahmePos (const typBaustein& von)  const;
    virtual Vec3D UebergabePos  (const typBaustein& nach) const;

    virtual void ArbBestellung (unsigned idnr, unsigned istvorg, unsigned sollvorg, unsigned wieoft);
    virtual void ArtBestellung (unsigned idnr, unsigned istvorg, unsigned sollvorg, unsigned wieoft);

    virtual bool loescheArbBestellung (unsigned was, unsigned istvorg);
    virtual bool loescheArtBestellung (unsigned was, unsigned istvorg);

  private:
    virtual void individuellAktivieren (typBaustein* vonWem);
    typMeldung*  findeAusfuehrbareMeldung ();
    bool         isAvisOk (typTransportEinheit* zTE) const;

    void erzeugeBestellTeil   (typMeldung* zM);
    unsigned findeSollVorgang (typTransportEinheit *zTE);

    List<class QuellenBestellzettel> ObjArbeitsliste;
}; // typQuelle

#endif
