X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fsubcase.h;h=f890f2549afa8e8138ace3f92f88300613e2feee;hb=8a4ffde673c1bdfc687ff2a504036313f3595157;hp=d50d0748ba86fbe89b64cd93db82f3b0f6a07408;hpb=8af88c0b7ea2fe75df7e45497988ed0371006a86;p=pspp diff --git a/src/data/subcase.h b/src/data/subcase.h index d50d0748ba..f890f2549a 100644 --- a/src/data/subcase.h +++ b/src/data/subcase.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 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 @@ -44,7 +44,8 @@ struct subcase { struct subcase_field *fields; size_t n_fields; - size_t n_values; + + struct caseproto *proto; /* Created lazily. */ }; void subcase_init_empty (struct subcase *); @@ -52,17 +53,36 @@ void subcase_init_vars (struct subcase *, const struct variable *const *, size_t n_vars); void subcase_init_var (struct subcase *, const struct variable *, enum subcase_direction); +void subcase_init (struct subcase *, int index, int width, + enum subcase_direction); + void subcase_clone (struct subcase *, const struct subcase *); void subcase_clear (struct subcase *); void subcase_destroy (struct subcase *); +bool subcase_contains (const struct subcase *, int case_index); +bool subcase_contains_var (const struct subcase *, const struct variable *); + +bool subcase_add (struct subcase *, int case_index, int width, + enum subcase_direction direction); bool subcase_add_var (struct subcase *, const struct variable *, enum subcase_direction); +void subcase_add_always (struct subcase *sc, int case_index, int width, + enum subcase_direction direction); +void subcase_add_var_always (struct subcase *, const struct variable *, + enum subcase_direction); +void subcase_add_vars_always (struct subcase *, + const struct variable *const *, size_t n_vars); +void subcase_add_proto_always (struct subcase *, const struct caseproto *); + +const struct caseproto *subcase_get_proto (const struct subcase *); + static inline bool subcase_is_empty (const struct subcase *); static inline size_t subcase_get_n_fields (const struct subcase *); -static inline size_t subcase_get_n_values (const struct subcase *); +static inline size_t subcase_get_case_index (const struct subcase *, + size_t idx); static inline enum subcase_direction subcase_get_direction ( const struct subcase *, size_t idx); @@ -92,6 +112,12 @@ bool subcase_equal_cx (const struct subcase *, bool subcase_equal_xx (const struct subcase *, const union value *a, const union value *b); +static inline size_t +subcase_get_case_index (const struct subcase *sc, size_t idx) +{ + return sc->fields[idx].case_index; +} + static inline enum subcase_direction subcase_get_direction (const struct subcase *sc, size_t idx) { @@ -110,10 +136,4 @@ subcase_get_n_fields (const struct subcase *sc) return sc->n_fields; } -static inline size_t -subcase_get_n_values (const struct subcase *sc) -{ - return sc->n_values; -} - #endif /* data/subcase.h */