#ifndef LOGFILE_HPP
#define LOGFILE_HPP
//===============================================================
// Projekt   : Undervisningsmateriale
// Enhed     : Headerfil
// Fil       : logfile.hpp
// Forfatter : BA
//
// Beskrivelse:
//
// Versionshistorie:
//   05.04.02 / BA - Oprindelig version
//   01.05.02 / BA - LogData copy-constructor og operator=
//     medtaget.
//   23.10.02 / BA - Mange ændringer, en helt ny version.
//===============================================================

#include <iostream>
#include <windows.h>
#include "rtk32.h"
#include "rttarget.h"
using namespace std;

//---------------------------------------------------------------

class LogData {
public:
  LogData(); // m_haendelse initieres til en tom streng
  LogData(char *haendelse);
  LogData(const LogData &ld);
  ~LogData();
  LogData &operator=(const LogData &ld);
  char *haendelse(char *hStr);
  int hStrLaengde();
  char *tid(char *tStr); // returnerer dato og klokkeslet
  int tStrLaengde();
private:
  char *m_haendelse;
  SYSTEMTIME m_tid;
friend ostream &operator<<(ostream &udfil, const LogData &ld);
friend istream &operator>>(istream &indfil, LogData &ld);
};


//---------------------------------------------------------------

class Log {
public:
  Log(char *filnavn);
  ~Log();
  void laes(LogData ld[]); // indlæser hele logfilen til
                           // et array af LogData
  void skriv(const LogData &ld);
  int ldAntal();  // returnerer antal LogData i logfilen
  void nulstil(); // indholdet i logfilen slettes
private:
  // public kopiering forhindres(copy constructor
  // og operator=() skal ikke implementeres):
  Log(const Log &l);
  Log &operator=(const Log &l);
  char *m_filnavn;
  int m_ldAntal;
  RTKSemaphore m_logObjSem;
};

//===============================================================
#endif
