X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcase.c;h=742d1f0f22ca46e6743f0c0a6d808b6fd28250a6;hb=2c4b104df57f2e8b5ed2afa50819294aaac4aa6c;hp=70c1b44075355d45310232203923af4867b6962b;hpb=051724c1769c04a715f00f22f75c4a810f5bff11;p=pspp diff --git a/src/data/case.c b/src/data/case.c index 70c1b44075..742d1f0f22 100644 --- a/src/data/case.c +++ b/src/data/case.c @@ -323,6 +323,29 @@ case_num_idx (const struct ccase *c, size_t idx) return c->values[idx].f; } +/* Returns a pointer to the `double' in the `union value' in C for variable V. + The caller is allowed to modify the returned data. + + Case C must be drawn from V's dictionary and must not be shared. */ +double * +case_num_rw (struct ccase *c, const struct variable *v) +{ + assert_variable_matches_case (c, v); + assert (!case_is_shared (c)); + return &c->values[var_get_case_index (v)].f; +} + +/* Returns a pointer to the `double' in the `union value' in C numbered IDX. + The caller is allowed to modify the returned data. + + Case C must not be shared. */ +double * +case_num_rw_idx (struct ccase *c, size_t idx) +{ + assert (!case_is_shared (c)); + return &c->values[idx].f; +} + /* Returns the string value of the `union value' in C for variable V. Case C must be drawn from V's dictionary. The caller must not modify the return value. @@ -348,6 +371,26 @@ case_str_idx (const struct ccase *c, size_t idx) return c->values[idx].s; } +/* Returns a substring for the `union value' in C for variable V. Case C must + be drawn from V's dictionary. */ +struct substring +case_ss (const struct ccase *c, const struct variable *v) +{ + assert_variable_matches_case (c, v); + return ss_buffer (CHAR_CAST (char *, c->values[var_get_case_index (v)].s), + var_get_width (v)); +} + +/* Returns a substring for the `union value' in C numbered IDX. WIDTH must be + the value's width. */ +struct substring +case_ss_idx (const struct ccase *c, size_t width, size_t idx) +{ + assert (width > 0); + assert (idx < c->proto->n_widths); + return ss_buffer (CHAR_CAST (char *, c->values[idx].s), width); +} + /* Returns the string value of the `union value' in C for variable V. Case C must be drawn from V's dictionary. The caller may modify the return value.