/* PSPP - a program for statistical analysis.
- Copyright (C) 2007, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009, 2010, 2011, 2013 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
A casereader abstracts interfaces through which cases may be
read. A casereader may be a front-end for a system file, a
- portable file, the active file in a data set, or anything else
- on which a casereader interface has been overlaid. Casereader
- layering, in which a casereader acts as a filter or translator
- on top of another casereader, is also supported.
+ portable file, a dataset, or anything else on which a
+ casereader interface has been overlaid. Casereader layering,
+ in which a casereader acts as a filter or translator on top of
+ another casereader, is also supported.
There is no central interface for obtaining casereaders: a
casereader for reading a system file is obtained from the
#ifndef DATA_CASEREADER_H
#define DATA_CASEREADER_H 1
-#include <libpspp/compiler.h>
-#include <data/case.h>
-#include <data/missing-values.h>
+#include "libpspp/compiler.h"
+#include "data/case.h"
+#include "data/missing-values.h"
struct dictionary;
struct casereader;
bool casereader_destroy (struct casereader *);
struct casereader *casereader_clone (const struct casereader *);
-void casereader_split (struct casereader *,
- struct casereader **, struct casereader **);
struct casereader *casereader_rename (struct casereader *);
void casereader_swap (struct casereader *, struct casereader *);
-struct ccase *casereader_peek (struct casereader *, casenumber);
-bool casereader_is_empty (struct casereader *);
+struct ccase *casereader_peek (const struct casereader *, casenumber);
+bool casereader_is_empty (const struct casereader *);
bool casereader_error (const struct casereader *);
void casereader_force_error (struct casereader *);
const struct taint *casereader_get_taint (const struct casereader *);
-casenumber casereader_get_case_cnt (struct casereader *);
+casenumber casereader_get_n_cases (struct casereader *);
casenumber casereader_count_cases (const struct casereader *);
void casereader_truncate (struct casereader *, casenumber);
const struct caseproto *casereader_get_proto (const struct casereader *);
struct casewriter *exclude);
struct casereader *
casereader_create_filter_missing (struct casereader *,
- const struct variable *const*vars, size_t var_cnt,
+ const struct variable *const *vars, size_t n_vars,
enum mv_class,
casenumber *n_missing,
struct casewriter *exclude);
casereader_create_counter (struct casereader *, casenumber *counter,
casenumber initial_value);
+struct casereader_translator_class
+ {
+ struct ccase *(*translate) (struct ccase *, void *aux);
+ bool (*destroy) (void *aux);
+ };
struct casereader *
casereader_create_translator (struct casereader *,
const struct caseproto *output_proto,
- struct ccase *(*translate) (struct ccase *,
- void *aux),
- bool (*destroy) (void *aux),
+ const struct casereader_translator_class *,
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),
+ const struct casereader_translator_class *,
void *aux);
struct casereader *casereader_project (struct casereader *,