]> git.sur5r.net Git - cc65/blobdiff - libsrc/common/_scanf.h
cleanups and add more comments
[cc65] / libsrc / common / _scanf.h
index 6634c75e79bfe06bc2d292ab39470a0010c3365f..0a8b09b7dec24741799e971e8a6ff5a74a1ff479 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * _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);