/*
 * _scanf.h
 *
 * (C) Copyright 2001 Ullrich von Bassewitz (uz@cc65.org)
 *
 */



#ifndef __SCANF_H
#define __SCANF_H



/* Forward */
struct indesc;

/* Type of the function that is called to input data. The function will
 * return EOF if no more data is available.
 */
typedef char (*infunc) (struct indesc* desc);



/* Control structure passed to the low level worker function.
 * Beware: The low level functions will access the structure on the assembly
 * level, so check this when altering the structure.
 */
struct indesc {
    infunc	    fin;	/* Pointer to input routine */
    unsigned	    ccount;	/* Number of chars read */

    /* Fields used outside from _scanf */
    char*      	    buf; 	/* Pointer to input buffer */
    unsigned	    size;	/* Size of input buffer */
    unsigned	    fill;	/* Fill mark of input buffer */
    unsigned	    ridx;	/* Read index of input buffer */
};



/* Internal scanning routine */
int _scanf (struct indesc* d, const char* format, va_list ap);



/* End of _scanf.h */
#endif