/*
* _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 int __fastcall__ (*getfunc) (void* data);
-/* Type of the function that is called to input data */
-typedef void (*infunc) (struct indesc* desc, const char* buf, unsigned count);
+/* 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 {
- 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 */
- infunc fin; /* Pointer to input routine */
+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);