#include "StringLi.hpp"

StringLi::StringLi(){
  tl=NULL;
  hd="";
  isEmpt=true;
}

StringLi::StringLi(std::string h,StringLi* t){
  hd=h;
  tl=t;
  isEmpt=false;
}

StringLi::~StringLi(){
  if (!this->isEmpty()) delete tail();
}

std::string StringLi::head()   {return hd;}
StringLi*   StringLi::tail()   {return tl;}
bool        StringLi::isEmpty(){return isEmpt;}  

std::string StringLi::toString(){
  return "("+toStringAux()+")";
}

std::string StringLi::toStringAux(){
  if (isEmpty())         return "";
  if (tail()->isEmpty()) return head();
  return head()+","+tail()->toStringAux();
}


