/* PSPP - a program for statistical analysis.
- Copyright (C) 2004, 2007, 2009, 2010 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <config.h>
-#include <data/case.h>
+#include "data/case.h"
#include <limits.h>
#include <stddef.h>
#include <stdlib.h>
-#include <data/value.h>
-#include <data/variable.h>
-#include <libpspp/assertion.h>
-#include <libpspp/str.h>
+#include "data/value.h"
+#include "data/variable.h"
+#include "libpspp/assertion.h"
+#include "libpspp/str.h"
-#include "minmax.h"
-#include "xalloc.h"
+#include "gl/minmax.h"
+#include "gl/xalloc.h"
/* Set this flag to 1 to copy cases instead of ref counting them.
This is sometimes helpful in debugging situations. */
#endif
static size_t case_size (const struct caseproto *);
-static bool variable_matches_case (const struct ccase *,
+static void assert_variable_matches_case (const struct ccase *,
const struct variable *);
static void copy_forward (struct ccase *dst, size_t dst_idx,
const struct ccase *src, size_t src_idx,
const union value *
case_data (const struct ccase *c, const struct variable *v)
{
- assert (variable_matches_case (c, v));
+ assert_variable_matches_case (c, v);
return &c->values[var_get_case_index (v)];
}
union value *
case_data_rw (struct ccase *c, const struct variable *v)
{
- assert (variable_matches_case (c, v));
+ assert_variable_matches_case (c, v);
assert (!case_is_shared (c));
return &c->values[var_get_case_index (v)];
}
double
case_num (const struct ccase *c, const struct variable *v)
{
- assert (variable_matches_case (c, v));
+ assert_variable_matches_case (c, v);
return c->values[var_get_case_index (v)].f;
}
const uint8_t *
case_str (const struct ccase *c, const struct variable *v)
{
+ assert_variable_matches_case (c, v);
size_t idx = var_get_case_index (v);
- assert (variable_matches_case (c, v));
return value_str (&c->values[idx], caseproto_get_width (c->proto, idx));
}
uint8_t *
case_str_rw (struct ccase *c, const struct variable *v)
{
+ assert_variable_matches_case (c, v);
size_t idx = var_get_case_index (v);
- assert (variable_matches_case (c, v));
assert (!case_is_shared (c));
return value_str_rw (&c->values[idx], caseproto_get_width (c->proto, idx));
}
const union value *va = case_data (ca, *vap);
const union value *vb = case_data (cb, *vbp);
assert (var_get_width (*vap) == var_get_width (*vbp));
- cmp = value_compare_3way (va, vb, var_get_width (*vap));
+ cmp = value_compare_3way (va, vb, var_get_width (*vap));
}
return cmp;
}
or write data in C.
Useful in assertions. */
-static bool UNUSED
-variable_matches_case (const struct ccase *c, const struct variable *v)
+static void
+assert_variable_matches_case (const struct ccase *c, const struct variable *v)
{
size_t case_idx = var_get_case_index (v);
- return (case_idx < caseproto_get_n_widths (c->proto)
- && caseproto_get_width (c->proto, case_idx) == var_get_width (v));
+ assert (case_idx < caseproto_get_n_widths (c->proto));
+ assert (caseproto_get_width (c->proto, case_idx) == var_get_width (v));
}
/* Internal helper function for case_copy(). */