/* string-extras.h */
/*
    This file is part of the ARM-Crypto-Lib.
    Copyright (C) 2008  Daniel Otte (daniel.otte@rub.de)

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/
/**
 * \file	string-extras.h
 * \author  Daniel Otte 
 * \date    2006-05-16
 * \license	GPLv3 or later
 * 
 */
#include <stdint.h>

/** \fn stridentcnt_P(char* a, PGM_P b)
 * \brief counts the number of identic chars
 * 
 * This function compares the supplied strings and returns the index of the
 * first char where the strings differ.
 * \param a pointer to string in RAM
 * \param b pointer to string in Flash
 * \return index of the first char where \c a and \c b differ
 */
uint32_t stridentcnt(const char* a, const char* b);

/** \fn firstword_length(char* s)
 * \brief compute the length of the first word in supplied string
 * 
 * This function searches for the first whitespace in the string and returns the
 * number of chars before the first whitespace.
 * \param s string
 * \return number of chars in first word
 */
uint16_t firstword_length(const char* s);

/** \fn strstrip(char* str)
 * \brief removes whitespace at the beginning and the end of a string
 * 
 * This function removes whitespaces at the end of a string.
 * \param str sting
 * \return pointer to the first non-whitespace char in string
 */
char* strstrip(char* str);

void str_reverse(char* buffer);

char* ultoa(unsigned long a, char* buffer, uint8_t radix);
char* ulltoa(unsigned long long a, char* buffer, uint8_t radix);
char* utoa(unsigned a, char* buffer, uint8_t radix);
char* ustoa(unsigned short a, char* buffer, uint8_t radix);
// void strlwr(char* s);
