// FICHIER : Reference.cp
// CLASSE : Reference


#include "Reference.h"

#ifndef  REFERENCE_H_deja_inclus

// --------------- variables statiques ---------
// déclaré dans Reference_static.cp
//MotCle Reference::motCle; // liste des mots clés // finalement déclaré ici !

#ifndef MISE_AU_POINT
  inline 
#endif
Reference::Reference (string nom): 
// Constructeur par defaut (appel au constructeur par defaut de Tableau<T>)
 nom_ref(nom),nbmaille(0),indic(0)
{ };

#ifndef MISE_AU_POINT
  inline 
#endif
// Constructeur fonction  du nb de maillage et du type de ref		
Reference::Reference (int nb , int ind) :
  nbmaille(nb),indic(ind),nom_ref("aucun nom")
   { };
  
#ifndef MISE_AU_POINT
  inline 
#endif
Reference::Reference (string nom,int nb , int ind) :
// Constructeur utile si le nom de la reference est connu 
  nom_ref(nom),nbmaille(nb),indic(ind)
{ };


#ifndef MISE_AU_POINT
  inline 
#endif
Reference::Reference (const Reference& ref):
// Constructeur de copie 
     nom_ref(ref.nom_ref),nbmaille(ref.nbmaille),indic(ref.indic)
{	};
	
#ifndef MISE_AU_POINT
  inline 
#endif
Reference::~Reference ()
// Destructeur 
{	};
		
		// METHODES :
		
// Surcharge de l'operateur = : realise l'egalite entre deux references		
#ifndef MISE_AU_POINT
  inline 
#endif
Reference& Reference::operator= (const Reference& ref)
		{	indic = ref.indic;
		    nbmaille = ref.nbmaille;
		    nom_ref = ref.nom_ref;
			return (*this);
		};
		
// Retourne le nom associe a la reference
#ifndef MISE_AU_POINT
  inline 
#endif
 string Reference::Nom () const
		{	return nom_ref;	};
		
// Retourne le type de reference 
#ifndef MISE_AU_POINT
  inline 
#endif
int Reference::Indic () const 
		{	return indic;	};
		
// Retourne le numero du maillage auquelle la reference se rattache 
#ifndef MISE_AU_POINT
  inline 
#endif
int Reference::Nbmaille()  const 
		{	return nbmaille;	};
		
		
// Remplace l'ancien nom de la reference par nouveau_nom
#ifndef MISE_AU_POINT
  inline 
#endif
void Reference::Change_nom (string nouveau_nom)
		{ nom_ref = nouveau_nom;	};
		
// Affiche les donnees liees a la reference
#ifndef MISE_AU_POINT
  inline 
#endif
void Reference::Affiche () const 
    { cout << "\nNom de la reference : " << nom_ref 
		         << " , maillage nb =" << nbmaille << ", de type = " << indic << '\n';
		};
		

// methodes appellées par les classes dérivées
        	    // cas donne le niveau de la récupération
        // = 1 : on récupère tout
        // = 2 : on récupère uniquement les données variables (supposées comme telles)
#ifndef MISE_AU_POINT
  inline 
#endif
void Reference::Lect_int_base_info(ifstream& ent)
  { string toto;
    ent >> nom_ref >> nbmaille ; };
        // cas donne le niveau de sauvegarde
        // = 1 : on sauvegarde tout
        // = 2 : on sauvegarde uniquement les données variables (supposées comme telles)
#ifndef MISE_AU_POINT
  inline 
#endif
void Reference::Ecrit_int_base_info(ofstream& sort)
  { sort << nom_ref <<" " << nbmaille << " "; };


#endif
