02110-1301, USA. */
#include <config.h>
+
#include "dictionary.h"
+
#include <stdlib.h>
#include <ctype.h>
-#include <libpspp/array.h>
-#include <libpspp/alloc.h>
+
#include "case.h"
-#include "category.h"
#include "cat-routines.h"
+#include "category.h"
+#include "settings.h"
+#include "value-labels.h"
+#include "variable.h"
+#include <libpspp/alloc.h>
+#include <libpspp/array.h>
#include <libpspp/compiler.h>
-#include <libpspp/message.h>
#include <libpspp/hash.h>
+#include <libpspp/message.h>
#include <libpspp/misc.h>
-#include "settings.h"
#include <libpspp/str.h>
-#include "value-labels.h"
-#include "variable.h"
#include "gettext.h"
#define _(msgid) gettext (msgid)
size_t split_cnt; /* SPLIT FILE count. */
struct variable *weight; /* WEIGHT variable. */
struct variable *filter; /* FILTER variable. */
- int case_limit; /* Current case limit (N command). */
+ size_t case_limit; /* Current case limit (N command). */
char *label; /* File label. */
char *documents; /* Documents, as a string. */
struct vector **vector; /* Vectors of variables. */
assert (d != NULL);
assert (name != NULL);
- assert (width >= 0 && width < 256);
+ assert (width >= 0 && width <= MAX_STRING);
assert (var_is_plausible_name(name,0));
v->type = width == 0 ? NUMERIC : ALPHA;
v->width = width;
v->fv = d->next_value_idx;
- v->nv = width == 0 ? 1 : DIV_RND_UP (width, 8);
- v->init = 1;
- v->reinit = dict_class_from_id (v->name) != DC_SCRATCH;
+ v->nv = width_to_bytes(width) / MAX_SHORT_STRING ;
+ v->leave = dict_class_from_id (v->name) == DC_SCRATCH;
v->index = d->var_cnt;
mv_init (&v->miss, width);
if (v->type == NUMERIC)
short_name[] is intentionally not copied, because there is
no reason to give a new variable with potentially a new name
the same short name. */
- nv->init = 1;
- nv->reinit = ov->reinit;
+ nv->leave = ov->leave;
mv_copy (&nv->miss, &ov->miss);
nv->print = ov->print;
nv->write = ov->write;
}
/* Returns the case limit for dictionary D, or zero if the number
- of cases is unlimited (see cmd_n()). */
-int
+ of cases is unlimited. */
+size_t
dict_get_case_limit (const struct dictionary *d)
{
assert (d != NULL);
return d->case_limit;
}
-/* Sets CASE_LIMIT as the case limit for dictionary D. Zero for
- CASE_LIMIT indicates no limit. */
+/* Sets CASE_LIMIT as the case limit for dictionary D. Use
+ 0 for CASE_LIMIT to indicate no limit. */
void
-dict_set_case_limit (struct dictionary *d, int case_limit)
+dict_set_case_limit (struct dictionary *d, size_t case_limit)
{
assert (d != NULL);
- assert (case_limit >= 0);
d->case_limit = case_limit;
}