X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Fcommon%2F_scanf.h;h=0a8b09b7dec24741799e971e8a6ff5a74a1ff479;hb=f16516047a551319c82debd339ded8bc2b587212;hp=a385e4ae44f35d00ca84ef2326fe8215916255c5;hpb=0b6da0f1e4dbcc3fd3c38b3addb1331e7d698a19;p=cc65 diff --git a/libsrc/common/_scanf.h b/libsrc/common/_scanf.h index a385e4ae4..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,35 +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 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 of _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); @@ -49,4 +44,3 @@ int _scanf (struct indesc* d, const char* format, va_list ap); -