// Modellname: zug10

// Die Makrodefinition '_impexp' dient zur Exportierung
// der Funktionen, Klassen und Variablen innerhalb der Library, 
// wird aber eigentlich nur fuer Windows benoetigt :-(

#ifdef WIN32
  #undef _impexp
  #define _impexp __declspec(dllexport)
#else
  #undef _impexp
  #define _impexp
#endif

#include <stdio.h>
#include "sfxprg.h"     // enthaelt die Funktionen der C-Schnittstelle

class BstBeziehungen : public UserData {
public:
   BstBeziehungen() : UserData() {};
   int Puffer;
   int Lieferant;
};

void initBstBeziehungen(int bstNr, int puf, int lief){
  BstBeziehungen *zBez = new BstBeziehungen();
  zBez->Puffer         = puf;  
  zBez->Lieferant      = lief;
  setBstUserData(bstNr, zBez);
}

void _impexp init_prog () {
  
  initBstBeziehungen (3, 9, 1);
  bestelleArtikel (10, 1);
  
  initBstBeziehungen (5, 10, 9);
  bestelleArtikel (10, 9);

  initBstBeziehungen (7, 11, 10);
  bestelleArtikel (10, 10);
}

void _impexp prog_100 () {
  BstBeziehungen *zBez = (BstBeziehungen *)BstUserData (This);
  aufnehmen ();
  if (Belegung (zBez->Puffer) < 2)
      bestelleArbeitsplan (10, zBez->Lieferant, AnzDirAvisSoll (This));
  arbeiten ();
  abgeben ();
}

void _impexp exit_prog () {
}