Index: trunk/SophyaLib/NTools/dates.cc
===================================================================
--- trunk/SophyaLib/NTools/dates.cc	(revision 2615)
+++ trunk/SophyaLib/NTools/dates.cc	(revision 2808)
@@ -11,30 +11,31 @@
 #include "dates.h"
 
-//++
-// Class	TimeZone
-// Lib		Outils++ 
-// include	dates.h
-//
-//	Classe de fuseau horaire. Permet les conversion
-//	GMT <-> temps local, en gérant les changements
-//	d'heure hiver-été.
-//	Deux fuseaux horaires sont prédéfinis, "France"
-//	et "Chili".
-//--
+/*! 
+  \class TimeZone
+  \ingroup NTools
+  Management of time zones - This class is used with class Date.
+  \warning Unless necessary, DO NOT USE this class. 
+  \sa SOPHYA::TimeStamp
+
+  \verbatim
+  
+  Classe de fuseau horaire. Permet les conversion
+  GMT <-> temps local, en gérant les changements
+  d'heure hiver-été.
+  Deux fuseaux horaires sont prédéfinis, "France"
+  et "Chili".
+  \endverbatim
+*/
 
 TimeZone* gTimeZone = NULL;
 
-//++
-// Titre	Constructeurs
-//--
-
-//++
+
+/*!	
+  Constructeur par défaut. Il lit la variable
+  d'environnement ACQ_TZ pour choisir le fuseau
+  horaire. Si la variable n'est pas définie, nous
+  sommes en France...
+*/  
 TimeZone::TimeZone()
-//
-//	Constructeur par défaut. Il lit la variable
-//	d'environnement ACQ_TZ pour choisir le fuseau
-//	horaire. Si la variable n'est pas définie, nous
-//	sommes en France...
-//--
 {
   char* p = getenv("ACQ_TZ");
@@ -47,22 +48,18 @@
 }
 
-//++
+//!	Constructeur à partir du nom d'un fuseau horaire.
 TimeZone::TimeZone(const char* nom)
-//
-//	Constructeur à partir du nom d'un fuseau horaire.
-//--
 {
   SetZone(nom);
 }
 
-//++
+/*!	
+  Choisit un fuseau horaire. Contient la définition
+  du fuseau "France" (GMT+1, DST : dernier dimanche
+  de mars - dernier dimanche de septembre, c'est-à-dire
+  pré-gouvernement Juppé), et Chili (GMT-4, DST :
+  deuxième dimanche d'octobre - deuxième dimanche de mars).
+*/
 void TimeZone::SetZone(const char* nom)
-//	
-//	Choisit un fuseau horaire. Contient la définition
-//	du fuseau "France" (GMT+1, DST : dernier dimanche
-//	de mars - dernier dimanche de septembre, c'est-à-dire
-//	pré-gouvernement Juppé), et Chili (GMT-4, DST :
-//	deuxième dimanche d'octobre - deuxième dimanche de mars).
-//--
 {
   if (!strcmp(nom,"France")) {
@@ -96,9 +93,6 @@
 }
 
-//++
+//!	Teste si une date est en heure d'été (DST).
 int TimeZone::IsDst(const Date& date)
-//
-//	Teste si une date est en heure d'été (DST).
-//--
 {
   Date dt = date;
@@ -139,48 +133,50 @@
 }
 
-//++
+/*!
+  Retourne la difference TL-GMT pour une date donnée,
+  en tenant compte de l'heure d'été éventuelle.
+*/
 int TimeZone::GetOffset(const Date& date)
-//
-//	Retourne la difference TL-GMT pour une date donnée,
-//	en tenant compte de l'heure d'été éventuelle.
-//--
 {
   return IsDst(date) ? gmtOffset+dstOffset : gmtOffset;
 }
 
-//++
-// Class	Date
-// Lib		Outils++ 
-// include	dates.h
-//
-//	Une classe date comme une autre, avec gestion
-//	temps local / GMT / changement d'heure, et un 
-//	jour temps sidéral.
-//
-//	Une partie de la date (heure, jour...) peut être
-//	indéterminée. Les comparaisons sont alors faites
-//	de façon astucieuse...
-//
-//	La date peut être déterminée de minuit à minuit
-//	ou de midi à midi (nuit d'observation). Logique
-//	complexe et peut-être foireuse pour passer de
-//	l'un à l'autre, mais pas encore d'ennuis pour le
-//	moment... Une date-nuit doit avoir une heure
-//	indéterminée.
-//
-//	Il faut que Date::gTimeZone soit initialisé pour
-//	éviter des gros pépins, mais PeidaInit() le fait.
-//
-//	An 2000 : Lorsqu'on gère des dates sous forme de chaine :
-//	* En sortie, 2 caractères pour l'année entre 1950 et 1999
-//	  et 4 caractères sinon
-//	* En entrée, si AA<100 on ajoute 1900.
-//--
-
-//++
+
+
+/*! 
+  \class Date
+  \ingroup NTools
+  Date manipulation classe
+  \warning Unless necessary, DO NOT USE this class.
+  Use  SOPHYA::TimeStamp instead.
+
+  \verbatim
+  
+  Une classe date comme une autre, avec gestion
+  temps local / GMT / changement d'heure, et un 
+  jour temps sidéral.
+  
+  Une partie de la date (heure, jour...) peut être
+  indéterminée. Les comparaisons sont alors faites
+  de façon astucieuse...
+  
+  La date peut être déterminée de minuit à minuit
+  ou de midi à midi (nuit d'observation). Logique
+  complexe et peut-être foireuse pour passer de
+  l'un à l'autre, mais pas encore d'ennuis pour le
+  moment... Une date-nuit doit avoir une heure
+  indéterminée.
+  
+  Il faut que Date::gTimeZone soit initialisé pour
+  éviter des gros pépins, mais PeidaInit() le fait.
+  
+  An 2000 : Lorsqu'on gère des dates sous forme de chaine :
+  * En sortie, 2 caractères pour l'année entre 1950 et 1999
+  et 4 caractères sinon
+  * En entrée, si AA<100 on ajoute 1900.
+
+*/
+//!	Retourne le nombre de jours dans le mois
 short Date::MonthDays(short mois, short annee)
-//
-//	Retourne le nombre de jours dans le mois
-//--
 {
   if (mois<1 || mois>12) throw ParmError(PExcLongMessage(""));
@@ -206,49 +202,43 @@
 }
     
-//++
+//!  Retourne le nombre de jours dans l'année
 short Date::YearDays(short annee)
-//
-//	Retourne le nombre de jours dans l'année
-//--
 {
   return (((annee%4 == 0) && (annee%100 != 0)) || (annee%400 == 0)) ? 366 : 365;
 }
 
-//++
 bool Date::UndetDate() const
-//
-//	Retourne true si une partie de la date (jour
-//	ou mois ou année) est indéterminée.
-//--
+/*!
+  Retourne true si une partie de la date (jour 
+  ou mois ou année) est indéterminée.
+*/
 {
   return ((AA == -1) || (MM == -1) || (JJ == -1));
 }
 
-//++
+/*!
+  Retourne true si toute la date (jour
+  et mois et année) est indéterminée.
+*/
 bool Date::AllUndetDate() const
-//
-//	Retourne true si toute la date (jour
-//	et mois et année) est indéterminée.
-//--
 {
   return ((AA == -1) && (MM == -1) && (JJ == -1));
 }
 
-//++
 bool Date::UndetTime() const
-//
-//	Retourne true si une partie de l'heure (heure
-//	ou minutes ou secondes) est indéterminée.
-//--
+/*!	
+  Retourne true si une partie de l'heure (heure
+  ou minutes ou secondes) est indéterminée.
+*/
 {
   return ((hh == -1) || (mm == -1) || (ss == -1));
 }
 
-//++
+
+/*!
+  Retourne true si toute l'heure (heure
+  et minutes et secondes) est indéterminée.
+*/
 bool Date::AllUndetTime() const
-//
-//	Retourne true si toute l'heure (heure
-//	et minutes et secondes) est indéterminée.
-//--
 {
   return ((hh == -1) && (mm == -1) && (ss == -1));
@@ -257,10 +247,7 @@
 //Date::operator double() const
 
-//++
+//!	Jours écoulés depuis le 0 janvier 1901 0h TU
 double
 Date::GetDays() const
-//
-//	Jours écoulés depuis le 0 janvier 1901 0h TU
-//--
 {
    if (UndetTime() && !AllUndetTime()) throw ParmError(PExcLongMessage(""));
@@ -281,9 +268,6 @@
 }
 
-//++
+//!	Initialisation a partir jours écoulés depuis le 0 janvier 1901 0h TU
 void Date::Set(double t)
-//
-//	Jours écoulés depuis le 0 janvier 1901 0h TU
-//--
 {
    t += 1/8640000.0;
@@ -323,9 +307,7 @@
    nuit = 0;
 }
-//++
+
+//!	Constructeur. Prend l'heure courante...
 Date::Date()
-//
-//	Constructeur. Prend l'heure courante...
-//--
 : timeZone(gTimeZone)
 {
@@ -342,20 +324,12 @@
 }
 
-//++
+//!	Constructeur simple.
 Date::Date(int J, int M, int A, int h, int m, double s)
-//
-//	Constructeur simple.
-//--
 : JJ(J), MM(M), AA(A), hh(h), mm(m), ss(s), timeZone(gTimeZone), nuit(0)
 {
 }
 
-//++
+//!	Constructeur à partir des jours écoulés depuis le 0 janvier 1901 0h TU
 Date::Date(double t)
-//
-//	Constructeur à partir des 
-//	jours écoulés depuis le 0 janvier 1901 0h TU
-//
-//--
 : timeZone(gTimeZone)
 {
@@ -363,22 +337,16 @@
 }
 
-//++
+//!	On change de fuseau horaire.
 void Date::SetTimeZone(TimeZone* tz)
-// 
-//	On change de fuseau horaire.
-//--
 {
   timeZone = tz;
 }
 
-//++
+/*!
+  Constructeur à partir de la date sous la forme
+  'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
+  (par défaut) ou Date::kLocalTime.
+*/
 Date::Date(const char* date, const char* heure, int tOpt)
-//
-//	Constructeur à partir de la date sous la forme
-//	'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
-//	(par défaut) ou Date::kLocalTime.
-//
-//	Tout ou partie de la date peut être indéterminée ('??').
-//--
 : timeZone(gTimeZone)
 {
@@ -386,13 +354,12 @@
 }
 
-//++
+/*!
+  Constructeur à partir de la date sous la forme
+  'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
+  (par défaut) ou Date::kLocalTime.
+  
+  Tout ou partie de la date peut être indéterminée ('??').
+*/
 Date::Date(string const& date, string const& heure, int tOpt)
-//
-//	Constructeur à partir de la date sous la forme
-//	'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
-//	(par défaut) ou Date::kLocalTime.
-//
-//	Tout ou partie de la date peut être indéterminée ('??').
-//--
 : timeZone(gTimeZone)
 {
@@ -400,26 +367,24 @@
 }
 
-//++
+/*!
+  Positionne la date sous la forme
+  'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
+  (par défaut) ou Date::kLocalTime.
+  
+  Tout ou partie de la date peut être indéterminée ('??').
+*/
 void Date::Set(string const& date, string const& heure, int tOpt)
-//
-//	Positionne la date sous la forme
-//	'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
-//	(par défaut) ou Date::kLocalTime.
-//
-//	Tout ou partie de la date peut être indéterminée ('??').
-//--
 {
   Set(date.c_str(), heure == "" ? (char*)NULL : heure.c_str(), tOpt);
 }
 
-//++
+/*!
+  Positionne la date sous la forme
+  'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
+  (par défaut) ou Date::kLocalTime.
+  
+  Tout ou partie de la date peut être indéterminée ('??').
+*/
 void Date::Set(const char* date, const char* heure, int tOpt)
-//
-//	Positionne la date sous la forme
-//	'DD/MM/YYYY'  'HH/MM/SS', et tOpt est Date::kGMTTime
-//	(par défaut) ou Date::kLocalTime.
-//
-//	Tout ou partie de la date peut être indéterminée ('??').
-//--
 {
   nuit = 0;
@@ -538,10 +503,9 @@
 }
 
-//++
+/*!
+  Récupère la date sous la forme d'une chaîne 'DD/MM/YYYY'
+  en tOpt = Date::kGMTTime ou Date::kLocalTime.
+*/
 void Date::GetDateStr(char* s, int tOpt) const
-//
-//	Récupère la date sous la forme d'une chaîne 'DD/MM/YYYY'
-//	en tOpt = Date::kGMTTime ou Date::kLocalTime.
-//--
 {
   Date dt(*this);
@@ -566,9 +530,6 @@
 }
 
-//++
+//!	Code EROS de la date.
 void Date::GetDateCode(char* s, int tOpt) const
-//
-//	Code EROS de la date.
-//--
 {
   Date dt(*this);
@@ -603,9 +564,6 @@
 }
 
-//++
+//!	Récupère l'heure sous la forme 'HH:MM:SS'
 void Date::GetTimeStr(char* s, int tOpt) const
-//
-//	Récupère l'heure sous la forme 'HH:MM:SS'
-//--
 {
   Date dt(*this);
@@ -624,19 +582,15 @@
 }
 
-//++
+//!	Récupèrera un jour le temps sidéral.
 void Date::GetSidTStr(char* s) const
-//
-//	Récupèrera un jour le temps sidéral.
-//--
 {
   strcpy(s,"TOBEDONE!!");
 }
 
-//++
 string Date::DateStr(int tOpt) const
-//
-//	Récupère la date sous la forme d'une chaîne 'DD/MM/YYYY'
-//	en tOpt = Date::kGMTTime ou Date::kLocalTime.
-//--
+/*!
+  Récupère la date sous la forme d'une chaîne 'DD/MM/YYYY'
+  en tOpt = Date::kGMTTime ou Date::kLocalTime.
+*/
 {
    char s[20];
@@ -645,9 +599,6 @@
 }
 
-//++
+//!	Code EROS de la date.
 string Date::DateCode(int tOpt) const
-//
-//	Code EROS de la date.
-//--
 {
    char s[20];
@@ -656,9 +607,6 @@
 }
 
-//++
+//!	Récupère l'heure sous la forme 'HH:MM:SS'
 string Date::TimeStr(int tOpt) const
-//
-//	Récupère l'heure sous la forme 'HH:MM:SS'
-//--
 {
    char s[20];
@@ -667,9 +615,6 @@
 }
 
-//++
+//!	Récupèrera un jour le temps sidéral.
 string Date::SidTStr() const
-//
-//	Récupèrera un jour le temps sidéral.
-//--
 {
    char s[20];
@@ -678,10 +623,6 @@
 }
 
-//++
+//!   Retourne le jour dans la semaine, 0-6 avec 0 = Date::jour_Lundi.
 int Date::DayOfWeek(int tOpt) const
-//
-//	Retourne le jour dans la semaine, 0-6
-//	avec 0 = Date::jour_Lundi.
-//--
 {
   double t = GetDays();
@@ -696,10 +637,9 @@
 }
 
-//++
+/*!
+  Retourne la date correspondant au ieme joursem dans le mois 
+  correspondant (exemple, 2e dimanche de mars 1960).
+*/
 short Date::NthMonthDay(short i, short joursem, short mois, short annee)
-//
-//	Retourne la date correspondant au ieme joursem dans le mois 
-//	correspondant (exemple, 2e dimanche de mars 1960).
-//--
 {
    if (i>0) {
@@ -717,9 +657,6 @@
 }
 
-//++
+//! Ajout un nombre \b dt en jours
 Date& Date::operator += (double dt)     
-//
-//	dt en jours
-//--
 {
   int u = UndetTime();
@@ -729,9 +666,6 @@
 }
 
-//++
+//!  retranche un intervalle de temps \b dt en jours
 Date& Date::operator -= (double dt)    
-//
-//	dt en jours
-//--
 {
   int u = UndetTime();
@@ -741,8 +675,5 @@
 }
 
-//++
 Date operator + (Date const& d, double dt)
-//
-//--
 {
   Date a(d);
@@ -751,8 +682,5 @@
 }
 
-//++
 Date operator - (Date const& d, double dt)
-//
-//--
 {
   Date a(d);
@@ -761,9 +689,6 @@
 }
 
-//++
+//!	Résultat en jours
 double operator - (Date const& a, Date const& b)
-//
-//	Résultat en jours
-//--
 {
   if (a.UndetTime() != b.UndetTime()) throw ParmError(PExcLongMessage(""));
@@ -772,9 +697,6 @@
 }
 
-//++
+//!	On n'a pas égalite dès que des éléments déterminés sont différents
 bool operator == (Date const& a, Date const& b)
-//
-//	On n'a pas égalite dès que des éléments déterminés sont différents
-//--
 {
   if (a.nuit && a.UndetTime() && !b.nuit && !b.UndetTime() && b.hh<12)
@@ -792,17 +714,11 @@
 }
 
-//++
 bool operator != (Date const& a, Date const& b)
-//
-//--
 {
   return !(a == b);
 }
 
-//++
+//!	Inégalité large. Pas de subtilités
 bool operator <= (Date const& a, Date const& b)
-//
-//	Inégalité large. Pas de subtilités
-//--
 {
   if (a.nuit && a.UndetTime() && !b.nuit && !b.UndetTime() && b.hh<12)
@@ -838,35 +754,25 @@
 }
 
-//++
+/*!
+  Inégalité stricte, codée à partir de la large pour résoudre
+  sans cas particuliers les subtilités 
+  01/02/95 < ??/03/95 mais pas 01/02/95 < ??/02/95
+*/
 bool operator < (Date const& a, Date const& b)
-//
-//	Inégalité stricte, codée à partir de la large pour résoudre
-//	sans cas particuliers les subtilités 
-//	01/02/95 < ??/03/95 mais pas 01/02/95 < ??/02/95
-//--
 {
   return (a <= b) && !(a == b);
 }
 
-//++
 bool operator >= (Date const& a, Date const& b)
-//
-//--
 {
   return (b <= a);
 }
 
-//++
 bool operator > (Date const& a, Date const& b)
-//
-//--
 {
   return (b < a);
 }
 
-//++
 ostream& operator << (ostream& s, Date const& d)
-//
-//--
 {
   char x[20];
@@ -877,2 +783,3 @@
   return s;
 }
+
