#ifndef DATE_H
#define DATE_H

#include <string>

/* 
 * egy egyszerű dátum típus 
 *
 * egy bonyolulthoz lásd:
 * http://www3.sympatico.ca/date4cpp/index.html
 *
 */
class date
{
public:
    /* konstruktorok */
    date( int y = 2018, int m = 1, int d = 1 ) { set( y, m, d ); }
    date( std::string s );

    /* lekérdezések */
    int get_year()  const { return year; }
    int get_month() const { return month; }
    int get_day()   const { return day; }

    /* módosító műveletek */
    void set_year( int y )  { year  = y; }
    void set_month( int m ) { month = m; }
    void set_day( int d )   { day   = d; }

    void next();
    void add( int n );
    date& operator++()        { next(); return *this; }
    date operator++( int )    { date tmp = *this; next(); return tmp; }
    date& operator+=( int n ) { add( n ); return *this; }

    /* beolvasás - kiírás */
    void read( std::istream& is );
    void print( std::ostream& os ) const;

private:
    /* segéd-függvények */
    void set( int y, int m, int d )
    {
        /* TODO: ellenőrzések */
        year = y; month = m; day = d;
    }
    /* adattagok */
    int year;
    int month;
    int day;
};


inline bool operator==( const date& lhs, const date& rhs)
{
    return lhs.get_year() == rhs.get_year() &&
           lhs.get_month() == rhs.get_month() &&
           lhs.get_day() == rhs.get_day();
}

#endif /* DATE_H */