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

/*** Windows headers ***/
#ifdef WIN32
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
//#include <winnt.h>
#endif /*WIN32*/

#include "gtstgb.h"
#include "gtsb25.h"

typBTPKommissionierer::typBTPKommissionierer (const BstVariante *zTGB)
  : UebernahmeZeit (0.1), AnzahlEingaenge (1), AnzahlAusgaenge (1)
{
  int anz = zTGB->PalPositions().Count();
  if (anz == 1) anz = 2;
  AnzahlAusgaenge = (int)(anz / 2);
  AnzahlEingaenge = anz - AnzahlAusgaenge;
} // typBTPKommissionierer

typBTPKommissionierer::typBTPKommissionierer (const typBTPKommissionierer &copy)
{
  UebernahmeZeit  = copy.UebernahmeZeit;
  AnzahlEingaenge = copy.AnzahlEingaenge;
  AnzahlAusgaenge = copy.AnzahlAusgaenge;
} // typBTPKommissionierer

typBTPKommissionierer::typBTPKommissionierer (const typBTPKommissionierer *zBTP)
{
  UebernahmeZeit  = zBTP->UebernahmeZeit;
  AnzahlEingaenge = zBTP->AnzahlEingaenge;
  AnzahlAusgaenge = zBTP->AnzahlAusgaenge;
} // typBTPKommissionierer

typBTPKommissionierer::typBTPKommissionierer (InputFile& fin)
{
  SFXToken tok;
  tok.nextToken (fin); tok.EndOfLine (fin);  // Zeile überlesen
  tok.nextToken (fin); // Nr ueberlesen
  tok.nextToken (fin);  UebernahmeZeit = atof(tok());
  tok.EndOfLine (fin);
  tok.nextToken (fin); // Nr ueberlesen
  tok.nextToken (fin);  AnzahlEingaenge = atoi(tok());
  tok.EndOfLine (fin);
  tok.nextToken (fin); // Nr ueberlesen
  tok.nextToken (fin);  AnzahlAusgaenge = atoi(tok());
  tok.EndOfLine (fin);
}; // typBTPKommissionierer

void typBTPKommissionierer::BTPLesen (InputFile& fin)
{
  SFXToken tok;
  tok.nextToken (fin);  UebernahmeZeit  = atof(tok());
  tok.nextToken (fin);  AnzahlEingaenge = atoi(tok());
  tok.nextToken (fin);  AnzahlAusgaenge = atoi(tok());
  tok.EndOfLine (fin);
}  // ENDE BTPLesen

void typBTPKommissionierer::BTPSchreiben (ostream& ostrm, typBaustein *zbst, int satznr)
{
  Write (ostrm, "%4d ",    satznr);
  Write (ostrm, "%4d ",    zbst->i_BstNr());
  Write (ostrm, "%4d ",    zbst->i_BstTyp());
  Write (ostrm, "%11.5f ", UebernahmeZeit);
  Write (ostrm, "%11d ",   AnzahlEingaenge);
  Write (ostrm, "%11d\n",  AnzahlAusgaenge);
}  // ENDE BTPSchreiben

Ustring typBTPKommissionierer::getBTPWerte ()
{
  char tmp [512];
  sprintf (tmp, "%9.5f\t%d\t%d",
           UebernahmeZeit, AnzahlEingaenge, AnzahlAusgaenge);
  Ustring buf(tmp);
  return buf;
}  // ENDE getBTPWerte

void typBTPKommissionierer::setBTPWerte (Ustring str)
{
  sscanf((char*)str.str(), "%f %d %d",
           &UebernahmeZeit, &AnzahlEingaenge, &AnzahlAusgaenge);
}  // ENDE setBTPWerte

void typBTPKommissionierer::setBTPWerte (const typBTPKommissionierer *zBTP)
{
  UebernahmeZeit  = zBTP->UebernahmeZeit;
  AnzahlEingaenge = zBTP->AnzahlEingaenge;
  AnzahlAusgaenge = zBTP->AnzahlAusgaenge;
}  // ENDE setBTPWerte

typBTPKommissionierer::~typBTPKommissionierer ()
{ } // ~typBTPKommissionierer

typBSTKommissionierer::typBSTKommissionierer (const typBSTKommissionierer &copy, int nr)
                      :typBaustein(copy, nr),
                       typBTPKommissionierer(copy),
                       typBSPVariante2(copy)
{
} // typBSTKommissionierer

typBSTKommissionierer::typBSTKommissionierer (BstVariante *zaufTGB, int nr)
                      :typBaustein(zaufTGB, nr),
                       typBTPKommissionierer((typBTPKommissionierer*)zTGB->BTP ()),
                       typBSPVariante2((typBSPVariante2*)zTGB->BSP ())
{
} // typBSTKommissionierer

typBSTKommissionierer::typBSTKommissionierer (InputFile& fin, int nr, int btyp, int vtyp)
                      :typBaustein (fin, nr, btyp, vtyp),
                       typBTPKommissionierer((typBTPKommissionierer*)zTGB->BTP ()),
                       typBSPVariante2((typBSPVariante2*)zTGB->BSP ())
{
} // typBSTKommissionierer

typBSTKommissionierer::~typBSTKommissionierer ()
{ } // ~typBSTKommissionierer

void typBSTKommissionierer::VarianteErsetzen  (BstVariante *zaufTGB)
{
  typBTPKommissionierer::setBTPWerte ((typBTPKommissionierer*)zaufTGB->BTP());
  typBSPVariante2::setBSPWerte((typBSPVariante2*)zaufTGB->BSP());
  BausteinErsetzen (zaufTGB);
} // ENDE  VarianteErsetzen

Ustring typBSTKommissionierer::getBTPWerte ()
{
  return typBTPKommissionierer::getBTPWerte();
}  // ENDE getBTPWerte

void typBSTKommissionierer::setBTPWerte (Ustring str)
{
  typBTPKommissionierer::setBTPWerte (str);
}  // ENDE setBTPWerte

void typBSTKommissionierer::setBTPWerte (const typBTPKommissionierer *zBTP)
{
  typBTPKommissionierer::setBTPWerte (zBTP);
}  // ENDE setBTPWerte

void typBSTKommissionierer::BTPLesen (InputFile& fin)
{
  typBTPKommissionierer::BTPLesen (fin);
}  // ENDE BSPLesen

void typBSTKommissionierer::BTPSchreiben (ostream& ostrm, int satznr)
{
  typBTPKommissionierer::BTPSchreiben (ostrm, this, satznr);
}  // ENDE BTPSchreiben

void typBSTKommissionierer::BSPLesen (InputFile& fin)
{
  typBSPVariante2::BSPLesen (fin);
}  // ENDE BSPLesen

void typBSTKommissionierer::BSPSchreiben (ostream& ostrm, int satznr)
{
  typBSPVariante2::BSPSchreiben (ostrm, this, satznr);
}  // ENDE BSPSchreiben

Ustring typBSTKommissionierer::getBSPWerte ()
{
  return typBSPVariante2::getBSPWerte ();
}  // ENDE getBSPWerte

void typBSTKommissionierer::setBSPWerte (Ustring str)
{
  typBSPVariante2::setBSPWerte (str);
}  // ENDE setBSPWerte