+/* 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