First phase of making SORT CASES stable (PR 12035).
[pspp-builds.git] / src / vfm.h
index 5d9403bbdea43f8edaf61741e585c9dc3733974c..d1ef883080fbc054501a0508a11f15c998d96e6f 100644 (file)
--- a/src/vfm.h
+++ b/src/vfm.h
@@ -36,7 +36,6 @@ extern struct case_source *vfm_source;
 struct case_source 
   {
     const struct case_source_class *class;      /* Class. */
-    size_t value_cnt;   /* Number of `union value's in case. */
     void *aux;          /* Auxiliary data. */
   };
 
@@ -69,13 +68,15 @@ extern const struct case_source_class sort_source_class;
 
 struct dictionary;
 struct case_source *create_case_source (const struct case_source_class *,
-                                        const struct dictionary *,
                                         void *);
+void free_case_source (struct case_source *);
+
 int case_source_is_complex (const struct case_source *);
 int case_source_is_class (const struct case_source *,
                           const struct case_source_class *);
 
 struct casefile *storage_source_get_casefile (struct case_source *);
+struct case_source *storage_source_create (struct casefile *);
 \f
 /* The replacement active file, to which cases are written. */
 extern struct case_sink *vfm_sink;
@@ -85,11 +86,6 @@ struct case_sink
   {
     const struct case_sink_class *class;        /* Class. */
     void *aux;          /* Auxiliary data. */
-
-    /* Cases written to a case sink belong to a dictionary, but
-       their data is compacted to drop scratch variables. */
-    const struct dictionary *dict;      /* Dictionary for cases. */
-    int *idx_to_fv;     /* `dict' index -> case `data' index. */
     size_t value_cnt;   /* Number of `union value's in case. */
   };
 
@@ -107,9 +103,10 @@ struct case_sink_class
     /* Closes and destroys the sink. */
     void (*destroy) (struct case_sink *);
 
-    /* Closes and destroys the sink and returns a source that can
-       read back the cases that were written, perhaps transformed
-       in some way. */
+    /* 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 *);
   };