-/* vim: set et sts=4 sw=4 fdm=indent fdl=1 fdn=0 fo+=t tw=80:
+/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
*
* Taller de Programación (75.42).
*
- * Ejercicio Número 2:
- * TODO
+ * Ejercicio Número 3:
+ * Lista de figuras.
*
* Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
* Puede copiar, modificar y distribuir este programa bajo los términos de
* $Id$
*/
-#include "dllist.h"
#include "dibujo.h"
-Dibujo::Dibujo(void): figuras() {}
+#ifdef DEBUG
+# include <iostream>
+#endif
+
+Dibujo::Dibujo(void): figuras() {
+#ifdef DEBUG
+ std::cerr << "En constructor de Dibujo." << std::endl;
+#endif
+}
Dibujo::~Dibujo(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de Dibujo." << std::endl;
+#endif
}
-bool Dibujo::agregar_figura(const Figura& figura) {
- return figuras.push(&figura);
+bool Dibujo::agregar_figura(Figura* figura) {
+ return figuras.push(static_cast<void*>(figura));
}
void Dibujo::borrar_todo(void) {
// Saco cada elemento de la lista, liberando su memoria.
while (!figuras.empty()) {
- delete figuras.pop();
+ delete static_cast<Figura*>(figuras.pop());
}
}
-void Dibujo::dibujar(void) {
+void Dibujo::dibujar(std::ostream& out) {
// Dibujo cada elemento.
- for (Figura* f = figuras.begin(); figuras.have_more(); f = figuras.next()) {
- cout << f << endl; // FIXME
+ for (Figura* f = static_cast<Figura*>(figuras.begin());
+ figuras.have_more(); f = static_cast<Figura*>(figuras.next())) {
+ f->dibujar(out);
+ out << std::endl;
}
}