This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
hf_naptar/Datum.h

161 lines
3.9 KiB
C++

#ifndef HF_NAPTAR_DATUM_H
#define HF_NAPTAR_DATUM_H
#include <cstring>
#include <iostream>
enum napnev {
HETFO = 0,
KEDD = 1,
SZERDA = 2,
CSUTORTOK = 3,
PENTEK = 4,
SZOMBAT = 5,
VASARNAP = 6
};
std::ostream &operator<<(std::ostream &os, napnev nap);
/*!
* @brief Egy naptár alapját napok képzik. Ezeket ebben az osztályban tároljuk.
* Ez tárolja az adott dátum évét, hónapját és napját.
* Opcionálisan tárolhat egy 128 karakterből álló megjegyzést is.
*/
class Datum {
//! A dátum éve
int ev;
//! A dátum hónapja
int honap;
//! A dátum napja
int nap;
//! Megjegyzés a dátumhoz
char megjegyzes[129];
protected:
static int honap_napok[12];
public:
/*!
* @brief Kiszámítja, hogy mennyi nap telt el a dátum óta
* @return Az eltelt napok száma
*/
int napszam() const;
/*!
* @brief Kiszámítja a dátum óta eltelt szökőnapok számát. napszam() függvényhez szükséges.
* @return A dátum óta eltelt szökőnapok száma
*/
int szokoev() const;
/*!
* @brief Alap konstruktor. Alap értéke: 1970.01.01. (Unix timestamp kezdete)
*/
Datum() : ev(1970), honap(1), nap(1) {
strcpy(megjegyzes, "Unix timestamp");
}
/*!
* @brief Paraméterrel hívható konstruktor
* @param ev @copybrief ev
* @param honap @copybrief honap
* @param nap @copybrief nap
* @param note @copybrief megjegyzes
*/
Datum(int ev, int honap, int nap, const char *note = "") : ev(ev), honap(honap), nap(nap) {
strcpy(megjegyzes, note);
}
/*!
* @brief Másoló konstruktor
* @param datum A lemásolandó Datum osztály
*/
Datum(const Datum &datum);
Datum& operator=(const Datum& date);
virtual ~Datum() {}
virtual bool equal(const Datum& d) const;
/*!
* @brief Egyenlőséget ellenőrző operátor
* @param nap2 Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot.
* @return Az egyenlőséget jelző logikai érték
*/
bool operator==(const Datum&nap1) const;
/*!
* @brief Egyenlőtlenséget ellenőrző operátor
* @param nap2 Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot.
* @return Az egyenlőtlenséget jelző logikai érték
*/
virtual bool operator!=(const Datum &nap2) const;
/*!
* @brief Két dátum idejének összehasonlítása
* @param nap Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot.
* @return Logikai érték
*/
virtual bool operator<(const Datum &nap) const;
/*!
* @copybrief operator<
* @copydetails operator<
*/
virtual bool operator<=(const Datum &nap) const;
/*!
* @copybrief operator<
* @copydetails operator<
*/
virtual bool operator>(const Datum &nap) const;
/*!
* @copybrief operator<
* @copydetails operator<
*/
virtual bool operator>=(const Datum &nap) const;
/*!
* @brief Kivonás operátor
* @param nap2 Az a Datum,amivel össze akarjuk hasonlítani a jelenlegi dátumot.
* @return A két dátum közötti napok száma
*/
virtual int operator-(const Datum &nap2) const;
/*!
* @brief Megadja a dátum hónapját
* @return A dátum hónapjának száma (1-12)
*/
int getHonap() const;
/*!
* @brief Megadja a dátum évét
* @return @copybrief ev
*/
int getEv() const;
/*!
* @brief Megadja a dátum napját
* @return @copybrief nap
*/
int getNap() const;
/*!
* @brief Kiszámítja, hogy az adott dátum milyen napra esik.
* @return A dátum napjának neve (napnev típus)
*/
napnev getNapnev();
/*!
* Megadja a dátumhoz tartozó megjegyzést
* @return A Datum-hoz tartpozó megjegyzés
*/
virtual const char *getMegjegyzes() const;
/*!
* @brief Kiszámítja a dátumhoz tartozó UNIX-időt
* @return A Datum UNIX-ideje
* @note Az időt éjfélnek veszi
*/
int getUnixTime();
};
std::ostream &operator<<(std::ostream &os, const Datum &d);
#endif