1 /* vim: set et sts=4 sw=4 fdm=indent 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:07 ART 2003
23 Unicode::Unicode(short c): caracter(c) {
25 std::cerr << "En constructor de Unicode." << std::endl;
29 Unicode::Unicode(const Unicode& unicode): caracter(unicode.caracter) {
31 std::cerr << "En constructor de copia de Unicode." << std::endl;
35 Unicode::~Unicode(void) {
37 std::cerr << "En destructor de Unicode." << std::endl;
41 Unicode& Unicode::operator=(const Unicode& unicode) {
43 std::cerr << "En operator= de Unicode." << std::endl;
45 caracter = unicode.caracter;
49 bool Unicode::operator<(const Unicode& unicode) const {
51 std::cerr << "En operator< de Unicode." << std::endl;
53 return caracter < unicode.caracter;
56 bool Unicode::operator==(const Unicode& unicode) const {
58 std::cerr << "En operator== de Unicode." << std::endl;
60 return caracter == unicode.caracter;
63 Unicode::operator char(void) const {
65 std::cerr << "En cast de Unicode a char." << std::endl;
67 return static_cast<char>(caracter);
70 std::ostream& operator<<(std::ostream& out, const Unicode& unicode) {
72 std::cerr << "En operator<< de Unicode." << std::endl;
74 // Imprime el caracter como 2 caracteres ASCII.
75 // Si el primer caracter (bits mas significativos) es cero, entonces no lo
76 // imprime (es ASCII "puro").
77 if (unicode.caracter >> 8) {
78 out << static_cast<char>(unicode.caracter >> 8);
80 return out << static_cast<char>(unicode.caracter);
83 std::istream& operator>>(std::istream& in, Unicode& unicode) {
85 std::cerr << "En operator>> de Unicode." << std::endl;
88 // Lee el primer caracter ASCII.
90 // Lo asigno como un short cuyos bits menos significativos son los del
92 unicode.caracter = static_cast<short>(c);