]> git.llucax.com Git - z.facultad/75.68/celdas.git/blobdiff - trunk/src/indicemagico.h
Agrega un modo de salida intentando que sea más fácil generar tablas con la evolución...
[z.facultad/75.68/celdas.git] / trunk / src / indicemagico.h
index adbc0ccb1c36493ea5267c12d188986f8d783de4..9ad336e62dc778bf41da49109f8775624539f8cd 100644 (file)
@@ -10,6 +10,7 @@
 #include <string>
 #include <vector>
 #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;
+                       }
        }
 
 
@@ -113,11 +114,41 @@ public:
 };
 
 template < typename T >
+inline
 std::ostream& operator<< (std::ostream& os, CIndiceMagico<T>& im)
 {
-       for (unsigned i = 0; i < im.count(); ++i)
-               os << "\t" << im.keys(i) << "=" << im[i] << "\n";
+       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