Aggiunta documentazione in linea
git-svn-id: svn://10.65.10.50/trunk@1372 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
		
							parent
							
								
									a699373f91
								
							
						
					
					
						commit
						e89e4dfb78
					
				| @ -14,6 +14,8 @@ | ||||
| 
 | ||||
| #include <real.h> | ||||
| 
 | ||||
| // @doc EXTERNAL
 | ||||
| 
 | ||||
| HIDDEN TDate __tmp_date; | ||||
| HIDDEN char __date_tmp_string[64]; | ||||
| 
 | ||||
| @ -102,7 +104,34 @@ TDate::TDate(int day, int month, int year) | ||||
|   memcpy(_format, "1444-", 5); | ||||
| }        | ||||
| 
 | ||||
| void TDate::set_format(const char* f) | ||||
| // @mfunc Permette di stabilire il criterio di formattazione delle date
 | ||||
| void TDate::set_format( | ||||
|   const char* f) // @parm Stringa di 5 caratteri che indica il formato della data
 | ||||
|    | ||||
|   // @comm Ogni carattere del parametro <p f>   permette di settare un tipo di formattazione
 | ||||
|   //             della data:
 | ||||
|   //             <nl>1° carattere -<gt> FORMATO. Puo' assumere i seguenti valori:
 | ||||
|   //             <nl>   1 = giorno-mese-anno
 | ||||
|   //       <nl> 2 = mese-anno-giorno
 | ||||
|   //             <nl>   3 = anno-giorno-mese
 | ||||
|   //             <nl>   4 = solo anno
 | ||||
|   //             <nl>   5 = solo mese
 | ||||
|   //             <nl>   6 = solo giorno
 | ||||
|   //             <nl>   7 = mese-anno
 | ||||
|   //             <nl><nl>2° carattere -<gt> Formato GIORNO. Puo assumere i seguenti valori:
 | ||||
|   //             <nl>   2 = formato normale (es. 4)
 | ||||
|   //             <nl>   4 = formato con 0 (es. 04)
 | ||||
|   //             <nl>   5 = lettere (es. quattro)
 | ||||
|   //             <nl>   6 = giorno della settimana
 | ||||
|   //             <nl><nl>3° carattere -<gt> Formato MESE. Puo assumere i seguenti valori:
 | ||||
|   //             <nl>   2 = formato normale (es. 4)
 | ||||
|   //             <nl>   4 = formato con 0 (es. 04)
 | ||||
|   //             <nl>   5 = lettere (es. quattro)
 | ||||
|   //             <nl>   7 = trimestre
 | ||||
|   //             <nl><nl>4° carattere -<gt> Formato ANNO. Puo' assumere i seguenti valori:
 | ||||
|   //             <nl>   2 = breve (es. 95)
 | ||||
|   //             <nl>   4 = lungo (es. 1995)
 | ||||
|   //       <nl><nl>5° carattere -<gt> Carattere SEPARATORE. Puo' essere un carattere o lo spazio
 | ||||
| { | ||||
|   memcpy(_format, f, 5); | ||||
| } | ||||
| @ -191,9 +220,17 @@ void TDate::read_from(istream& in) | ||||
|   else _val = NULLDATE; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| char* TDate::string(TDate_mgafmt yearf, char sep, TDate_mgafmt dayf,  | ||||
|                     TDate_mgafmt monthf, TDate_order ord) const | ||||
| // @mfunc Ritorna la data in formato di stringa (anche in formato ANSI)
 | ||||
| //
 | ||||
| // @rdesc Se si tratta di una data valida ritorna la stringa secondo il
 | ||||
| //        formato scelto (vedi <t TDate_mgafmt>), altrimenti ritorna ""
 | ||||
| char* TDate::string( | ||||
|   TDate_mgafmt yearf,     // @parm Formato per l'anno (default def)
 | ||||
|   char sep,               // @parm Carattere separatore (default '-')
 | ||||
|   TDate_mgafmt dayf,      // @parm Formato per il giorno (default def)
 | ||||
|   TDate_mgafmt monthf,    // @parm Formato per il mese (default def)
 | ||||
|   TDate_order ord) const  // @parm Ordine con la quale visualizzare la data
 | ||||
|   //       (vedi <t TDate_order>; default gma_date)
 | ||||
| {  | ||||
|   if (!ok()) return ""; | ||||
| 
 | ||||
| @ -405,7 +442,15 @@ bool TDate::ok() const | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| TDate& operator +(const TDate& a, long nday) | ||||
| // @func TDate& | operator + | Incrementa la data di un certo numero di giorni
 | ||||
| TDate& operator +( | ||||
|   const TDate& a,  // @parm Data a cui aggiungere i giorni
 | ||||
|   long nday)       // @parm Numero di giorni da aggiungere
 | ||||
| 
 | ||||
|   // @syntax operator + (const TDate& a, long nday)
 | ||||
|   // @syntax operator + (long nday, const TDate& a)
 | ||||
|   //
 | ||||
|   // @comm E' indifferente quale parametro viene passato per primo
 | ||||
| 
 | ||||
| { | ||||
|   __tmp_date = long(a) + nday; | ||||
| @ -421,15 +466,20 @@ TDate& operator +(const long nday, const TDate& b) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| TDate& operator -(const TDate& a, long nday) | ||||
| // @func TDate& | operator - | Decrementa la data di un certo numero di giorni
 | ||||
| TDate& operator -( | ||||
|   const TDate& a,  // @parm Data da decrementare
 | ||||
|   long nday)       // @parm Numero di giorni da togliere
 | ||||
| 
 | ||||
| { | ||||
|   __tmp_date = long(a)- nday; | ||||
|   return __tmp_date; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| void swap(TDate& a, TDate& b) | ||||
| // @func Scambia la data <p a> con la data <p b>
 | ||||
| void swap( | ||||
|   TDate& a,  // @parm Prima data da scambiare
 | ||||
|   TDate& b)  // @parm Seconda data da scambiare
 | ||||
| 
 | ||||
| { | ||||
|   __tmp_date = b; | ||||
| @ -438,15 +488,20 @@ void swap(TDate& a, TDate& b) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| const TDate& fnc_min(const TDate& a, const TDate& b) | ||||
| // @func Ritorna la data piu' piccola tra <p a> e <p b>
 | ||||
| const TDate& fnc_min( | ||||
|   const TDate& a, // @parm Prima data da confrontare
 | ||||
|   const TDate& b) // @parm Secondo data da confrontare
 | ||||
| 
 | ||||
| { | ||||
|   if (a < b) return a; | ||||
|   else return b; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| const TDate& fnc_max(const TDate& a, const TDate& b) | ||||
| // @func Ritorna la data piu' grande tra <p a> e <p b>
 | ||||
| const TDate& fnc_max( | ||||
|   const TDate& a,  // @parm Prima data da confrontare
 | ||||
|   const TDate& b)  // @parm Secondo data da confrontare
 | ||||
| 
 | ||||
| { | ||||
|   if (a > b) return a; | ||||
| @ -454,8 +509,12 @@ const TDate& fnc_max(const TDate& a, const TDate& b) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| // Converte un numero da 1 a 12 nel corrispondente mese
 | ||||
| const char* itom(byte m) | ||||
| // @func Converte un numero da 1 a 12 nel corrispondente mese
 | ||||
| const char* itom( | ||||
|   byte m) // @parm Numero del mese da convertire in parole (da 1 a 12)
 | ||||
| 
 | ||||
|   // @comm Se il parametro <p m> e' maggiore di 12 viene calcolato il nome del
 | ||||
|   //       mese corrispondente a tale cifra (es. 15 = "Marzo")
 | ||||
| { | ||||
|   const char* nomi[12] = | ||||
|   { | ||||
| @ -466,7 +525,13 @@ const char* itom(byte m) | ||||
|   return nomi[(m-1) % 12]; | ||||
| } | ||||
| 
 | ||||
| const char* itow(byte d) | ||||
| // @func Ritorna il nome del giorno (1-7)
 | ||||
| const char* itow( | ||||
|   byte d) // @parm Numero del giorna da convertire in parole (da 1 a 7)
 | ||||
| 
 | ||||
|   // @comm Come primo giorno della setimana e' preso il Lunedi.
 | ||||
|   //       <nl>Se il parametro <p d> e' maggiore di 7 viene calcolato il nome del
 | ||||
|   //       giorno corrispondente a tale cifra (es. 15 = "Lunedi")
 | ||||
| { | ||||
|   const char* nomi[7] = | ||||
|   { "Lunedi", "Martedi", "Mercoledi",   "Giovedi", "Venerdi", | ||||
|  | ||||
							
								
								
									
										232
									
								
								include/date.h
									
									
									
									
									
								
							
							
						
						
									
										232
									
								
								include/date.h
									
									
									
									
									
								
							| @ -5,105 +5,219 @@ | ||||
| #include <object.h> | ||||
| #endif | ||||
| 
 | ||||
| // @C
 | ||||
| // Classe TDate : TObject
 | ||||
| // @END
 | ||||
| 
 | ||||
| #define TODAY  -1 | ||||
| 
 | ||||
| enum TDate_order   { gma_date = 1, mga_date, amg_date, a_date, m_date, g_date, ma_date }; | ||||
| enum TDate_mgafmt  { ANSI = -1, brief = 2, full = 4, letters = 5, weekday = 6, quarter = 7,  | ||||
|                      def = 99 }; | ||||
| // @doc EXTERNAL
 | ||||
| 
 | ||||
| // @enum TDate_order | Criterio col quale ordinare gli elementi della data
 | ||||
| enum TDate_order   { | ||||
|   gma_date = 1,  // @emem Giorno-Mese-Anno (default 1)
 | ||||
|   mga_date,      // @emem Mese-Giorno-Anno
 | ||||
|   amg_date,      // @emem Anno-Mese-Giorno
 | ||||
|   a_date,        // @emem Solo anno
 | ||||
|   m_date,        // @emem Solo Mese
 | ||||
|   g_date,        // @emem Solo Giorno
 | ||||
|   ma_date };     // @emem Mese-Anno
 | ||||
| 
 | ||||
| // @enum TDate_mgafmt | Criterio col quale visualizzare le date
 | ||||
| enum TDate_mgafmt  { | ||||
|   ANSI = -1,     // @emem Formato ANSI
 | ||||
|   brief = 2,     // @emem Formato breve
 | ||||
|   full = 4,      // @emem Formato completo
 | ||||
|   letters = 5,   // @emem Lettere
 | ||||
|   weekday = 6,   // @emem Giorno della settimana
 | ||||
|   quarter = 7,   // @emem Formato trimestrale
 | ||||
|   def = 99 };    // @emem Formato standard
 | ||||
| 
 | ||||
| // @class TDate | Classe per la gestione delle date
 | ||||
| //
 | ||||
| // @base public | TObject
 | ||||
| class TDate : public TObject | ||||
| { | ||||
|   // @DPRIV
 | ||||
|   long    _val;        // Valore data in formato packed
 | ||||
|   byte    _format[5];  // formato per tutti i pezzettini
 | ||||
|   // @access Private Member
 | ||||
| 
 | ||||
|   // @DES Operatori esterni < > <= >= == !=
 | ||||
|   // @FPUB
 | ||||
|   // @cmember Valore data in formato packed
 | ||||
|   long _val; | ||||
|   // @cmember Formato per tutti i pezzettini
 | ||||
|   byte _format[5]; | ||||
| 
 | ||||
|   // @cmember Controlla se una data e' minore di un'altra
 | ||||
|   friend bool operator <(const TDate& a, const TDate& b); | ||||
|   // @cmember Controlla se una data e' maggiore di un'altra
 | ||||
|   friend bool operator >(const TDate& a, const TDate& b); | ||||
|   // @cmember Controlla se una data e' minore o ugaule ad un'altra
 | ||||
|   friend bool operator <=(const TDate& a, const TDate& b); | ||||
|   // @cmember Controlla se una data e' maggiore o uguale ad un'altra
 | ||||
|   friend bool operator >=(const TDate& a, const TDate& b); | ||||
|   // @cmember Controlla se 2 date sono uguali
 | ||||
|   friend bool operator ==(const TDate& a, const TDate& b); | ||||
|   // @cmember Controlla se una 2 date sono diverse
 | ||||
|   friend bool operator !=(const TDate& a, const TDate& b); | ||||
| 
 | ||||
|   // @access Public Member
 | ||||
| public: | ||||
|   // @FPUB
 | ||||
|   char* string(TDate_mgafmt year  = def, char sep = '-', TDate_mgafmt day = def,  | ||||
|                TDate_mgafmt month = def, TDate_order ord = gma_date) const ; | ||||
|   // @cmember Ritorna la data in formato di stringa (anche in formato ANSI)
 | ||||
|   char* string(TDate_mgafmt year=def,char sep='-',TDate_mgafmt day=def,TDate_mgafmt month=def,TDate_order ord=gma_date) const ; | ||||
|    | ||||
|   // @DES Ritorna la data in formato di stringa (anche in formato ANSI)
 | ||||
|   // @FPUB
 | ||||
|   int     day() const ; // Ritorna il giorno
 | ||||
|   int     month() const ; // Ritorna il mese
 | ||||
|   int     year() const ; // Ritorna l'anno
 | ||||
|   int     wday() const ; // ritorna il giorno della settimana (0 = domenica)
 | ||||
|   void    addmonth(int nmonth = 1); // Aggiunge dei mesi
 | ||||
|   void    addyear(int nyear = 1); // Aggiunge degli anni
 | ||||
|   bool    ok() const; // Vero se la data e' corretta
 | ||||
|   static  bool isdate(const char*); // Vero se la stringa passata e' una data corretta
 | ||||
|   // @cmember Ritorna il giorno
 | ||||
|   int day() const ; | ||||
|   // @cmember Ritorna il mese
 | ||||
|   int month() const ; | ||||
|   // @cmember Ritorna l'anno
 | ||||
|   int year() const ; | ||||
|   // @cmember Ritorna il giorno della settimana (0 = domenica)
 | ||||
|   int wday() const ; | ||||
|   // @cmember Aggiunge dei mesi
 | ||||
|   void addmonth(int nmonth = 1); | ||||
|   // @cmember Aggiunge degli anni
 | ||||
|   void addyear(int nyear = 1); | ||||
|   // @cmember Controlla se si tratta di una data corretta
 | ||||
|   bool ok() const; | ||||
|   // @cmember Controlla se la stringa passata e' una data corretta
 | ||||
|   static bool isdate(const char*); | ||||
| 
 | ||||
|   // @cmember Ritorna l'ultimo giorno possibile del mese
 | ||||
|   static int last_day(int month, int year); | ||||
|   bool    is_end_month(); | ||||
|   void    set_end_month();        // setta il giorno del mese all'ultimo possibile
 | ||||
|   // implementando la filastrocchina
 | ||||
|   // @cmember Controlla se il giorno e' l'ultimo del mese
 | ||||
|   bool is_end_month(); | ||||
|   // @cmember Setta il giorno del mese all'ultimo possibile
 | ||||
|   void set_end_month(); | ||||
|    | ||||
|   void    set_day(int n); | ||||
|   void    set_month(int n);  | ||||
|   void    set_year(int n);  | ||||
|   void    set_format(const char* f); | ||||
|   // @cmember Setta la il giorno
 | ||||
|   void set_day(int n); | ||||
|   // @cmember Setta il mese
 | ||||
|   void set_month(int n); | ||||
|   // @cmember Setta l'anno
 | ||||
|   void set_year(int n); | ||||
|   // @cmember Permette di stabilire il criterio di formattazione delle date
 | ||||
|   void set_format(const char* f); | ||||
|    | ||||
|   // @DES Ridefiniti gli operatori: += -= ++ -- >> e <<
 | ||||
|   // @FPUB
 | ||||
|   TDate& operator +=(const long nday)  { _val += nday; return *this; } | ||||
|   TDate& operator -=(const long   nday)  { _val -= nday; return *this; } | ||||
|   TDate& operator ++()  { _val++; return *this; } | ||||
|   TDate& operator --()  { _val--; return *this; } | ||||
|   // @cmember Incrementa la data di un certo numero di giorni
 | ||||
|   TDate& operator +=(const long nday) | ||||
|   { _val += nday; return *this; } | ||||
|   // @cmember Decrementa la data di un certo numero di giorni
 | ||||
|   TDate& operator -=(const long nday) | ||||
|   { _val -= nday; return *this; } | ||||
|   // @cmember Incrementa la data di un giorno
 | ||||
|   TDate& operator ++() | ||||
|   { _val++; return *this; } | ||||
|   // @cmember Decrementa la data di un giorno
 | ||||
|   TDate& operator --() | ||||
|   { _val--; return *this; } | ||||
| 
 | ||||
|   // @cmember Stampa sull'output passato la data
 | ||||
|   void print_on(ostream& out) const ; | ||||
|   // @cmember Legge dall'input passato la data
 | ||||
|   void read_from(istream& in) ; | ||||
| 
 | ||||
|   operator long() const { return _val; } | ||||
|   // @cmember Ritorna la data in valore numerico
 | ||||
|   operator long() const | ||||
|   { return _val; } | ||||
|    | ||||
|   operator long*() { return &_val;} | ||||
|   // @cmember Ritorna l'indirizzo della data in valore numerico
 | ||||
|   operator long*() | ||||
|   { return &_val;} | ||||
|    | ||||
|   // @cmember void | operator const char*() const | | Ritorna la data in formato stringa (chiama <mf TDate::String>)
 | ||||
|   operator const char*() const ; | ||||
|   // @cmember Assegna la data passata come stringa
 | ||||
|   TDate& operator =(const char* s); | ||||
|   TDate& operator =(long val) { _val = val; return *this;} | ||||
|   TDate& operator =(const TDate& d) { _val = d._val; return *this;} | ||||
|   // @cmember Assegna la data passato come valore numerico
 | ||||
|   TDate& operator =(long val) | ||||
|   { _val = val; return *this;} | ||||
|   // @cmember Assegna la data passata come oggetto data
 | ||||
|   TDate& operator =(const TDate& d) | ||||
|   { _val = d._val; return *this;} | ||||
| 
 | ||||
|   // @cmember Costruttore
 | ||||
|   TDate(const TDate& d); | ||||
|   // @cmember Costruttore
 | ||||
|   TDate(long l); | ||||
|   // @cmember Costruttore
 | ||||
|   TDate(const char* s); | ||||
|   // @cmember Costruttore
 | ||||
|   TDate(int day = 0, int month = 0, int year = 0); | ||||
| }; | ||||
| 
 | ||||
| // @FPUB
 | ||||
| TDate& operator +(const TDate& a, long nday) ; | ||||
| TDate& operator +(const long nday, const TDate& b) ; | ||||
| TDate& operator -(const TDate& a, long nday) ; | ||||
| inline bool operator <(const TDate& a, const TDate& b) { return a._val < b._val;} | ||||
| inline bool operator >(const TDate& a, const TDate& b) { return a._val > b._val;} | ||||
| inline bool operator <=(const TDate& a, const TDate& b) { return a._val <= b._val;} | ||||
| inline bool operator >=(const TDate& a, const TDate& b) { return a._val >= b._val;} | ||||
| inline bool operator ==(const TDate& a, const TDate& b) { return a._val == b._val;} | ||||
| inline bool operator !=(const TDate& a, const TDate& b) { return a._val != b._val;} | ||||
| void swap(TDate& a, TDate& b) ; // Scambia la data a con la data b
 | ||||
| const TDate& fnc_min(const TDate& a, const TDate& b) ; // Ritorna la data piu' piccola tra a e b
 | ||||
| const TDate& fnc_max(const TDate& a, const TDate& b) ; // Ritorna la data piu' grande tra a e b
 | ||||
| // @END
 | ||||
| 
 | ||||
| const char* itom(byte month);     // Ritorna il nome del mese (1-12)
 | ||||
| const char* itow(byte dayofweek); // Ritorna il nome del giorno (1-7)
 | ||||
| 
 | ||||
| // @DPUB
 | ||||
| 
 | ||||
| // @func inline bool | operator <gt> | Controlla se una data e' minore di un'altra
 | ||||
| //
 | ||||
| // @rdesc Ritorna i seguenti valori
 | ||||
| //
 | ||||
| // @flag TRUE | Se <p a> e' maggiore di <p b>
 | ||||
| // @flag FALSE | Se <p a> non e' maggiore di <p b>
 | ||||
| inline bool operator <( | ||||
|   const TDate& a,  // @parm Prima data da confrontare
 | ||||
|   const TDate& b)  // @parm Secondo data da confrontare
 | ||||
| { return a._val < b._val;} | ||||
| 
 | ||||
| // @func inline bool | operator <lt> | Controlla se una data e' maggiore di un'altra
 | ||||
| //
 | ||||
| // @rdesc Ritorna i seguenti valori
 | ||||
| //
 | ||||
| // @flag TRUE | Se <p a> e' minore di <p b>
 | ||||
| // @flag FALSE | Se <p a> non e' minore di <p b>
 | ||||
| inline bool operator >( | ||||
|   const TDate& a,  // @parm Prima data da confrontare
 | ||||
|   const TDate& b)  // @parm Secondo data da confrontare
 | ||||
| { return a._val > b._val;} | ||||
| 
 | ||||
| // @func inline bool | operator <lt>= | Controlla se una data e' minore o ugaule ad un'altra
 | ||||
| //
 | ||||
| // @rdesc Ritorna i seguenti valori
 | ||||
| //
 | ||||
| // @flag TRUE | Se <p a> e' minore o uguale a <p b>
 | ||||
| // @flag FALSE | Se <p a> e' maggiore di <p b>
 | ||||
| inline bool operator <=( | ||||
|   const TDate& a,  // @parm Prima data da confrontare
 | ||||
|   const TDate& b)  // @parm Secondo data da confrontare
 | ||||
| { return a._val <= b._val;} | ||||
| 
 | ||||
| // @func inline bool | operator <gt>= | Controlla se una data e' maggiore o uguale ad un'altra
 | ||||
| //
 | ||||
| // @rdesc Ritorna i seguenti valori
 | ||||
| //
 | ||||
| // @flag TRUE | Se <p a> e' maggiore o ugaule a <p b>
 | ||||
| // @flag FALSE | Se <p a> e' minore di <p b>
 | ||||
| inline bool operator >=( | ||||
|   const TDate& a,  // @parm Prima data da confrontare
 | ||||
|   const TDate& b)  // @parm Secondo data da confrontare
 | ||||
| { return a._val >= b._val;} | ||||
| 
 | ||||
| // @func inline bool | operator == | Controlla se 2 date sono uguali
 | ||||
| //
 | ||||
| // @rdesc Ritorna i seguenti valori
 | ||||
| //
 | ||||
| // @flag TRUE | Se le due date sono uguali
 | ||||
| // @flag FALSE | Se le due date non sono uguali
 | ||||
| inline bool operator ==( | ||||
|   const TDate& a,  // @parm Prima data da confrontare
 | ||||
|   const TDate& b)  // @parm Secondo data da confrontare
 | ||||
| { return a._val == b._val;} | ||||
| // @func inline bool | operator != | Controlla se 2 date sono diverse
 | ||||
| //
 | ||||
| // @rdesc Ritorna i seguenti valori
 | ||||
| //
 | ||||
| // @flag TRUE | Se le due date sono diverse
 | ||||
| // @flag FALSE | Se le due date non sono diverse
 | ||||
| inline bool operator !=( | ||||
|   const TDate& a,  // @parm Prima data da confrontare
 | ||||
|   const TDate& b)  // @parm Secondo data da confrontare
 | ||||
| { return a._val != b._val;} | ||||
| 
 | ||||
| void swap(TDate& a, TDate& b) ; | ||||
| const TDate& fnc_min(const TDate& a, const TDate& b) ; | ||||
| const TDate& fnc_max(const TDate& a, const TDate& b) ; | ||||
| 
 | ||||
| const char* itom(byte month); | ||||
| const char* itow(byte dayofweek); | ||||
| 
 | ||||
| const TDate botime(0,0,0), eotime(31,12,2050); | ||||
| // @END
 | ||||
| 
 | ||||
| #endif // __DATE_H
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user