]> git.llucax.com Git - z.facultad/75.42/string.git/commitdiff
Se agregan mas clases del TP.
authorLeandro Lucarella <llucax@gmail.com>
Fri, 26 Sep 2003 23:20:05 +0000 (23:20 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Fri, 26 Sep 2003 23:20:05 +0000 (23:20 +0000)
ascii.cpp
ascii.h
unicode.cpp [new file with mode: 0644]
unicode.h [new file with mode: 0644]
universalstring.cpp [new file with mode: 0644]
universalstring.h [new file with mode: 0644]

index f2dee218b9332ceb4796367297a9715d1bcd774e..f4b72d8814b1cd91602bbef2ccddf0e0fcb1387d 100644 (file)
--- a/ascii.cpp
+++ b/ascii.cpp
 #   include <iostream>
 #endif
 
 #   include <iostream>
 #endif
 
+Ascii::Ascii(char c = '0'): caracter(c) {
+#ifdef DEBUG
+    std::cerr << "En constructor de Ascii." << std::endl;
+#endif
+}
+
+Ascii::Ascii(const Ascii& ascii): caracter(ascii.caracter) {
+#ifdef DEBUG
+    std::cerr << "En constructor de copia de Ascii." << std::endl;
+#endif
+}
+
+Ascii::~Ascii(void) {
+#ifdef DEBUG
+    std::cerr << "En destructor de Ascii." << std::endl;
+#endif
+}
+
+Ascii& Ascii::operator=(const Ascii& ascii) {
+#ifdef DEBUG
+    std::cerr << "En operator= de Ascii." << std::endl;
+#endif
+    caracter = ascii.caracter;
+    return *this;
+}
+
+bool Ascii::operator<(const Ascii& ascii) {
+#ifdef DEBUG
+    std::cerr << "En operator< de Ascii." << std::endl;
+#endif
+    return caracter < ascii.caracter;
+}
+
+bool Ascii::operator==(const Ascii& ascii) {
+#ifdef DEBUG
+    std::cerr << "En operator== de Ascii." << std::endl;
+#endif
+    return caracter == ascii.caracter;
+}
+
+short Ascii::operator short(void) {
+#ifdef DEBUG
+    std::cerr << "En cast de Ascii a short." << std::endl;
+#endif
+    return static_cast<short>(caracter);
+}
+
 /// Volcado a un stream de salida.
 std::ostream& operator<<(std::ostream& out, const Ascii& ascii) {
 #ifdef DEBUG
 /// Volcado a un stream de salida.
 std::ostream& operator<<(std::ostream& out, const Ascii& ascii) {
 #ifdef DEBUG
diff --git a/ascii.h b/ascii.h
index 78201b53e9779d8dc74fde93f96cd40f43599c07..cbf9f94b143c81f042f03cec76f2121d2777103d 100644 (file)
--- a/ascii.h
+++ b/ascii.h
@@ -33,50 +33,25 @@ class Ascii {
     public:
 
         /// Constructor.
     public:
 
         /// Constructor.
-        Ascii(char c = '0'): caracter(c) {
-#ifdef DEBUG
-            std::cerr << "En constructor de Ascii." << std::endl;
-#endif
-        }
+        Ascii(char c = '0');
 
         /// Constructor de copia.
 
         /// Constructor de copia.
-        Ascii(const Ascii& ascii): caracter(ascii.caracter) {
-#ifdef DEBUG
-            std::cerr << "En constructor de copia de Ascii." << std::endl;
-#endif
-        }
+        Ascii(const Ascii& ascii);
 
         /// Destructor.
 
         /// Destructor.
-        virtual ~Ascii(void) {
-#ifdef DEBUG
-            std::cerr << "En destructor de Ascii." << std::endl;
-#endif
-        }
+        virtual ~Ascii(void);
 
         /// Asignación de una instancia a otra.
 
         /// 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;
-        }
+        Ascii& operator=(const Ascii& ascii);
 
         /// Comparación por menor de dos instancias.
 
         /// 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;
-        }
+        bool operator<(const Ascii& ascii);
 
         /// Comparación por igual de dos instancias.
 
         /// 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;
-        }
+        bool operator==(const Ascii& ascii);
+
+        /// Cast a short.
+        short int Ascii::operator short int(void);
 
         /// Volcado a un stream de salida.
         friend std::ostream& operator<<(std::ostream& out, const Ascii& ascii);
 
         /// Volcado a un stream de salida.
         friend std::ostream& operator<<(std::ostream& out, const Ascii& ascii);
diff --git a/unicode.cpp b/unicode.cpp
new file mode 100644 (file)
index 0000000..f1a0ad7
--- /dev/null
@@ -0,0 +1,85 @@
+/* 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 "unicode.h"
+
+#ifdef DEBUG
+#   include <iostream>
+#endif
+
+Unicode::Unicode(short c = 0): caracter(c) {
+#ifdef DEBUG
+    std::cerr << "En constructor de Unicode." << std::endl;
+#endif
+}
+
+Unicode::Unicode(const Unicode& unicode): caracter(unicode.caracter) {
+#ifdef DEBUG
+    std::cerr << "En constructor de copia de Unicode." << std::endl;
+#endif
+}
+
+Unicode::~Unicode(void) {
+#ifdef DEBUG
+    std::cerr << "En destructor de Unicode." << std::endl;
+#endif
+}
+
+Unicode& Unicode::operator=(const Unicode& unicode) {
+#ifdef DEBUG
+    std::cerr << "En operator= de Unicode." << std::endl;
+#endif
+    caracter = unicode.caracter;
+    return *this;
+}
+
+bool Unicode::operator<(const Unicode& unicode) {
+#ifdef DEBUG
+    std::cerr << "En operator< de Unicode." << std::endl;
+#endif
+    return caracter < unicode.caracter;
+}
+
+bool Unicode::operator==(const Unicode& unicode) {
+#ifdef DEBUG
+    std::cerr << "En operator== de Unicode." << std::endl;
+#endif
+    return caracter == unicode.caracter;
+}
+
+char Unicode::operator char(void) {
+#ifdef DEBUG
+    std::cerr << "En cast de Unicode a char." << std::endl;
+#endif
+    return static_cast<char>(caracter);
+}
+
+/// Volcado a un stream de salida.
+std::ostream& operator<<(std::ostream& out, const Unicode& unicode) {
+#ifdef DEBUG
+    std::cerr << "En operator<< de Unicode." << std::endl;
+#endif
+    return out << unicode.caracter;
+}
+
+/// Captura desde un stream de entrada.
+std::istream& operator>>(std::istream& in, const Unicode& unicode) {
+#ifdef DEBUG
+    std::cerr << "En operator>> de Unicode." << std::endl;
+#endif
+    return in >> unicode.caracter;
+}
+
diff --git a/unicode.h b/unicode.h
new file mode 100644 (file)
index 0000000..1eeb1d8
--- /dev/null
+++ b/unicode.h
@@ -0,0 +1,64 @@
+/* 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 UNICODE_H
+#define UNICODE_H
+
+#include <ostream>
+#include <istream>
+
+#ifdef DEBUG
+#   include <iostream>
+#endif
+
+/// Caracter Unicode.
+class Unicode {
+
+        /// Caracter Unicode almacenado.
+        char caracter;
+
+    public:
+
+        /// Constructor.
+        Unicode(short c = 0);
+
+        /// Constructor de copia.
+        Unicode(const Unicode& unicode);
+
+        /// Destructor.
+        virtual ~Unicode(void);
+
+        /// Asignación de una instancia a otra.
+        Unicode& operator=(const Unicode& unicode);
+
+        /// Comparación por menor de dos instancias.
+        bool operator<(const Unicode& unicode);
+
+        /// Comparación por igual de dos instancias.
+        bool operator==(const Unicode& unicode);
+
+        /// Cast a char.
+        char Unicode::operator char(void);
+
+        /// Volcado a un stream de salida.
+        friend std::ostream& operator<<(std::ostream& out, const Unicode& unicode);
+
+        /// Captura desde un stream de entrada.
+        friend std::istream& operator>>(std::istream& in, const Unicode& unicode);
+
+};
+
+#endif // UNICODE_H
diff --git a/universalstring.cpp b/universalstring.cpp
new file mode 100644 (file)
index 0000000..68d09f5
--- /dev/null
@@ -0,0 +1,96 @@
+/* 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 "universalstring.h"
+#include <cstdlib>
+
+#ifdef DEBUG
+#   include <iostream>
+#endif
+
+UniversalString::UniversalString(void): string(NULL) {
+#ifdef DEBUG
+    std::cerr << "En constructor de UniversalString." << std::endl;
+#endif
+}
+
+UniversalString::UniversalString(const UniversalString& str): string(NULL) {
+#ifdef DEBUG
+    std::cerr << "En constructor de copia de UniversalString." << std::endl;
+#endif
+    // Llamo al operador igual.
+    *this = str;
+}
+
+UniversalString::~UniversalString(void) {
+#ifdef DEBUG
+    std::cerr << "En destructor de UniversalString." << std::endl;
+#endif
+}
+
+UniversalString& UniversalString::operator=(const UniversalString& str) {
+#ifdef DEBUG
+    std::cerr << "En operator= de UniversalString." << std::endl;
+#endif
+    // Si tengo memoria reservada, la libero.
+    if (string) {
+        delete string;
+        string = NULL;
+    }
+    // Si el string a copiar no es nulo, aloco memoria y copio.
+    if (str.string) { // TODO creo que necesito len y max.
+        string = new T[strlen(str.string) + 1];
+    }
+    return *this;
+}
+
+bool UniversalString::operator<(const UniversalString& str) {
+#ifdef DEBUG
+    std::cerr << "En operator< de UniversalString." << std::endl;
+#endif
+    return caracter < str.caracter;
+}
+
+bool UniversalString::operator==(const UniversalString& str) {
+#ifdef DEBUG
+    std::cerr << "En operator== de UniversalString." << std::endl;
+#endif
+    return caracter == str.caracter;
+}
+
+short UniversalString::operator short(void) {
+#ifdef DEBUG
+    std::cerr << "En cast de UniversalString a short." << std::endl;
+#endif
+    return static_cast<short>(caracter);
+}
+
+/// Volcado a un stream de salida.
+std::ostream& operator<<(std::ostream& out, const UniversalString& str) {
+#ifdef DEBUG
+    std::cerr << "En operator<< de UniversalString." << std::endl;
+#endif
+    return out << str.caracter;
+}
+
+/// Captura desde un stream de entrada.
+std::istream& operator>>(std::istream& in, const UniversalString& str) {
+#ifdef DEBUG
+    std::cerr << "En operator>> de UniversalString." << std::endl;
+#endif
+    return in >> str.caracter;
+}
+
diff --git a/universalstring.h b/universalstring.h
new file mode 100644 (file)
index 0000000..21116a9
--- /dev/null
@@ -0,0 +1,65 @@
+/* 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 UNIVERSALSTRING_H
+#define UNIVERSALSTRING_H
+
+#include <ostream>
+#include <istream>
+
+#ifdef DEBUG
+#   include <iostream>
+#endif
+
+/// String Universal.
+template<class T>
+class UniversalString {
+
+        /// Cadena de caracteres.
+        T* string;
+
+    public:
+
+        /// Constructor.
+        UniversalString(char c = '0');
+
+        /// Constructor de copia.
+        UniversalString(const UniversalString& str);
+
+        /// Destructor.
+        virtual ~UniversalString(void);
+
+        /// Asignación de una instancia a otra.
+        UniversalString& operator=(const UniversalString& str);
+
+        /// Comparación por menor de dos instancias.
+        bool operator<(const UniversalString& str);
+
+        /// Comparación por igual de dos instancias.
+        bool operator==(const UniversalString& str);
+
+        /// Cast a short.
+        short int UniversalString::operator short int(void);
+
+        /// Volcado a un stream de salida.
+        friend std::ostream& operator<<(std::ostream& out, const UniversalString& str);
+
+        /// Captura desde un stream de entrada.
+        friend std::istream& operator>>(std::istream& in, const UniversalString& str);
+
+};
+
+#endif // UNIVERSALSTRING_H