Change "union value" to dynamically allocate long strings.
[pspp-builds.git] / src / data / lazy-casereader.c
index 2cb8911fe29770559eee3c7c2ea702e88a38b9f5..44897d165a3537fa69d9cdaf7c3418e24031bfab 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2007 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009 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
@@ -43,8 +43,8 @@ static const struct casereader_class lazy_casereader_class;
    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
@@ -52,7 +52,7 @@ static const struct casereader_class lazy_casereader_class;
    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)
 {
@@ -63,7 +63,7 @@ lazy_casereader_create (size_t value_cnt, casenumber case_cnt,
   *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);
 }
 
@@ -117,13 +117,12 @@ instantiate_lazy_casereader (struct casereader *reader,
   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
@@ -143,13 +142,12 @@ lazy_casereader_clone (struct casereader *reader, void *lc_)
   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 =