X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fcommon%2F_scanf.h;h=0a8b09b7dec24741799e971e8a6ff5a74a1ff479;hb=f16516047a551319c82debd339ded8bc2b587212;hp=6634c75e79bfe06bc2d292ab39470a0010c3365f;hpb=7c4bcbd569e6d6142205f932094657c3b6ad3122;p=cc65 diff --git a/libsrc/common/_scanf.h b/libsrc/common/_scanf.h index 6634c75e7..0a8b09b7d 100644 --- a/libsrc/common/_scanf.h +++ b/libsrc/common/_scanf.h @@ -1,7 +1,7 @@ /* * _scanf.h * - * (C) Copyright 2001 Ullrich von Bassewitz (uz@cc65.org) + * (c) Copyright 2004, Ullrich von Bassewitz * */ @@ -12,30 +12,30 @@ -/* 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);