dictionary: Introduce SPLIT_NONE for dictionaries without split variables.
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 6 Aug 2022 17:55:12 +0000 (10:55 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Sun, 7 Aug 2022 16:53:13 +0000 (09:53 -0700)
src/data/dictionary.c
src/data/dictionary.h

index c331ea234550f461d0ad07d3ff8300a109af440e..750d7858004d86d9bac70da1601fe94cd539ab29 100644 (file)
@@ -259,7 +259,7 @@ dict_create (const char *encoding)
     .names_must_be_ids = true,
     .name_map = HMAP_INITIALIZER (d->name_map),
     .attributes = ATTRSET_INITIALIZER (d->attributes),
-    .split_type = SPLIT_LAYERED,
+    .split_type = SPLIT_NONE,
     .ref_cnt = 1,
   };
 
@@ -393,7 +393,7 @@ dict_set_split_vars__ (struct dictionary *d,
   assert (n == 0 || split != NULL);
 
   d->n_splits = n;
-  d->split_type = type;
+  d->split_type = type == SPLIT_NONE ? SPLIT_LAYERED : type;
   if (n > 0)
    {
     d->split = xnrealloc (d->split, n, sizeof *d->split) ;
@@ -425,7 +425,7 @@ dict_set_split_vars (struct dictionary *d,
 void
 dict_clear_split_vars (struct dictionary *d)
 {
-  dict_set_split_vars (d, NULL, 0, SPLIT_LAYERED);
+  dict_set_split_vars (d, NULL, 0, SPLIT_NONE);
 }
 \f
 
@@ -623,7 +623,7 @@ dict_clear__ (struct dictionary *d, bool skip_callbacks)
   invalidate_proto (d);
   hmap_clear (&d->name_map);
   d->next_value_idx = 0;
-  dict_set_split_vars__ (d, NULL, 0, SPLIT_LAYERED, skip_callbacks);
+  dict_set_split_vars__ (d, NULL, 0, SPLIT_NONE, skip_callbacks);
 
   if (skip_callbacks)
     {
index 067142cfd08f18761d6b086f7cbd1edb8c4bb5d9..050b4a8c4dff01febadf5f7896dd40c002d9066f 100644 (file)
@@ -123,9 +123,12 @@ 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.  */
   };