#include "oswald.h"

#include "oswald_strings.h"

uint16_t oswald_strlen(char *string)
{
	int i=0;

	if (string == NULL)
		return 0;

	while (string[i] != 0) i++;

	return i;
}

char *itoa(int16_t value, char* result, int base)
{
	char *ptr = result, *ptr1 = result, tmp_char;
	int16_t tmp_value;

	if (result == NULL)
		return NULL;

	// check that the base if valid
	if (base < 2 || base > 36) {
		*result = '\0';
		return result;
	}

	do {
		tmp_value = value;
		value /= base;
		*ptr++ = "zyxwvutsrqponmlkjihgfedcba9876543210123456789abcdefghijklmnopqrstuvwxyz" [35 + (tmp_value - value * base)];
	} while ( value );

	// Apply negative sign
	if (tmp_value < 0)
		*ptr++ = '-';
	*ptr-- = '\0';
	while (ptr1 < ptr) {
		tmp_char = *ptr;
		*ptr--= *ptr1;
		*ptr1++ = tmp_char;
	}
	return result;
}