/* Weight variable. */
double dict_get_case_weight (const struct dictionary *,
const struct ccase *, bool *);
+double dict_get_rounded_case_weight (const struct dictionary *,
+ const struct ccase *, bool *);
struct variable *dict_get_weight (const struct dictionary *);
void dict_set_weight (struct dictionary *, struct variable *);
-const struct fmt_spec *dict_get_weight_format (const struct dictionary *);
+struct fmt_spec dict_get_weight_format (const struct dictionary *);
/* Filter variable. */
struct variable *dict_get_filter (const struct dictionary *);
/* Size of cases for this dictionary. */
const struct caseproto *dict_get_proto (const struct dictionary *);
-int dict_get_next_value_idx (const struct dictionary *);
-size_t dict_get_case_size (const struct dictionary *);
/* Making this dictionary's cases smaller (if some variables were
deleted). */
size_t dict_count_values (const struct dictionary *,
unsigned int exclude_classes);
void dict_compact_values (struct dictionary *);
-struct caseproto *dict_get_compacted_proto (const struct dictionary *,
- unsigned int exclude_classes);
-/* SPLIT FILE variables. */
+/* SPLIT FILE variables.
+
+ SPLIT_NONE is used if and only if there are no split file variables. */
enum split_type
{
+ SPLIT_NONE, /* No split file variables. */
SPLIT_SEPARATE, /* Produce separate output for each split. */
SPLIT_LAYERED, /* Output splits in same table. */
};
+#define MAX_SPLITS 8
const struct variable *const *dict_get_split_vars (const struct dictionary *);
size_t dict_get_n_splits (const struct dictionary *);
enum split_type dict_get_split_type (const struct dictionary *);
bool dict_delete_mrset (struct dictionary *, const char *name);
void dict_clear_mrsets (struct dictionary *);
+/* Variable sets. */
+const struct varset *dict_get_varset (const struct dictionary *, size_t idx);
+size_t dict_get_n_varsets (const struct dictionary *);
+const struct varset *dict_lookup_varset (const struct dictionary *,
+ const char *name);
+
+bool dict_add_varset (struct dictionary *, struct varset *);
+bool dict_delete_varset (struct dictionary *, const char *name);
+void dict_clear_varsets (struct dictionary *);
+
/* Attributes. */
struct attrset *dict_get_attributes (const struct dictionary *);
void dict_set_attributes (struct dictionary *, const struct attrset *);
/* Data encoding. */
const char *dict_get_encoding (const struct dictionary *d);
-bool dict_id_is_valid (const struct dictionary *, const char *id,
- bool issue_error);
-
-/* Internal variables. */
-struct variable *dict_create_internal_var (int case_idx, int width);
-void dict_destroy_internal_var (struct variable *);
+char *dict_id_is_valid__ (const struct dictionary *, const char *id)
+ WARN_UNUSED_RESULT;
+bool dict_id_is_valid (const struct dictionary *, const char *id);
/* Functions to be called upon dictionary changes. */
struct dict_callbacks
{
void (*var_added) (struct dictionary *, int, void *);
- void (*var_deleted) (struct dictionary *, const struct variable *,
- int dict_index, int case_index, void *);
+ void (*vars_deleted) (struct dictionary *, int dict_index, unsigned int n, void *);
void (*var_changed) (struct dictionary *, int, unsigned int, const struct variable *, void *);
void (*weight_changed) (struct dictionary *, int, void *);
void (*filter_changed) (struct dictionary *, int, void *);