1 /* vim: set et sts=4 sw=4 fdm=marker fmr={,} fdn=1 fo+=t tw=80:
3 * Taller de Programación (75.42).
6 * Ordena texto ASCII o Unicode.
8 * Copyleft 2003 - Leandro Lucarella <llucare@fi.uba.ar>
9 * Puede copiar, modificar y distribuir este programa bajo los términos de
10 * la licencia GPL (http://www.gnu.org/).
12 * Creado: Mon Sep 22 21:00:15 ART 2003
30 /// Caracter Unicode almacenado.
38 /// Constructor de copia.
39 Unicode(const Unicode& unicode);
42 virtual ~Unicode(void);
45 * Indica si el caracter es de fin de línea.
46 * En este caso se toma cualquier caracter cuyos 8 bits más o menos
47 * significatios sean 0xA ("\n"). Probablmente sólo funcione en unix, ya
48 * que para Mac el caracter de nueva línea es 0xD ("/r"). En DOS debería
49 * andar ya que el fin de línea se compone de 2 caracteres: 0xDA, por lo
50 * tanto termina en 0xA y debería ser considerado fin de línea.
54 /// Asignación de una instancia a otra.
55 Unicode& operator=(const Unicode& unicode);
57 /// Comparación por menor de dos instancias.
58 bool operator<(const Unicode& unicode);
60 /// Comparación por igual de dos instancias.
61 bool operator==(const Unicode& unicode);
64 operator char(void) const;
67 operator short(void) const;
69 /// Volcado a un stream de salida.
70 friend std::ostream& operator<<(std::ostream& out,
71 const Unicode& unicode);
74 * Captura desde un stream de entrada.
75 * Toma de a 2 caracteres, suponiendo que la consola puede \e escribir
76 * caracteres unicode. El primer caracter se usa como bits de mayor peso
77 * y el segundo como de menor peso. Por ejemplo, si se ingresa \c a2 se
78 * guarda internamente como el número 24882 ya que
79 * <tt>a = 97 = 0x61</tt>, <tt>2 = 50 = 0x32</tt> por lo que el valor
80 * guardado internamente es igual a <tt>0x6132 = 24882</tt>.
82 friend std::istream& operator>>(std::istream& in,