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