]> git.llucax.com Git - z.facultad/75.42/string.git/blobdiff - universalstring.cpp
Se agrega un primera version del tp.
[z.facultad/75.42/string.git] / universalstring.cpp
index 68d09f586025bfec15ef7835679ffd6ee6847060..245eac682a7bb27e46b53012ba2131e96fe34924 100644 (file)
  * $Id$
  */
 
  * $Id$
  */
 
+#include "ascii.h"
+#include "unicode.h"
 #include "universalstring.h"
 #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;
+#include "quicksort.h"
+#include <iostream>
+#include <vector>
+
+using namespace std;
+
+int main(void) {
+
+    // Ascii.
+    UniversalString< Ascii > sa("Hola mundo");
+//    cout << sa << endl;
+    cin >> sa;
+    cout << sa << endl;
+/*
+    // Unicode.
+    UniversalString< Unicode > su("Chau mundo");
+    cout << su << endl;
+    cin >> su;
+    cout << su << endl;
+
+    // Conversión.
+    sa = su;
+    cout << su << endl;
+*/
+    // Agrego cosas al vector para ordenar.
+    vector< UniversalString< Ascii > > v;
+    v.push_back(sa);
+    v.push_back(UniversalString< Ascii >("Hola mundo!"));
+    v.push_back(UniversalString< Ascii >("Chau mundo!"));
+    // Imprimo.
+    cout << "Sin ordenar (" << v.size() << "):" << endl;
+    for (int i = 0; i < v.size(); i++) {
+        cout << v[i] << endl;
     }
     }
-    // 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;
+    // Ordeno.
+    quicksort(v, 0, 2);
+    // Imprimo.
+    cout << "Ordenado:" << endl;
+    copy(v.begin(), v.end(), ostream_iterator< UniversalString< Ascii > >(cout,
+                "\n"));
+    
+    return 0;
 }
 
 }