// Class automatically generated by Dev-C++ New Class wizard

#include "cua.h" // class's header file

// class destructor
cua::cua()
{
   primer = NULL; ultim = NULL;
}

// class destructor
cua::~cua()
{
   while(primer) llegir();
}

void cua::afegir(TPosicio *v)
{
   nodo *nuevo;

   /* Crear un nodo nuevo */
   nuevo = new nodo(*v);

   /* Si la cola no estaba vacía, añadimos el nuevo a continuación de ultimo */
   if(ultim) ultim->seguent = nuevo;
   /* Ahora, el último elemento de la cola es el nuevo nodo */
   ultim = nuevo;
   /* Si primero es NULL, la cola estaba vacía, ahora primero apuntará también al nuevo nodo */
   if(!primer) primer = nuevo;
}

TPosicio cua::llegir()
{
   nodo *Nodo;      /* variable auxiliar para manipular nodo */
   TPosicio v;      /* variable auxiliar para retorno */
   
   /* Nodo apunta al primer elemento de la pila */
   Nodo = primer;

   if(!Nodo) 
   {        
      v.x = 0; v.y = 0; v.z = 0;
      v.angle_orientacio = 0; v.angle_horitzo = 0;
      return v;     /* Si no hay nodos en la pila retornamos 0 */
   }
   
   /* Asignamos a primero la dirección del segundo nodo */
   primer = Nodo->seguent;
   /* Guardamos el valor de retorno */
   v.x = Nodo->coord.x;
   v.y = Nodo->coord.y;
   v.z = Nodo->coord.z;
   v.angle_orientacio = Nodo->coord.angle_orientacio;
   v.angle_horitzo    = Nodo->coord.angle_horitzo;          
   
   /* Borrar el nodo */
   delete Nodo;
   /* Si la cola quedó vacía, ultimo debe ser NULL también*/
   if(!primer) ultim = NULL;
 
   return v;  
}

int cua::EsBuida()
{
    if (ultim == NULL)
        return 1;
    else
        return 0;
}
