+struct session;
+\f
+struct dataset *dataset_create (struct session *, const char *);
+struct dataset *dataset_clone (struct dataset *, const char *);
+void dataset_destroy (struct dataset *);
+
+void dataset_clear (struct dataset *);
+
+const char *dataset_name (const struct dataset *);
+void dataset_set_name (struct dataset *, const char *);
+
+struct session *dataset_session (const struct dataset *);
+void dataset_set_session (struct dataset *, struct session *);
+
+struct dictionary *dataset_dict (const struct dataset *);
+void dataset_set_dict (struct dataset *, struct dictionary *);
+
+const struct casereader *dataset_source (const struct dataset *);
+bool dataset_has_source (const struct dataset *ds);
+bool dataset_set_source (struct dataset *, struct casereader *);
+struct casereader *dataset_steal_source (struct dataset *);
+
+unsigned int dataset_seqno (const struct dataset *);
+
+struct dataset_callbacks
+ {
+ /* Called whenever a procedure completes execution or whenever the
+ dictionary within the dataset is modified (though not when it is
+ replaced by a new dictionary). */
+ void (*changed) (void *aux);
+
+ /* Called whenever a transformation is added or removed. NON_EMPTY is true
+ if after the change there is at least one transformation, false if there
+ are no transformations. */
+ void (*transformations_changed) (bool non_empty, void *aux);
+ };
+
+void dataset_set_callbacks (struct dataset *, const struct dataset_callbacks *,
+ void *aux);
+
+/* Dataset GUI window display status. */
+enum dataset_display
+ {
+ DATASET_ASIS, /* Current state unchanged. */
+ DATASET_FRONT, /* Display and raise to top. */
+ DATASET_MINIMIZED, /* Display as icon. */
+ DATASET_HIDDEN /* Do not display. */
+ };
+enum dataset_display dataset_get_display (const struct dataset *);
+void dataset_set_display (struct dataset *, enum dataset_display);