Página principal   Módulos   Lista de namespaces   Hierarquia de classes   Lista de componentes   Lista de ficheiros   Membros do namespace   Componentes membro   Ficheiros membro   Páginas relacionadas  

data.H

Ir para a documentação deste ficheiro.
00001 
00006 #ifndef UTILITARIOS_DATA_H
00007 #define UTILITARIOS_DATA_H
00008 
00009 #include <iostream>
00010 #include <string>
00011 
00012 namespace Utilitarios {
00013 
00019 
00020 
00021     
00031     typedef long Duracao;
00032     
00036     typedef int Dia;
00037     
00041     typedef int Ano;
00042     
00046     enum Mes {
00047         janeiro = 1,
00048         fevereiro,
00049         marco,
00050         abril,
00051         maio,
00052         junho,
00053         julho,
00054             agosto,
00055         setembro,
00056         outubro,
00057         novembro,
00058         dezembro
00059     };
00060 
00064     int const numero_total_de_meses = 12;
00065 
00070     extern std::string nomes_dos_meses[numero_total_de_meses + 1];
00071 
00075     enum DiaDaSemana {
00076         domingo = 0,
00077         segunda_feira,
00078         terca_feira,
00079         quarta_feira,
00080         quinta_feira,
00081         sexta_feira,
00082         sabado
00083     };
00084     
00088     int const numero_total_de_dias_da_semana = 7;
00089     
00094     extern std::string 
00095     nomes_dos_dias_da_semana[numero_total_de_dias_da_semana];
00096 
00098 
00100 
00101 
00107     bool eBissexto(Ano const ano);
00108     
00114     int numeroDeDiasEm(Mes const mes, Ano const ano);
00115     
00117     
00119 
00120 
00129     Mes& operator++(Mes& mes);
00130     
00139     Mes& operator--(Mes& mes);
00140     
00149     Mes operator++(Mes& mes, int);
00150     
00159     Mes operator--(Mes& mes, int);
00160 
00169     Mes& operator+=(Mes& mes, int const numero_de_meses);
00170     
00179     Mes& operator-=(Mes& mes, int const numero_de_meses);
00180 
00189     Mes operator+(Mes const mes, int const numero_de_meses);
00190     
00191 
00200     Mes operator+(int const numero_de_meses, Mes const mes);
00201     
00209     int operator-(Mes const um_mes, Mes const outro_mes);
00210     
00219     Mes operator-(Mes const mes, int const numero_de_meses);
00220     
00228     std::ostream& operator<<(std::ostream& saida, Mes const mes);
00229     
00238     std::istream& operator>>(std::istream& entrada, Mes& mes);
00239     
00241     
00243 
00244     
00253     DiaDaSemana& operator++(DiaDaSemana& dia_da_semana);
00254     
00263     DiaDaSemana& operator--(DiaDaSemana& dia_da_semana);
00264     
00273     DiaDaSemana operator++(DiaDaSemana& dia_da_semana, int);
00274     
00283     DiaDaSemana operator--(DiaDaSemana& dia_da_semana, int);
00284     
00293     DiaDaSemana& operator+=(DiaDaSemana& dia_da_semana, 
00294                             int const numero_de_dias);
00295     
00304     DiaDaSemana& operator-=(DiaDaSemana& dia_da_semana, 
00305                             int const numero_de_dias);
00306 
00316     DiaDaSemana operator+(DiaDaSemana const dia_da_semana, 
00317                           int const numero_de_dias);
00318     
00328     DiaDaSemana operator+(int const numero_de_dias, 
00329                           DiaDaSemana const dia_da_semana);
00330     
00340     int operator-(DiaDaSemana const um_dia_da_semana, 
00341                   DiaDaSemana const outro_dia_da_semana);
00342     
00352     DiaDaSemana operator-(DiaDaSemana const dia_da_semana, 
00353                           int const numero_de_dias);
00354     
00363     std::ostream& operator<<(std::ostream& saida, 
00364                              DiaDaSemana const dia_da_semana);
00365     
00374     std::istream& operator>>(std::istream& entrada, 
00375                              DiaDaSemana& dia_da_semana);
00376     
00378 
00402     class Data {
00403     public:
00405 
00406 
00411         Data(Ano const ano, Mes const mes, Dia const dia);
00412         
00418         Data();
00419         
00426         Data(long const dia_juliano);
00427 
00429 
00431 
00432 
00438         Ano const& ano() const;
00439         
00445         Mes const& mes() const;
00446         
00452         Dia const& dia() const;
00453         
00459         DiaDaSemana diaDaSemana() const;
00460         
00468         long int diaJuliano() const;
00469 
00476         int numeroDeDiasNoMes() const;
00477 
00479         
00481 
00482 
00488         bool anoEBissexto() const;
00489         
00491 
00493 
00494 
00503         Data(std::istream& entrada);
00504 
00512         void carregaDe(std::istream& entrada);
00513 
00522         void guardaEm(std::ostream& saida) const;
00523 
00525         
00527 
00528 
00534         Data& operator++();
00535         
00541         Data& operator--();
00542         
00548         Data operator++(int);
00549         
00555         Data operator--(int);
00556         
00562         Data& operator+=(Duracao const& duracao);
00563         
00569         Data& operator-=(Duracao const& duracao);
00570         
00572         
00574 
00575 
00586         static Data actual();
00587         
00596         static void estabeleceDataActualPedidaAoUtilizador();
00597         
00606         static void estabeleceDataActualObtidaDoSistema();
00607         
00609 
00611 
00612 
00614         static Ano const inicio_do_calendario_gregoriano = 1582;
00615 
00619         static int const ano_minimo = inicio_do_calendario_gregoriano + 1;
00620         
00621     private:
00622         Ano ano_;
00623         Mes mes_;
00624         Dia dia_;
00625         
00626         static bool data_actual_obtida_do_sistema;
00627         
00634         bool cumpreInvariante() const;
00635     };
00636     
00638 
00639 
00647     bool operator==(Data const& uma_data, Data const& outra_data);
00648     
00656     bool operator!=(Data const& uma_data, Data const& outra_data);
00657     
00665     bool operator<(Data const& uma_data, Data const& outra_data);
00666     
00674     bool operator>(Data const& uma_data, Data const& outra_data);
00675     
00683     bool operator<=(Data const& uma_data, Data const& outra_data);
00684     
00692     bool operator>=(Data const& uma_data, Data const& outra_data);
00693     
00702     Duracao operator-(Data const& uma_data, Data const& outra_data);
00703     
00711     Data operator-(Data const& data, Duracao const& duracao);
00712     
00720     Data operator+(Data const& data, Duracao const& duracao);
00721     
00729     Data operator+(Duracao const& duracao, Data const& data);
00730     
00738     std::ostream& operator<<(std::ostream& saida, Data const& data);
00739     
00748     std::istream& operator>>(std::istream& entrada, Data& data);
00749 
00751 }
00752 
00753 #include <Utilitarios/data_impl.H>
00754 
00755 #endif // UTILITARIOS_DATA_H

Gerado em Tue Dec 3 15:19:34 2002 para Pacotes por doxygen1.3-rc1