/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
struct casereader;
struct casewriter;
-bool casereader_read (struct casereader *, struct ccase *);
+struct ccase *casereader_read (struct casereader *);
bool casereader_destroy (struct casereader *);
struct casereader *casereader_clone (const struct casereader *);
struct casereader *casereader_rename (struct casereader *);
void casereader_swap (struct casereader *, struct casereader *);
-bool casereader_peek (struct casereader *, casenumber, struct ccase *)
- WARN_UNUSED_RESULT;
+struct ccase *casereader_peek (struct casereader *, casenumber);
bool casereader_is_empty (struct casereader *);
bool casereader_error (const struct casereader *);
casenumber casereader_get_case_cnt (struct casereader *);
casenumber casereader_count_cases (struct casereader *);
-size_t casereader_get_value_cnt (struct casereader *);
+const struct caseproto *casereader_get_proto (const struct casereader *);
void casereader_transfer (struct casereader *, struct casewriter *);
\f
casenumber initial_value);
struct casereader *
-casereader_create_translator (struct casereader *, size_t output_value_cnt,
- void (*translate) (struct ccase *input,
- struct ccase *output,
- void *aux),
+casereader_create_translator (struct casereader *,
+ const struct caseproto *output_proto,
+ struct ccase *(*translate) (struct ccase *,
+ void *aux),
bool (*destroy) (void *aux),
void *aux);
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);
+
+
#endif /* data/casereader.h */