#include "Cadena.h"

Cadena :: Cadena(){
	lon = 0;
}
Cadena :: Cadena(const Cadena& cad){
	c = new char [cad.lon];
	strcpy(c, cad.c);
	lon = cad.lon;
}
Cadena :: Cadena(const char *cad){
	c = new char [strlen(cad)];
	strcpy(c, cad);
	lon = strlen(cad);
}

//destructor
Cadena :: ~Cadena(){
}

//Métodos de acceso
int Cadena :: longitud(){
	return lon;
}
char * Cadena :: cad(){
	return c;
}

//Métodos de modificación
bool asignarCadena(const char* cad){
}

//Sobrecarga de operadores
bool Cadena :: operator == (Cadena cad){
	bool iguales = true;
	int contador = 0;
	if (this->lon != cad.lon)
		iguales = false;
	else{
		while(contador < cad.lon && iguales){
		     if(this->c[contador] != cad.c[contador])
				iguales = false;
			contador++;
		}
	}
	return iguales;
}

/*
bool Cadena :: operator < (Cadena cad){
	bool iguales = true;
	int contador=0, menor;
	if (this->lon <= cad.lon)
		menor = this->lon;
	else
		menor = cad.lon;
	while(contador<menor && iguales){
		if(this->c[contador] != cad.c[contador])
	}
}
*/

Cadena Cadena :: operator + (Cadena cad){
	Cadena r;
	int i;
	r.lon = this->lon + cad.lon;
	r.c = new char [r.lon];

	strcpy(r.c, cad.c);
	strcat(r.c, this->c);

	return r;
}

bool Cadena :: operator <= (Cadena){
}


ostream& operator<<(ostream& output, const Cadena& cad){
	int i;
	for(i=0; i<cad.lon; i++){
		cout << cad.c[i];
	}
	cout << endl;
}

Cadena& Cadena::operator = (const Cadena &cad){
        int i;
        c=new char[(cad.lon)+1];
        this->lon=(cad.lon);
	for (i=0;i<lon;i++)
        	c[i] = cad.c[i];
	c[i+1] = '\0';
}


