/* 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 dictionary;
struct casereader;
struct casewriter;
+struct subcase;
-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 *);
const struct taint *casereader_get_taint (const struct casereader *);
casenumber casereader_get_case_cnt (struct casereader *);
-casenumber casereader_count_cases (struct casereader *);
-size_t casereader_get_value_cnt (struct casereader *);
+casenumber casereader_count_cases (const struct casereader *);
+void casereader_truncate (struct casereader *, casenumber);
+const struct caseproto *casereader_get_proto (const struct casereader *);
+casenumber casereader_advance (struct casereader *, casenumber);
void casereader_transfer (struct casereader *, struct casewriter *);
\f
+struct casereader *casereader_create_empty (const struct caseproto *);
+
struct casereader *
casereader_create_filter_func (struct casereader *,
bool (*include) (const struct ccase *,
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);
+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 *);
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 */