// $Source: /usr/local/SimSoft/Sfx3D/src/gts/gtsb18.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: Release-14 $
// State assigned to revision
// $State: Exp $
//
//
// $Log: gtsb18.h,v $
// Revision 1.2  2001/11/29 15:18:10  baum
// -Realzeitsteuerung eingebaut
// -Handsteuerung eingebaut
//

#ifndef _GTSB18_H
#define _GTSB18_H     1

#include "gtsglob.h"
#include "gtsbst.h"
#include "gtstpv.h"

class typBTPRegalverwalter : public typBTPBasis {
  public:
    typBTPRegalverwalter ();
    typBTPRegalverwalter (const typBTPRegalverwalter &copy);
    typBTPRegalverwalter (const typBTPRegalverwalter *zBTP);
    typBTPRegalverwalter (InputFile& fin);
    virtual ~typBTPRegalverwalter ();
    void BTPLesen         (InputFile& fin);
    void BTPSchreiben     (ostream& ostrm, int satznr);
    Ustring getBTPWerte   ();
    void setBTPWerte      (const typBTPRegalverwalter *zBTP);
    void setBTPWerte      (Ustring str);
    void VarianteErsetzen (BstVariante *zaufTGB);
    void BSPLesen         (InputFile& fin);
    void BSPSchreiben     (ostream& ostrm, int satznr);
    Ustring getBSPWerte   ();
    void setBSPWerte      (Ustring str);
  protected:
}; // typBTPRegalverwalter

class typBSTRegalverwalter : public typBaustein,
                                    typBSPVariante2, typPoolVerwaltung
{
  public:
    typBSTRegalverwalter (const typBSTRegalverwalter &copy, int nr);
    typBSTRegalverwalter (BstVariante *zaufTGB, int nr);
    typBSTRegalverwalter (InputFile& fin, int nr, int btyp, int vtyp);
    void mitPoolVerketten (typBaustein* zvon, int vonplatz, 
                           typBaustein* zmit, int mitplatz, int unterwinkel);
    void verkette         (int vonplatz, typBaustein* zmit, int mitplatz, int unterwinkel);
    void loeseVerkettungmitPool (typBaustein* zvon, typBaustein* zmit);
    void loeseVerkettung        (typBaustein* zmit);
    void InfoVerkettung ();
    void VarianteErsetzen  (BstVariante *zaufTGB);
    void BSPLesen (InputFile& fin);
    void BSPSchreiben (ostream& ostrm, int satznr);
    Ustring getBSPWerte   ();
    void setBSPWerte      (Ustring str);
    bool BPVLesen (InputFile& fin);
    void BPVSchreiben (ostream& ostrm, typBaustein* zbstein, int& satznr);
    void TFKErzeugenVonPoolZuPool     (typBaustein* zanfang, typBaustein* zende);
    void TFKErzeugenVonBausteinZuPool (typBaustein* zanfang, typBaustein* zende);
    void TFKErzeugenVonPoolZuBaustein (typBaustein* zanfang, typBaustein* zende);
    bool TFKSuchenVonPoolZuPool     (typBaustein* zanfang, typBaustein* zende);
    bool TFKSuchenVonBausteinZuPool (typBaustein* zanfang, typBaustein* zende);
    bool TFKSuchenVonPoolZuBaustein (typBaustein* zanfang, typBaustein* zende);
    void TFKZeigenVonPoolZuPool     (typBaustein* zanfang, typBaustein* zende);
    void TFKZeigenVonBausteinZuPool (typBaustein* zanfang, typBaustein* zende);
    void TFKZeigenVonPoolZuBaustein (typBaustein* zanfang, typBaustein* zende);
    Ustring getPoolListe ();
    Ustring getBetreuteListe ();
    bool inPoolListe      (int bstnr);
    bool inBetreuteListe  (int bstnr);
    void setPoolListe     (int anzahl, Ustring str);
    void setBetreuteListe (int anzahl, Ustring str);
    void BPVmitBausteinLoeschen (typBaustein* zbst);
    virtual ~typBSTRegalverwalter ();
  protected:
}; // typBSTRegalverwalter

#endif /* _GTSB18 */
