- inp = xmalloc (sizeof *inp);
- inp->init_cnt = dict_get_next_value_idx (default_dict);
- inp->init = xnmalloc (inp->init_cnt, sizeof *inp->init);
- for (i = 0; i < inp->init_cnt; i++)
- inp->init[i] = -1;
- for (i = 0; i < dict_get_var_cnt (default_dict); i++)
- {
- struct variable *var = dict_get_var (default_dict, i);
- enum value_init_type value_init;
- size_t j;
-
- value_init = var->type == NUMERIC ? INP_NUMERIC : INP_STRING;
- value_init |= var->reinit ? INP_REINIT : INP_INIT_ONCE;
-
- for (j = 0; j < var->nv; j++)
- inp->init[j + var->fv] = value_init;
- }
- for (i = 0; i < inp->init_cnt; i++)
- assert (inp->init[i] != -1);
- inp->case_size = dict_get_case_size (default_dict);
+ inp->init = caseinit_create ();
+ caseinit_mark_for_init (inp->init, dataset_dict (ds));
+ inp->value_cnt = dict_get_next_value_idx (dataset_dict (ds));