* $Id$
*/
+#include "ascii.h"
+#include "unicode.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;
}