#ifndef DICTIONARY_H
#define DICTIONARY_H
+#include <stdbool.h>
#include <stddef.h>
/* Dictionary. */
struct variable *dict_lookup_var (const struct dictionary *, const char *);
struct variable *dict_lookup_var_assert (const struct dictionary *,
const char *);
-int dict_contains_var (const struct dictionary *, const struct variable *);
+bool dict_contains_var (const struct dictionary *, const struct variable *);
void dict_delete_var (struct dictionary *, struct variable *);
void dict_delete_vars (struct dictionary *,
struct variable *const *, size_t count);
+void dict_delete_scratch_vars (struct dictionary *);
void dict_reorder_var (struct dictionary *d, struct variable *v,
size_t new_index);
void dict_reorder_vars (struct dictionary *,
struct variable *const *, size_t count);
void dict_rename_var (struct dictionary *, struct variable *, const char *);
-int dict_rename_vars (struct dictionary *,
- struct variable **, char **new_names,
- size_t count, char **err_name);
+bool dict_rename_vars (struct dictionary *,
+ struct variable **, char **new_names,
+ size_t count, char **err_name);
struct ccase;
struct variable *dict_get_weight (const struct dictionary *);
size_t dict_get_case_size (const struct dictionary *);
void dict_compact_values (struct dictionary *);
-void dict_compact_case (const struct dictionary *,
- struct ccase *, const struct ccase *);
size_t dict_get_compacted_value_cnt (const struct dictionary *);
int *dict_get_compacted_idx_to_fv (const struct dictionary *);
+bool dict_needs_compaction (const struct dictionary *);
+
+struct dict_compactor *dict_make_compactor (const struct dictionary *);
+void dict_compactor_compact (const struct dict_compactor *,
+ struct ccase *, const struct ccase *);
+void dict_compactor_destroy (struct dict_compactor *);
struct variable *const *dict_get_split_vars (const struct dictionary *);
size_t dict_get_split_cnt (const struct dictionary *);
const char *dict_get_documents (const struct dictionary *);
void dict_set_documents (struct dictionary *, const char *);
-int dict_create_vector (struct dictionary *,
- const char *name,
- struct variable **, size_t cnt);
+bool dict_create_vector (struct dictionary *,
+ const char *name,
+ struct variable **, size_t cnt);
const struct vector *dict_get_vector (const struct dictionary *,
size_t idx);
size_t dict_get_vector_cnt (const struct dictionary *);