/*
 * ----------------------------------------------------------------------
 * Check if string begins with a number, e.g.:
 * "10", "0,1", "-,5", "3.14" etc.
 * Should handle numbers like "2.7e5".
 * ----------------------------------------------------------------------
 */
int is_number(unsigned char *buffer)
{

    if (*buffer == '-')
	buffer++;		/* skip sign */
    if (*buffer == 0)
	return 0;		/* end of buffer -> no number */

    if (*buffer >= '0' && *buffer <= '9')
	return 1;		/* found one digit, that's enough */

    if ((buffer[0] == ',' || buffer[0] == '.') &&
	(buffer[1] >= '0' && buffer[1] <= '9'))
	return 1;		/* something like ",3" or ".4" */
	
    return 0;			/* nothing appropriate */
}


/*
 * ----------------------------------------------------------------------
 *
 * ----------------------------------------------------------------------
 */
void handle_number(struct lang_struct *l,
		   unsigned char *buffer, int *pi)
{
    int i = *pi;

    if (buffer[i] == '-') {
	l->state->synth->synth(l->state->synth, " minus ");
	i++;
    }

    /* preliminary hack */
    while (buffer[i] && strchr(",.0123456789", buffer[i])) {
	if (buffer[i] == '.') {
	    l->state->synth->synth(l->state->synth, " Punkt ");
	    i++;
	} else if (buffer[i] == ',') {
	    l->state->synth->synth(l->state->synth, " Komma ");
	    i++;
	} else
	    handle_other(l, buffer, &i);
    }

    *pi = i;
}


