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

#ifndef _GTSTPV_H
#define _GTSTPV_H     1

#include "List.h"

extern class typBstZeiger  *tpv1dummy;

class typPoolVerwaltung {
 public:
    typPoolVerwaltung  () : InhaltsListe(), BetreuteListe() { };
    typPoolVerwaltung  (const typPoolVerwaltung &copy) { };
    bool BPVLesen (InputFile& fin, int btyp);
    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);
    void BPVmitBausteinLoeschen       (typBaustein* zbstein);
    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 mitPoolVerketten (typBaustein* zvon, int vonplatz, 
                           typBaustein* zmit, int mitplatz, int unterwinkel);
    void vonPoolVerketten (typBaustein* zvon, int vonplatz, 
                           typBaustein* zmit, int mitplatz, int unterwinkel);
    void loeseVerkettungmitPool (typBaustein* zvon, typBaustein* zmit);
    void loeseVerkettungvonPool (typBaustein* zvon, typBaustein* zmit);
    void InfoPoolVerkettung (typBaustein* zbst);
   ~typPoolVerwaltung ();
   
  protected:
    List<typBstZeiger> InhaltsListe;
    List<typBstZeiger> BetreuteListe;
    
  private:
    bool LiesPoolListe    (InputFile& fin,          List<typBstZeiger>& LST);
    void SchreibPoolListe (ostream& ostrm,          List<typBstZeiger>& LST);
    void setBstInListe    (int anzahl, Ustring str, List<typBstZeiger> &LST);
    typBstZeiger* Suche   (typBaustein* zbstein,    List<typBstZeiger> &LST);
}; // typPoolVerwaltung

#endif /* _GTSTPV */
