Aggiunta documentazione in linea

git-svn-id: svn://10.65.10.50/trunk@1372 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
andrea 1995-05-17 17:05:52 +00:00
parent a699373f91
commit e89e4dfb78
2 changed files with 252 additions and 73 deletions

View File

@ -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",

View File

@ -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