// guarda un teatro
void Teatro :: guardar (std::ostream & os) const {
char cab = ENCABEZADO_ARCHIVO;
os << "(" << cab << " ";
// Guardar listas x 4
// guardo la lista de salas
os << "[";
int i = 0;
while(i < sals.longitud() - 1) {
sals.iesimo(i).guardar(os);
os << ",";
i++;
}
if (i < sals.longitud) {
os << sals.iesimo(i);
}
os << "]";
os << " ";
// guardo la lista del elenco estable y sus sueldos
os << "[";
i = 0;
while (i < elenco.longitud() - 1) {
os << elenco.iesimo(i) << "," << sueldos.iesimo(i) << ",";
i++;
}
if (i < elenco.longitud()) {
os << elenco.iesimo(i) << "," << sueldos.iesimo(i);
}
os << "]";
os << " ";
// guardo la lista de funciones
os << "[";
i = 0;
while(i < funcs.longitud() - 1) {
funcs.iesimo(i).guardar(os);
os << ",";
i++;
}
if (i < funcs.longitud) {
os << funcs.iesimo(i);
}
os << "]";
os << " ";
// guardo la lista de entradas vendidas
os << "[";
i = 0;
while(i < entradas.longitud() - 1) {
entradas.iesimo(i).guardar(os);
os << ",";
i++;
}
if (i < entradas.longitud) {
os << entradas.iesimo(i);
}
os << "]";
os << ")";
}
// carga un teatro a partir de un input stream
void Teatro :: cargar (std::istream & is) {
char buf;
// nimiedades
is >> buf;
assert(buf == '(');
is >> buf;
assert(buf == 'T');
is >> buf;
assert(buf == ' ');
// leo la lista de salas
Lista<Sala> buf_salas;
is >> buf;
assert(buf == '[');
bool seguir = True;
while(seguir) {
Sala s;
s.cargar(is);
buf_salas.agregarAtras(s);
is >> buf;
// si termino la lista, salgo
if(buf == ']') {
seguir = False;
}
}
salas = buf_salas;
// nimiedades
is >> buf;
assert(buf == ' ');
// leo las listas del elenco estable y sus sueldos
is >> buf;
assert(buf == '[');
Lista<std :: string> buf_elenco;
Lista<int> buf_sueldos;
seguir = True;
while(seguir) {
String temp_actor = "";
Int temp_sueldo;
is >> buf;
if (buf == ']') {
seguir = False;
}
else {
// leo el nombre del actor
while(buf != ',') {
temp_actor += buf;
is >> buf;
}
// leo su sueldo (un int)
is >> temp_sueldo;
// los cargo
buf_elenco.agregarAtras(temp_actor);
buf_sueldos.agregarAtras(temp_sueldo);
// si lo que sigue es una coma, la saco
char p = is.peek();
if (p == ',') {
is >> buf;
}
}
}
elenco = buf_elenco;
sueldos = buf_sueldos;
// nimiedades
is >> buf;
assert(buf == ' ');
// leo la lista de funciones
Lista<Funcion> buf_funciones;
is >> buf;
assert(buf == '[');
seguir = True;
while(seguir) {
Funcion f;
f.cargar(is);
buf_funciones.agregarAtras(f);
is >> buf;
// si termino la lista, salgo
if(buf == ']') {
seguir = False;
}
}
funciones = buf_funciones;
// nimiedades
is >> buf;
assert(buf == ' ');
// leo la lista de entradas vendidas
Lista<Entrada> buf_entradas;
is >> buf;
assert(buf == '[');
seguir = True;
while(seguir) {
Entrada e;
e.cargar(is);
buf_entradas.agregarAtras(e);
is >> buf;
// si termino la lista, salgo
if(buf == ']') {
seguir = False;
}
}
entradas = buf_entradas;
// nimiedades
is >> buf;
assert(buf == ')');
}