]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/indicemagico.h
Últimos cambios y documentación.
[z.facultad/75.68/celdas.git] / trunk / src / indicemagico.h
index e52b2207cee66e19fd92458298a8129829d8cce7..9ad336e62dc778bf41da49109f8775624539f8cd 100644 (file)
@@ -9,7 +9,8 @@
 
 #include <string>
 #include <vector>
 
 #include <string>
 #include <vector>
-#include <iostream>
+#include <ostream>
+#include <iostream> // FIXME
 
 
 template <class T>
 
 
 template <class T>
@@ -40,7 +41,9 @@ public:
        void add(CIndiceMagico<T>& indice)
        {
                for (unsigned i = 0; i < indice.m_nombres.size(); ++i)
        void add(CIndiceMagico<T>& indice)
        {
                for (unsigned i = 0; i < indice.m_nombres.size(); ++i)
+               {
                        add(indice.m_nombres[i], indice.m_datos[i]) ;
                        add(indice.m_nombres[i], indice.m_datos[i]) ;
+               }
        }
 
 
        }
 
 
@@ -91,14 +94,12 @@ public:
 
        void remove(const std::string& nombre)
        {
 
        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,42 @@ public:
 
 };
 
 
 };
 
-
+template < typename T >
+inline
+std::ostream& operator<< (std::ostream& os, CIndiceMagico<T>& im)
+{
+       unsigned c = im.count();
+#ifdef LOG
+       if (c-- == 0) return os << "";
+       for (unsigned i = 0; i < c; ++i)
+               os << im[i] << ",";
+       os << im[c];
+       return os;
+#else // ! LOG
+       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 // LOG
+}
+
+template < typename T >
+inline
+std::ostream& operator<< (std::ostream& os, CIndiceMagico<T*>& im)
+{
+       unsigned c = im.count();
+#ifdef LOG
+       if (c-- == 0) return os << "";
+       for (unsigned i = 0; i < c; ++i)
+               os << *im[i] << ",";
+       os << *im[c];
+       return os;
+#else // ! LOG
+       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 // LOG
+}
 
 #endif
 
 #endif