// listatfnos.cpp - Definición de los métodos de CListaTfnos
#include <iostream>
#include "listatfnos.h"

CListaTfnos::CListaTfnos() // constructor
{
  // Reservar espacio para 100 elementos
  listaTelefonos.reserve(100);
}

CPersona CListaTfnos::registro(unsigned int i)
{
  if (i >= 0 && i < listaTelefonos.size())
    return listaTelefonos[i];
  else
    throw "Índice fuera de límites";
}

void CListaTfnos::anyadir(CPersona objeto)
{
  listaTelefonos.push_back(objeto);
}

bool CListaTfnos::eliminar(long tel)
{
  // Buscar el teléfono y eliminar registro
  for (unsigned int i = 0; i < listaTelefonos.size(); i++)
    if (listaTelefonos[i].obtenerTelefono() == tel)
    {
      listaTelefonos.erase(listaTelefonos.begin()+i);
      return true;
    }
  return false;
}

int CListaTfnos::buscar(string str, int pos)
{
  string nom;
  if (str.empty()) return -1;
  if (pos < 0) pos = 0;
  for (unsigned int i = pos; i < listaTelefonos.size(); i++ )
  {
    nom = listaTelefonos[i].obtenerNombre();
    if (nom.empty()) continue;
    // ¿str está contenida en nom?
    if (nom.find(str) != string::npos)
      return i;
  }
  return -1;
}

size_t CListaTfnos::longitud()
{
  return listaTelefonos.size();
}

