/* Creates and returns a chart that will render a barchart with
- the given TITLE and the N_BARS described in CATS. */
+ the given TITLE and the N_CATS described in CATS.
+
+ VAR is an array containing the categorical variables, and N_VAR
+ the number of them. N_VAR must be exactly 1 or 2.
+
+ CATS are the counts of the values of those variables. N_CATS is the
+ number of distinct values.
+*/
struct chart_item *
barchart_create (const struct variable **var, int n_vars,
const char *ylabel,
{
struct category *s = xzalloc (sizeof *s);
s->idx = idx++;
- value_init (&s->val, var_get_width (var[pidx]));
- value_copy (&s->val, &src->values[pidx], var_get_width (var[pidx]));
+ s->width = var_get_width (var[pidx]);
+ value_init (&s->val, s->width);
+ value_copy (&s->val, &src->values[pidx], s->width);
ds_init_empty (&s->label);
var_append_value_name (var[pidx], &s->val, &s->label);
{
struct category *s = xzalloc (sizeof *s);
s->idx = idx++;
- value_init (&s->val, var_get_width (var[sidx]));
+ s->width = var_get_width (var[sidx]);
+ value_init (&s->val, s->width);
value_copy (&s->val, &src->values[sidx], var_get_width (var[sidx]));
ds_init_empty (&s->label);
var_append_value_name (var[sidx], &s->val, &s->label);
struct category *next = NULL;
HMAP_FOR_EACH_SAFE (foo, next, struct category, node, m)
{
+ value_destroy (&foo->val, foo->width);
+
ds_destroy (&foo->label);
free (foo);
}