]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/indicemagico.h
Varios cambios para terminar de integrar. Ya está casi andando perfecto, sólo hay...
[z.facultad/75.68/celdas.git] / trunk / src / indicemagico.h
index e52b2207cee66e19fd92458298a8129829d8cce7..01dae6d734429c0b14be51c81c72b74ee0e28f63 100644 (file)
@@ -9,7 +9,8 @@
 
 #include <string>
 #include <vector>
-#include <iostream>
+#include <ostream>
+#include <iostream> // FIXME
 
 
 template <class T>
@@ -40,7 +41,9 @@ public:
        void add(CIndiceMagico<T>& indice)
        {
                for (unsigned i = 0; i < indice.m_nombres.size(); ++i)
+               {
                        add(indice.m_nombres[i], indice.m_datos[i]) ;
+               }
        }
 
 
@@ -91,14 +94,12 @@ public:
 
        void remove(const std::string& nombre)
        {
-               bool exito = false ;
-               unsigned i;
-
-               for (i = 0; !exito && i < m_nombres.size(); ++i)
-                       exito = m_nombres[i]==nombre;
-
-               if (exito)
-                       remove(i);
+               for (unsigned i = 0; i < m_nombres.size(); ++i)
+                       if (m_nombres[i]==nombre)
+                       {
+                               remove(i);
+                               return;
+                       }
        }
 
 
@@ -112,6 +113,24 @@ public:
 
 };
 
-
+template < typename T >
+std::ostream& operator<< (std::ostream& os, CIndiceMagico<T>& im)
+{
+       unsigned c = im.count();
+       if (c == 0) return os << "\t\tvacío\n";
+       for (unsigned i = 0; i < c; ++i)
+               os << "\t\t" << im.keys(i) << ":\t" << im[i] << "\n";
+       return os;
+}
+
+template < typename T >
+std::ostream& operator<< (std::ostream& os, CIndiceMagico<T*>& im)
+{
+       unsigned c = im.count();
+       if (c == 0) return os << "\t\tvacío\n";
+       for (unsigned i = 0; i < c; ++i)
+               os << "\t\t" << im.keys(i) << ":\t" << *im[i] << "\n";
+       return os;
+}
 
 #endif