#ifndef __RegCDs__
#define __RegCDs__

#include "Registro.hpp"
#include <string>
#include <stdio.h>

using namespace std;


/// Clase para manipular registros de Cds
/**
 * Clase para manipular registros de CDs
 * @author Antonio Carrillo Ledesma
 * @date Verano 2011
 * @version 0.0.1
 * @bug No errors detected
 * @todo ...
 */
class RegCDs : public Registro
{

private:

   string Titulo;
   string Artista;
   int    NumCanciones;
   string Canciones;


public:

   /**
    * Constructor de la clase.
    *
    */
   RegCDs(void)
   {
   }

   /// Visualiza el contenido del registro
   int visualizaRegistro(void)
   {
      printf("\n\nTitulo:    %s", Titulo.c_str());
      printf("\nArtista: %s", Artista.c_str());
      printf("\n\nNumero de caciones:    %d", NumCanciones);
      printf("\nCanciones: %s", Canciones.c_str());

      return 0; //Ok

   }

   /// Adiciona un registro
   int adicionaRegistro(void)
   {
      // Cadena temporal
      char cad[81];

      printf("\nTitulo: ");
      ut.leerCadena(cad, 80);
      Titulo.assign(cad);

      printf("\nArtista: ");
      ut.leerCadena(cad, 80);
      Artista.assign(cad);

      printf("\nNumero de caciones: ");
      ut.leerNumero(NumCanciones);

      printf("\nCanciones: ");
      ut.leerCadena(cad, 80);
      Canciones.assign(cad);

     return 0; // Ok   

   }

   /// Modifica el contenido del registro
   int modificarRegistro(void)
   {
      // Cadena temporal
      char cad[81];

      // Visualiza el nombre y permite su modificacion
      printf("\nTitulo:    %s", Titulo.c_str());
      printf("\nNuevo Titulo: ");
      ut.leerCadena(cad, 80);
      Titulo.assign(cad);

      printf("\nArtista: %s", Artista.c_str());
      printf("\nNuevo Artista: ");
      ut.leerCadena(cad, 80);
      Artista.assign(cad);

      printf("\nNumero de caciones:    %d", NumCanciones);
      printf("\nNuevo Numero de caciones: ");
      ut.leerNumero(NumCanciones);

      printf("\nCanciones: %s", Canciones.c_str());
      printf("\nNuevas Canciones: ");
      ut.leerCadena(cad, 80);
      Canciones.assign(cad);

      return 0; // Ok
   }

   int leerRegistro(FILE *file)
   {
      char cad[100];

      cad[0] = 0;
      fread(cad,1,80,file);
      Titulo.assign(cad);

      fread(cad,1,80,file);
      Artista.assign(cad);

     fread(&NumCanciones,sizeof(int), 1,file);

      fread(cad,1,80,file);
      Canciones.assign(cad);

      return 0; // Ok
   }

   int grabarRegistro(FILE *file)
   {
      fwrite(Titulo.c_str(),1,80,file);
      fwrite(Artista.c_str(),1,80,file);
      fwrite(&NumCanciones,sizeof(int), 1,file);
      fwrite(Canciones.c_str(),1,80,file);
 
     return 0; // Ok
   }


};



#endif