X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcasereader.h;h=06f7a7b13a2cf872644cc9b8fc62d23c291ad3d1;hb=5610084f0ead4b6a7d53af239f4789ba60fda024;hp=3b903bbfd52d66cdba8ffe0e960fa7f0d1ef2474;hpb=b40baf410822471fbdeeec553693619d60d7c7b6;p=pspp diff --git a/src/data/casereader.h b/src/data/casereader.h index 3b903bbfd5..06f7a7b13a 100644 --- a/src/data/casereader.h +++ b/src/data/casereader.h @@ -1,5 +1,5 @@ /* 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 @@ -18,10 +18,10 @@ 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 @@ -51,36 +51,39 @@ #ifndef DATA_CASEREADER_H #define DATA_CASEREADER_H 1 -#include -#include -#include +#include "libpspp/compiler.h" +#include "data/case.h" +#include "data/missing-values.h" struct dictionary; struct casereader; struct casewriter; +struct subcase; struct ccase *casereader_read (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_count_cases (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 *); +casenumber casereader_advance (struct casereader *, casenumber); void casereader_transfer (struct casereader *, struct casewriter *); +struct casereader *casereader_create_empty (const struct caseproto *); + struct casereader * casereader_create_filter_func (struct casereader *, bool (*include) (const struct ccase *, @@ -95,7 +98,7 @@ casereader_create_filter_weight (struct casereader *, struct casewriter *exclude); struct casereader * casereader_create_filter_missing (struct casereader *, - const struct variable **vars, size_t var_cnt, + const struct variable *const *vars, size_t n_vars, enum mv_class, casenumber *n_missing, struct casewriter *exclude); @@ -104,13 +107,28 @@ struct casereader * 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, + const struct casereader_translator_class *, + 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 *);