return false;
}
+/* Returns true if no cases remain to be read from READER, or if
+ an error has occurred on READER. (A return value of false
+ does *not* mean that the next call to casereader_peek or
+ casereader_read will return true, because an error can occur
+ in the meantime.) */
+bool
+casereader_is_empty (struct casereader *reader)
+{
+ struct ccase c;
+ if (reader->case_cnt == 0 || !casereader_peek (reader, 0, &c))
+ return true;
+ else
+ {
+ case_destroy (&c);
+ return false;
+ }
+}
+
/* Returns true if an I/O error or another hard error has
occurred on READER, a clone of READER, or on some object on
which READER's data has a dependency, false otherwise. */
casereader to be replaced by a shim caseader). */
void *
casereader_dynamic_cast (struct casereader *reader,
- struct casereader_class *class)
+ const struct casereader_class *class)
{
return reader->class == class ? reader->aux : NULL;
}
void *aux;
};
-static struct casereader_class random_reader_casereader_class;
+static const struct casereader_class random_reader_casereader_class;
/* Creates and returns a new random_reader with the given SHARED
data and OFFSET. Inserts the new random reader into the
}
/* Casereader class for random reader. */
-static struct casereader_class random_reader_casereader_class =
+static const struct casereader_class random_reader_casereader_class =
{
random_reader_read,
random_reader_destroy,
struct casereader *subreader; /* Subordinate casereader. */
};
-static struct casereader_random_class shim_class;
+static const struct casereader_random_class shim_class;
/* Interposes a buffering shim atop READER. */
static void
size_t value_cnt = casereader_get_value_cnt (reader);
casenumber case_cnt = casereader_get_case_cnt (reader);
struct shim *b = xmalloc (sizeof *b);
- b->window = casewindow_create (value_cnt, get_workspace_cases (value_cnt));
+ b->window = casewindow_create (value_cnt, settings_get_workspace_cases (value_cnt));
b->subreader = casereader_create_random (value_cnt, case_cnt,
&shim_class, b);
casereader_swap (reader, b->subreader);
}
/* Class for the buffered reader. */
-static struct casereader_random_class shim_class =
+static const struct casereader_random_class shim_class =
{
shim_read,
shim_destroy,