/* PSPP - a program for statistical analysis.
- Copyright (C) 2007 Free Software Foundation, Inc.
+ Copyright (C) 2007, 2009, 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/lazy-casereader.h>
+#include "data/lazy-casereader.h"
#include <stdlib.h>
-#include <data/case.h>
-#include <data/casereader.h>
-#include <data/casereader-provider.h>
-#include <libpspp/assertion.h>
+#include "data/case.h"
+#include "data/casereader.h"
+#include "data/casereader-provider.h"
+#include "libpspp/assertion.h"
-#include "xalloc.h"
+#include "gl/xalloc.h"
/* A lazy casereader's auxiliary data. */
struct lazy_casereader
to a "serial number" that uniquely identifies the new lazy
casereader, for use with lazy_casereader_destroy.
- VALUE_CNT must be the number of struct values per case read
- from the casereader.
+ PROTO must be the format of the cases to be read from the
+ casereader.
CASE_CNT is an upper limit on the number of cases that
casereader_read will return from the casereader in successive
data source or CASENUMBER_MAX if the number of cases cannot be
predicted in advance. */
struct casereader *
-lazy_casereader_create (size_t value_cnt, casenumber case_cnt,
+lazy_casereader_create (const struct caseproto *proto, casenumber case_cnt,
struct casereader *(*callback) (void *aux), void *aux,
unsigned long int *serial)
{
*serial = lc->serial = next_serial++;
lc->callback = callback;
lc->aux = aux;
- return casereader_create_sequential (NULL, value_cnt, case_cnt,
+ return casereader_create_sequential (NULL, proto, case_cnt,
&lazy_casereader_class, lc);
}
casereader_destroy (subreader);
}
-static bool
-lazy_casereader_read (struct casereader *reader, void *lc_,
- struct ccase *c)
+static struct ccase *
+lazy_casereader_read (struct casereader *reader, void *lc_)
{
struct lazy_casereader *lc = lc_;
instantiate_lazy_casereader (reader, lc);
- return casereader_read (reader, c);
+ return casereader_read (reader);
}
static void
return casereader_clone (reader);
}
-static bool
-lazy_casereader_peek (struct casereader *reader, void *lc_,
- casenumber idx, struct ccase *c)
+static struct ccase *
+lazy_casereader_peek (struct casereader *reader, void *lc_, casenumber idx)
{
struct lazy_casereader *lc = lc_;
instantiate_lazy_casereader (reader, lc);
- return casereader_peek (reader, idx, c);
+ return casereader_peek (reader, idx);
}
static const struct casereader_class lazy_casereader_class =