/*
* _scanf.h
*
- * (C) Copyright 2001 Ullrich von Bassewitz (uz@cc65.org)
+ * (c) Copyright 2004, Ullrich von Bassewitz <uz@cc65.org>
*
*/
-/* 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);
+typedef int __fastcall__ (*getfunc) (void* data);
+
+/* Type of the function that is called to put back unused data */
+typedef int __fastcall__ (*ungetfunc) (int c, void* data);
/* 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.
+ * Beware: This structure is mirrored in the _scanf.inc assembler include
+ * file, 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 */
+struct scanfdata {
+ getfunc get; /* Pointer to input routine */
+ ungetfunc unget; /* Pointer to pushback routine */
+ void* data; /* Pointer to struct. used outside of _scanf() */
};
/* Internal scanning routine */
-int _scanf (struct indesc* d, const char* format, va_list ap);
+int __fastcall__ _scanf (const struct scanfdata* d, const char* format, va_list ap);
-