/*Este codigo se cede al dominio publico*/
/*
Las letras mayusculas y minusculas en
ASCII tienen una distancia en sus codigos
de 32 caracteres cada uno, por ello el proceso
de conversion consiste en restar o sumar 32
al codigo del caracter en cuestion. Es posible
lograr estas operaciones por medio del operador
XOR ya que con este podremos invertir el valor
del quinto bit el cual vale exactamente 32, de
manera que se sume o reste este valor segun.
*/
/**
@fn upper_case()
@brief Convierte letras minusculas a mayusculas
@param `obj' es la cadena a convertir
@warning La cadena jamás puede ser NULL
@return La cadena convertida
**/
char* upper_case(char* obj)
{
unsigned int index = 0U;
for( ; obj[index] != '\0'; ++index)
if(obj[index] >= 'a' && obj[index] <= 'z')
obj[index] ^= '\40';
return obj;
}
/**
@fn lower_case()
@brief Convierte letras mayusculas a minusculas
@param `obj' es la cadena a convertir
@warning La cadena jamás puede ser NULL
@return La cadena convertida
**/
char* lower_case(char* obj)
{
unsigned int index = 0U;
for( ; obj[index] != '\0'; ++index)
if(obj[index] >= 'A' && obj[index] <= 'Z')
obj[index] ^= '\40';
return obj;
}
/**
@fn swap_case()
@brief Invierte las letras mayusculas y minusculas
@param `obj' es la cadena a convertir
@warning La cadena jamás puede ser NULL
@return La cadena convertida
**/
char* swap_case(char* obj)
{
unsigned int index = 0U;
for( ; obj[index] != '\0'; ++index)
if((obj[index] >= 'a' && obj[index] <= 'z')
|| (obj[index] >= 'A' && obj[index] <= 'Z'))
obj[index] ^= '\40';
return obj;
}