-/* Streams that are only sources. */
-extern struct case_stream data_list_source;
-extern struct case_stream input_program_source;
-extern struct case_stream file_type_source;
-extern struct case_stream get_source;
-extern struct case_stream import_source;
-extern struct case_stream matrix_data_source;
+/* A case sink class. */
+struct case_sink_class
+ {
+ const char *name; /* Identifying name. */
+
+ /* Opens the sink for writing. */
+ void (*open) (struct case_sink *);
+
+ /* Writes a case to the sink. */
+ void (*write) (struct case_sink *, const struct ccase *);
+
+ /* Closes and destroys the sink. */
+ void (*destroy) (struct case_sink *);
+
+ /* Closes the sink and returns a source that can read back
+ the cases that were written, perhaps transformed in some
+ way. The sink must still be separately destroyed by
+ calling destroy(). */
+ struct case_source *(*make_source) (struct case_sink *);
+ };