// -*- coding: utf-8 -*- // Time-stamp: #ifndef PERIOD_HPP #define PERIOD_HPP #include #include #include "date.hpp" using namespace std; class Period { public: // Constructeurs Period() : length(0) {} // Période vide Period(Date s, int l) : start(s), length(l) {} Period(Date s, Date e) : start(s), length(e-s+1) {} // Durée de la période int size() const { return length; } // Égalité bool operator==(Period p); bool contains(Date d); bool contains(Period p); // Intersection et union Period inter(Period p); Period hull(Period p); private: // La periode vide est représenté par length == 0 Date start; // Premier jour de la période int length; // Nombre de jours // Min et max de deux dates Date min(Date date0, Date date1) { return date0 < date1 ? date0 : date1; } Date max(Date date0, Date date1) { return date0 < date1 ? date1 : date0; } }; #endif