#include <iostream>
#include <cassert>
inline FilmeEstrangeiro::FilmeEstrangeiro(std::string const& nome,
std::string const& realizador,
int duracao,
std::string const& pais,
std::string const& lingua)
: Filme(nome, realizador, duracao), lingua_(lingua), pais_(pais)
{
assert(0 <= duracao);
assert(cumpreInvariante());
}
inline FilmeEstrangeiro::FilmeEstrangeiro(std::istream& entrada)
: Filme(entrada)
{
assert(entrada);
std::getline(entrada, pais_ );
std::getline(entrada, lingua_);
if(not entrada)
throw Erros::ErroAoCarregar("FilmeEstrangeiro");
assert(cumpreInvariante());
}
inline std::string const& FilmeEstrangeiro::pais() const
{
assert(cumpreInvariante());
return pais_;
}
inline std::string const& FilmeEstrangeiro::lingua() const
{
assert(cumpreInvariante());
return lingua_;
}
inline void FilmeEstrangeiro::carregaDe(std::istream& entrada)
{
assert(cumpreInvariante());
*this = FilmeEstrangeiro(entrada);
assert(cumpreInvariante());
}
inline void FilmeEstrangeiro::mostraEm(std::ostream& saida) const
{
assert(cumpreInvariante());
Filme::mostraEm(saida);
saida << "País:\t\t" << pais() << std::endl
<< "Língua:\t\t" << lingua() << std::endl;
}
inline bool FilmeEstrangeiro::cumpreInvariante() const
{
return true;
}
inline EdicaoDoRealizador::EdicaoDoRealizador(std::string const& nome,
std::string const& realizador,
int duracao,
std::string const& alteracoes)
: Filme(nome, realizador, duracao), alteracoes_(alteracoes)
{
assert(0 <= duracao);
assert(cumpreInvariante());
}
inline EdicaoDoRealizador::EdicaoDoRealizador(std::istream& entrada)
: Filme(entrada)
{
assert(entrada);
std::getline(entrada, alteracoes_ );
if(not entrada)
throw Erros::ErroAoCarregar("FilmeEstrangeiro");
assert(cumpreInvariante());
}
inline std::string EdicaoDoRealizador::alteracoes() const
{
assert(cumpreInvariante());
return alteracoes_;
}
inline void EdicaoDoRealizador::carregaDe(std::istream& entrada)
{
assert(cumpreInvariante());
*this = EdicaoDoRealizador(entrada);
assert(cumpreInvariante());
}
inline void EdicaoDoRealizador::mostraEm(std::ostream& saida) const
{
assert(cumpreInvariante());
Filme::mostraEm(saida);
saida << "Alterações:\t" << alteracoes() << std::endl;
}
inline bool EdicaoDoRealizador::cumpreInvariante() const
{
return true;
}