+struct casereader *
+casereader_translate_stateless (struct casereader *,
+ const struct caseproto *output_proto,
+ struct ccase *(*translate) (struct ccase *,
+ casenumber idx,
+ const void *aux),
+ bool (*destroy) (void *aux),
+ void *aux);
+
+struct casereader *casereader_project (struct casereader *,
+ const struct subcase *);
+struct casereader *casereader_project_1 (struct casereader *, int column);
+struct casereader *casereader_select (struct casereader *,
+ casenumber first, casenumber last,
+ casenumber by);
+
+/* A function which creates a numberic value from an existing case */
+typedef double new_value_func (const struct ccase *, casenumber, void *);
+
+struct casereader *
+casereader_create_append_numeric (struct casereader *subreader,
+ new_value_func func, void *aux,
+ void (*destroy) (void *aux));
+
+struct casereader *
+casereader_create_arithmetic_sequence (struct casereader *,
+ double first, double increment);
+
+enum rank_error
+ {
+ RANK_ERR_NONE = 0,
+ RANK_ERR_NEGATIVE_WEIGHT = 0x01,
+ RANK_ERR_UNSORTED = 0x02
+ };
+
+
+typedef void distinct_func (double v, casenumber n, double w, void *aux);
+
+struct casereader *
+casereader_create_append_rank (struct casereader *,
+ const struct variable *v, const struct variable *w,
+ enum rank_error *err,
+ distinct_func *distinct_callback, void *aux);
+
+struct casereader *
+casereader_create_distinct (struct casereader *input,
+ const struct variable *key,
+ const struct variable *weight);
+
+