}
-/* Sets N split vars SPLIT in dictionary D. */
+/* Sets N split vars SPLIT in dictionary D. N is silently capped to a maximum
+ of MAX_SPLITS. */
static void
dict_set_split_vars__ (struct dictionary *d,
struct variable *const *split, size_t n,
enum split_type type, bool skip_callbacks)
{
+ if (n > MAX_SPLITS)
+ n = MAX_SPLITS;
assert (n == 0 || split != NULL);
d->n_splits = n;
}
}
+enum split_type
+dict_get_split_type (const struct dictionary *d)
+{
+ return d->split_type;
+}
+
/* Sets N split vars SPLIT in dictionary D. */
void
dict_set_split_vars (struct dictionary *d,
}
/* Returns the value of D's weighting variable in case C, except
- that a negative weight is returned as 0. Returns 1 if the
+ that a negative or missing weight is returned as 0. Returns 1 if the
dictionary is unweighted. Will warn about missing, negative,
or zero values if *WARN_ON_INVALID is true. The function will
set *WARN_ON_INVALID to false if an invalid weight is
}
}
+/* Like dict_get_case_weight(), but additionally rounds each weight to the
+ nearest integer. */
+double
+dict_get_rounded_case_weight (const struct dictionary *d,
+ const struct ccase *c, bool *warn_on_invalid)
+{
+ return floor (dict_get_case_weight (d, c, warn_on_invalid) + 0.5);
+}
+
/* Returns the format to use for weights. */
const struct fmt_spec *
dict_get_weight_format (const struct dictionary *d)