#include <iostream>
#include <string>
#include <sstream>
#include <map>

#include "date.h"

using namespace std;

/* konstruktor */
date::date( string s )
{

    for ( int i = 0; i < s.size(); ++i )
    {
         if ( '.' == s[i] || '-' == s[i] )
             s[i] = ' ';
    }
    int y, m, d;
    stringstream parser( s );
    parser >> y >> m >> d;

    set( y, m, d );
}

/* módosítók */
void date::next()
{
     map<int, int> days_in_months;
     days_in_months[1] = 31;
     days_in_months[2] = 28;
     days_in_months[3] = 31;
     // ...
    ++day;

    /* TODO: szökőév */
    if ( day-1 == days_in_months[month] )
    {
        day = 1;
        ++month;
    }
    if ( 13 == month )
    {
        month = 1;
        ++year;
    }
}
void date::add( int n )
{
    for (int i = 0; i < n; ++i )
        next();
}

/* input-output */
void date::read()
{
    // nem lenne igazán jó:
    // std::cin >> year >> month >> day;
    int y, m, d;
    if ( std::cin >> y >> m >> d )
    {
        set( y, m, d );
    }
}
void date::print() const
{
    // nem lenne igazán jó: std::cout << year << month << day;
    std::cout << "[ " << get_year() << "," << get_month()
                             << "," << get_day() << " ]";
}