--- /dev/null
+#
+# Taller de Programación (75.42).
+#
+# Ejercicio Número 4:
+# Ordena texto ASCII o Unicode.
+#
+# Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
+# Puede copiar, modificar y distribuir este programa bajo los términos de
+# la licencia GPL (http://www.gnu.org/).
+#
+# Creado: vie sep 19 00:38:51 ART 2003
+#
+# $Id$
+#
+
+# Opciones para el compilador.
+#CXXFLAGS=-ansi -pedantic -Wall -O3
+CXXFLAGS=-ansi -pedantic -Wall -g3 -DDEBUG
+
+# Pruebas.
+TESTS=
+
+# Programa a compilar.
+TARGETS=$(TESTS) tp4
+
+# Regla por defecto.
+all: $(TARGETS)
+
+# Pruebas.
+tests: $(TESTS)
+ ./dllist_test
+
+dllist_test: dllist.o
+
+tp3: dllist.o figura.o rectangulo.o cuadrado.o linea.o circulo.o dibujo.o
+
+dllist.o: dllist.cpp dllist.h
+
+figura.o: figura.cpp figura.h punto.h
+
+linea.o: figura.o linea.cpp linea.h
+
+circulo.o: figura.o circulo.cpp circulo.h
+
+rectangulo.o: figura.o rectangulo.cpp rectangulo.h
+
+cuadrado.o: rectangulo.o cuadrado.cpp cuadrado.h
+
+dibujo.o: dllist.o figura.o dibujo.cpp dibujo.h
+
+
+# Preety-printing del código fuente.
+corrida.txt: tp3
+ @./tp3 > corrida.txt
+
+# Regla para borrar.
+clean:
+ @echo "Limpiando..."
+ @rm -fR $(TARGETS) *.o core tp2 corrida_*.txt html latex* *.ps
+
+# Preety-printing del código fuente.
+FUENTES=dllist.h dllist.cpp punto.h figura.h figura.cpp rectangulo.h \
+ rectangulo.cpp cuadrado.h cuadrado.cpp linea.h linea.cpp circulo.h \
+ circulo.cpp dibujo.h dibujo.cpp tp3.cpp
+code.ps: $(FUENTES)
+ @enscript -j -Ecpp -U2 -C --fancy-header=squeeze --color -pcode.ps \
+ $(FUENTES)
+
+# Informe.
+informe: code.ps corrida.txt
+ @doxygen
+ @cd latex && make refman.pdf && cd ..
+ @doxygen Doxyfile.imprimible
--- /dev/null
+/* vim: set et sts=4 sw=4 fdm=indent fdn=1 fo+=t tw=80:
+ *
+ * Taller de Programación (75.42).
+ *
+ * Ejercicio Número 4:
+ * Ordena texto ASCII o Unicode.
+ *
+ * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
+ * Puede copiar, modificar y distribuir este programa bajo los términos de
+ * la licencia GPL (http://www.gnu.org/).
+ *
+ * Creado: Mon Sep 22 21:00:07 ART 2003
+ *
+ * $Id$
+ */
+
+#include "ascii.h"
+
+#ifdef DEBUG
+# include <iostream>
+#endif
+
+/// Volcado a un stream de salida.
+std::ostream& operator<<(std::ostream& out, const Ascii& ascii) {
+#ifdef DEBUG
+ std::cerr << "En operator<< de Ascii." << std::endl;
+#endif
+ return out << ascii.caracter;
+}
+
+/// Captura desde un stream de entrada.
+std::istream& operator>>(std::istream& in, const Ascii& ascii) {
+#ifdef DEBUG
+ std::cerr << "En operator>> de Ascii." << std::endl;
+#endif
+ return in >> ascii.caracter;
+}
+
--- /dev/null
+/* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
+ *
+ * Taller de Programación (75.42).
+ *
+ * Ejercicio Número 4:
+ * Ordena texto ASCII o Unicode.
+ *
+ * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
+ * Puede copiar, modificar y distribuir este programa bajo los términos de
+ * la licencia GPL (http://www.gnu.org/).
+ *
+ * Creado: Mon Sep 22 21:00:15 ART 2003
+ *
+ * $Id$
+ */
+
+#ifndef ASCII_H
+#define ASCII_H
+
+#include <ostream>
+#include <istream>
+
+#ifdef DEBUG
+# include <iostream>
+#endif
+
+/// Caracter ASCII.
+class Ascii {
+
+ /// Caracter ASCII almacenado.
+ char caracter;
+
+ public:
+
+ /// Constructor.
+ Ascii(char c = '0'): caracter(c) {
+#ifdef DEBUG
+ std::cerr << "En constructor de Ascii." << std::endl;
+#endif
+ }
+
+ /// Constructor de copia.
+ Ascii(const Ascii& ascii): caracter(ascii.caracter) {
+#ifdef DEBUG
+ std::cerr << "En constructor de copia de Ascii." << std::endl;
+#endif
+ }
+
+ /// Destructor.
+ virtual ~Ascii(void) {
+#ifdef DEBUG
+ std::cerr << "En destructor de Ascii." << std::endl;
+#endif
+ }
+
+ /// Asignación de una instancia a otra.
+ Ascii& operator=(const Ascii& ascii) {
+#ifdef DEBUG
+ std::cerr << "En operator= de Ascii." << std::endl;
+#endif
+ caracter = ascii.caracter;
+ return *this;
+ }
+
+ /// Comparación por menor de dos instancias.
+ bool operator<(const Ascii& ascii) {
+#ifdef DEBUG
+ std::cerr << "En operator< de Ascii." << std::endl;
+#endif
+ return caracter < ascii.caracter;
+ }
+
+ /// Comparación por igual de dos instancias.
+ bool operator==(const Ascii& ascii) {
+#ifdef DEBUG
+ std::cerr << "En operator== de Ascii." << std::endl;
+#endif
+ return caracter == ascii.caracter;
+ }
+
+ /// Volcado a un stream de salida.
+ friend std::ostream& operator<<(std::ostream& out, const Ascii& ascii);
+
+ /// Captura desde un stream de entrada.
+ friend std::istream& operator>>(std::istream& in, const Ascii& ascii);
+
+};
+
+#endif // ASCII_H