#include <iostream>
#include <string>
#include "reptilexotico.h"
#define CARACTER_SEPARADOR ';'
#include <fstream>
using namespace std;

/**
* @brief Sobrecarga do operador de extração para animal do tipo ReptilExotico
* @param  input - strem de entrada
*         repexo - Objeto do tipo ReptilExotico
*
*/

std::istream& operator>> (std::istream &input, ReptilExotico &repexo){
    string aux;
    getline (input,aux,CARACTER_SEPARADOR);
    id = atoi(aux.c_str());
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.nome = atoi(aux.c_str());
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.classe = aux;
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.cientifico = aux;
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.sexo = aux;
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.tamanho = atoi(aux.c_str());
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.dieta = aux;
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.batismo = aux ;
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.veterinario->id = atoi(aux.c_str());
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.tratador->id = atoi(aux.c_str());
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.venenoso = aux;
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.tipo_veneno = aux;
    getline (input,aux,CARACTER_SEPARADOR);
    repexo.ibama = aux;
    getline (input,aux);
    repexo.pais_origem = aux;
    return input;
}

	/**
  * @brief Construtor cria um animal do tipo ReptilExotico, que toma Reptil e AnimalExotico como classe pai a herdar seus atributos
  * @param identity - ID, clas - classe do animal, name - nome do animal, scientific - nome científico do animal,
  *					sex - sexo do animal, size - tamanho do animal, diet - dieta do animal,
  * 				baptism - nome de batismo do animal, vet - veterinário associado ao animal,
  *					caretaker - tratador associado ao animal, isPoisonous - estado de ter veneno, poison_type - tipo de veneno
            biernr - ibama, origin_country - pais de origem de animal
  */
ReptilExotico::ReptilExotico(int identity, string clas, string name, string scientific, char sex, float size,
        string diet, string baptism, Veterinario* vet, Tratador* caretaker,
        string isPoisonous, string poison_type, string biernr, string origin_country):

        Reptil(identity, clas, name, scientific, sex, size, diet, baptism, vet, caretaker, isPoisonous, poison_type),
        AnimalExotico(biernr, origin_country)
        {}
					ReptilExotico::~ReptilExotico(){

					}
}