#include <string>
#include <vector>
-#include <iostream>
+#include <ostream>
+#include <iostream> // FIXME
template <class T>
void add(CIndiceMagico<T>& indice)
{
for (unsigned i = 0; i < indice.m_nombres.size(); ++i)
+ {
add(indice.m_nombres[i], indice.m_datos[i]) ;
+ }
}
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;
+ }
}
};
-
+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