Página principal   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Membros do namespace   Componentes   Declarações  

data.H

Ir para a documentação deste ficheiro.
00001 #ifndef UTILITARIOS_DATATEMPO_DATA_H
00002 #define UTILITARIOS_DATATEMPO_DATA_H
00003 
00004 #include <iostream>
00005 #include <string>
00006 
00007 namespace Utilitarios {
00008 
00011     namespace DataTempo {
00012 
00021         typedef long Duracao;
00022 
00023 
00025         typedef int Dia;
00026 
00027 
00029         typedef int Ano;
00030 
00032         bool eBissexto(Ano ano);
00033 
00034 
00036         enum Mes {
00037             janeiro = 1,
00038             fevereiro,
00039             marco,
00040             abril,
00041             maio,
00042             junho,
00043             julho,
00044             agosto,
00045             setembro,
00046             outubro,
00047             novembro,
00048             dezembro
00049         };
00050 
00051         int const numero_total_de_meses = 12;
00052 
00053         extern std::string nomes_dos_meses[numero_total_de_meses + 1];
00054 
00055         int numeroDeDiasEm(Mes mes, Ano ano);
00056 
00058         Mes& operator ++ (Mes& mes);
00059 
00061         Mes& operator -- (Mes& mes);
00062 
00064         Mes operator ++ (Mes& mes, int);
00065 
00067         Mes operator -- (Mes& mes, int);
00068 
00069 #if __GNUC__ > 1 && __GNUC_MINOR__ >= 96
00070 
00071         Mes& operator += (Mes& mes, int numero_de_meses);
00072 
00074         Mes& operator -= (Mes& mes, int numero_de_meses);
00075 #endif
00076 
00078         Mes operator + (Mes mes, int numero_de_meses);
00079 
00081         Mes operator + (int numero_de_meses, Mes mes);
00082 
00084         int operator - (Mes um_mes, Mes outro_mes);
00085 
00087         Mes operator - (Mes mes, int numero_de_meses);
00088 
00090         std::ostream& operator << (std::ostream& saida, Mes mes);
00091 
00093         std::istream& operator >> (std::istream& entrada, Mes& mes);
00094 
00095 
00097         enum DiaDaSemana {
00098             domingo = 0,
00099             segunda_feira,
00100             terca_feira,
00101             quarta_feira,
00102             quinta_feira,
00103             sexta_feira,
00104             sabado
00105         };
00106 
00107         int const numero_total_de_dias_da_semana = 7;
00108 
00109         extern std::string 
00110         nomes_dos_dias_da_semana[numero_total_de_dias_da_semana];
00111 
00113         DiaDaSemana& operator ++ (DiaDaSemana& dia_da_semana);
00114 
00116         DiaDaSemana& operator -- (DiaDaSemana& dia_da_semana);
00117 
00119         DiaDaSemana operator ++ (DiaDaSemana& dia_da_semana, int);
00120 
00122         DiaDaSemana operator -- (DiaDaSemana& dia_da_semana, int);
00123 
00124 #if __GNUC__ > 1 && __GNUC_MINOR__ >= 96
00125 
00126         DiaDaSemana& operator += (DiaDaSemana& dia_da_semana, 
00127                                   int numero_de_dias);
00128 
00130         DiaDaSemana& operator -= (DiaDaSemana& dia_da_semana, 
00131                                   int numero_de_dias);
00132 #endif
00133 
00136         DiaDaSemana operator + (DiaDaSemana dia_da_semana, int numero_de_dias);
00137 
00140         DiaDaSemana operator + (int numero_de_dias, DiaDaSemana dia_da_semana);
00141 
00144         int operator - (DiaDaSemana um_dia_da_semana, 
00145                         DiaDaSemana outro_dia_da_semana);
00146 
00148         DiaDaSemana operator - (DiaDaSemana dia_da_semana, int numero_de_dias);
00149 
00151         std::ostream& operator << (std::ostream& saida, 
00152                                    DiaDaSemana dia_da_semana);
00153 
00155         std::istream& operator >> (std::istream& entrada, 
00156                                    DiaDaSemana& dia_da_semana);
00157 
00158 
00202         class Data {
00203         public:
00205             Data(Ano ano, Mes mes, Dia dia);
00206 
00208             Data();
00209 
00211             Data(std::istream& entrada);
00212 
00214             Data(long int dia_juliano);
00215 
00217             Ano const& ano() const;
00218 
00220             Mes const& mes() const;
00221 
00223             Dia const& dia() const;
00224 
00226             DiaDaSemana diaDaSemana() const;
00227 
00229             long int diaJuliano() const;
00230 
00232             bool anoEBissexto() const;
00233 
00235             int numeroDeDiasNoMes() const;
00236 
00238             void guarda(std::ostream& saida) const;
00239 
00241             Data& operator ++ ();
00242 
00244             Data& operator -- ();
00245 
00247             Data operator ++ (int);
00248 
00250             Data operator -- (int);
00251 
00253             Data& operator += (Duracao const& duracao);
00254 
00256             Data& operator -= (Duracao const& duracao);
00257 
00259             void carrega(std::istream& entrada);
00260 
00269             static Data actual();
00270 
00275             static void estabeleceDataActualPedidaAoUtilizador();
00276 
00281             static void estabeleceDataActualObtidaDoSistema();
00282 
00283             static int const inicio_do_calendario_gregoriano = 1582;
00285             static int const ano_minimo = inicio_do_calendario_gregoriano + 1;
00286 
00287         private:
00288             Ano ano_;
00289             Mes mes_;
00290             Dia dia_;
00291 
00292             static bool data_actual_obtida_do_sistema;
00293 
00294             bool cumpreInvariante() const;
00295         };
00296 
00298         bool operator == (Data const& uma_data, Data const& outra_data);
00299 
00301         bool operator != (Data const& uma_data, Data const& outra_data);
00302 
00304         bool operator < (Data const& uma_data, Data const& outra_data);
00305 
00307         bool operator > (Data const& uma_data, Data const& outra_data);
00308 
00310         bool operator <= (Data const& uma_data, Data const& outra_data);
00311 
00313         bool operator >= (Data const& uma_data, Data const& outra_data);
00314 
00316         Duracao operator - (Data const& uma_data, Data const& outra_data);
00317 
00319         Data operator - (Data const& data, Duracao const& duracao);
00320 
00322         Data operator + (Data const& data, Duracao const& duracao);
00323 
00325         Data operator + (Duracao const& duracao, Data const& data);
00326 
00328         std::ostream& operator << (std::ostream& saida, Data const& data);
00329 
00331         std::istream& operator >> (std::istream& entrada, Data& data);
00332 
00333     }
00334 }
00335 
00336 #include <Utilitarios/DataTempo/data_impl.H>
00337 
00338 #endif // UTILITARIOS_DATATEMPO_DATA_H

Gerado em Tue Apr 10 15:38:16 2001 para Pacotes por doxygen1.2.6 escrito por Dimitri van Heesch, © 1997-2001