Duree.h
/**
*
* \file Duree.h
*
* \authors M. Laporte
*
* \date 02/04/2018
*
* \version V2.0
*
* \brief déclarations de la classe Duree (avec constructeurs et
* destructeur)
*
**/
#ifndef __DUREE_H__
#define __DUREE_H__
namespace nsUtil
{
typedef unsigned long long ULLong_t;
class Duree
{
private :
ULLong_t myDuree;
short unsigned mySeconds;
short unsigned myMinutes;
short unsigned myHours;
ULLong_t myDays;
void normaliser (void);
public :
Duree (const ULLong_t duree = ULLong_t (0));
Duree (const Duree & duree);
~Duree (void);
ULLong_t getDuree (void) const;
void display (void) const;
void incr (const ULLong_t delta = ULLong_t (0));
void decr (const ULLong_t delta = ULLong_t (0));
Duree operator + (const Duree & d) const;
Duree operator - (const Duree & d) const;
bool operator > (const Duree & d) const;
bool operator < (const Duree & d) const;
bool operator != (const Duree & d) const;
bool operator == (const Duree & d) const;
}; // Duree
} // nsUtil
#endif /* __DUREE_H__ */
Duree.cpp
/**
*
* \file Duree.cpp
*
* \authors M. Laporte
*
* \date 02/04/2018
*
* \version V2.0
*
* \brief définitions de la classe Duree
*
**/
#include <iostream>
#include <iomanip> // setw()
#include "Duree.h"
using namespace nsUtil;
using namespace std;
#define DUREE nsUtil::Duree
DUREE::Duree (const ULLong_t duree /* = ULLong_t (0) */)
: myDuree (duree)
{
normaliser ();
} // Duree()
DUREE::Duree (const Duree & duree)
: myDuree (duree.getDuree ())
{
normaliser ();
} // Duree()
DUREE::~Duree (void)
{
} // Duree()
void DUREE::normaliser (void)
{
myDays = myDuree / 86400;
myHours = (myDuree % 86400) / 3600;
myMinutes = (myDuree % 3600) / 60;
mySeconds = myDuree % 60;
} // normaliser()
ULLong_t DUREE::getDuree (void) const { return myDuree; }
void DUREE::display (void) const
{
cout << '['
<< setw (10) << myDays << ':'
<< setfill ('0')
<< setw (2) << myHours << " heure(s)"
<< setw (2) << myMinutes << " minute(s)"
<< setw (2) << mySeconds << " seconde(s)"
<< setfill (' ')
<< ']';
} // display()
void DUREE::incr (const ULLong_t delta /* = ULLong_t (0) */)
{
myDuree += delta;
normaliser ();
} // incr()
void DUREE::decr (const ULLong_t delta /* = ULLong_t (0) */)
{
myDuree -= (delta > myDuree) ? myDuree : delta;
} // decr()
DUREE DUREE::operator + (const Duree & d) const
{
return myDuree + d.myDuree;
} // operator +()
DUREE DUREE::operator - (const Duree & d) const
{
return myDuree - (myDuree < d.myDuree ? myDuree : d.myDuree);
} // operator -()
bool DUREE::operator > (const Duree & d) const
{
return myDuree > d.myDuree;
} // operator >()
bool DUREE::operator < (const Duree & d) const
{
return myDuree < d.myDuree;
} // operator <()
bool DUREE::operator != (const Duree & d) const
{
return myDuree != d.myDuree;
} // operator !=()
bool DUREE::operator == (const Duree & d) const
{
return myDuree == d.myDuree;
} // operator ==()
#undef DUREE