// $Filename: C:\Software\Sfx3D\template\Modell.cpp $

// $Revision: 1.0 $

// $Date: Wed Feb 16 13:03:32 2000 $

// $Author: schneider $

// $Log3: C:\Software\Sfx3D\template\qvcs\Modell.dqq $

//  

//    Template Files

//  

//  Revision 1.0  by: schneider  Rev date: Wed Feb 16 13:31:58 2000

//    Initial revision.

//  

//  $Endlog$

//  



// Beispiel einer Datei der SIMFLEX/3D C++-Schnittstelle



// 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



// Konstanten f. Programme

const int myprog  = 103;



// Konstanten f. Bausteine

const int aBst    = 21;



int zaehler = 0;



// benutzerdefinierbare Baustein-Daten-Struktur (vormals Bausteinsignale)

class _impexp BstData : public UserData {

  public:

    BstData () : UserData () { };

    int meine_nr;

};



// Initialisierung der Baustein-Daten-Struktur

void _impexp init_aBst () {

  BstData *zData = new BstData ();

  zData->meine_nr = 1;

  setBstUserData (aBst, zData);

}





void _impexp prog_110 () {

  aufnehmen ();

  arbeiten ();

  zaehler++;

  if (zaehler == 3) {

    abgeben (5);

    zaehler = 0;

  }

  else abgeben ();

}



void _impexp prog_140 () {

  aufnehmen ();

  arbeiten ();

  abgeben (2);

}



// Event-Funktion des Bausteins aBst. Der Funktionsname ist beliebig und

// wird in der Funktion installEvent einem Ereignis zugeordnet.

// void _impexp ETaarbeiten_aBst () {

//  clog << "Hier ist Event ETaarbeiten auf " << This << endl;

//}



// Diese Funktion wird automatisch nach der Modellinitialisierung gestartet,

// sofern sie vorhanden ist.

// In diese Funktion muessen auch alle Events eingetragen werden, damit sie 

// Initialisiert werden koennen. Fehlende Events in dieser Funktion werden

// nicht aufgerufen.

void _impexp init_prog () {

//  init_aBst ();

//  installEvent (ETaarbeiten, aBst, "ETaarbeiten_aBst");

}



// Diese Funktion wird automatisch beim Simulatorabbruch gestartet,

// sofern sie vorhanden ist.

void _impexp exit_prog () {

}







