+/*----- Particular scanner types ------------------------------------------*/
+
+/* --- @scan_file@ --- *
+ *
+ * Arguments: @FILE *fp@ = pointer to file descriptor
+ * @char *name@ = pointer to source file name
+ * @unsigned f@ = flags
+ *
+ * Returns: A scanner source.
+ *
+ * Use: Creates a new scanner source for reading from a file.
+ */
+
+extern scansrc *scan_file(FILE */*fp*/, char */*name*/, unsigned /*f*/);
+
+#define SCF_NOCLOSE 1u
+#define SCF_FREENAME 2u
+
+/* --- @scan_argv@ --- *
+ *
+ * Arguments: @char **av@ = pointer to argument array (null terminated)
+ *
+ * Returns: A scanner source.
+ *
+ * Use: Creates a new scanner source for reading from an @argv@
+ * array.
+ */
+
+extern scansrc *scan_argv(char **/*av*/);
+
+/*----- General scanner handling ------------------------------------------*/
+
+/* --- @scan@ --- *
+ *
+ * Arguments: @scanner *sc@ = pointer to main scanner context
+ *
+ * Returns: Character read, or end-of-file.
+ *
+ * Use: Scans a character from a source of characters.
+ */
+
+extern int scan(scanner */*sc*/);