pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] pspp/src/data ChangeLog casegrouper.c casereade...


From: Ben Pfaff
Subject: [Pspp-cvs] pspp/src/data ChangeLog casegrouper.c casereade...
Date: Sat, 08 Dec 2007 06:09:03 +0000

CVSROOT:        /cvsroot/pspp
Module name:    pspp
Changes by:     Ben Pfaff <blp> 07/12/08 06:09:03

Modified files:
        src/data       : ChangeLog casegrouper.c casereader.c 
                         casereader.h 

Log message:
        Patch #6302.
        
        * casegrouper.c (casegrouper_get_next_group): Cause a casegrouper
        made from an empty casereader produce a casegrouper with no
        groups, instead of one with one group that has no cases.
        
        * casereader.c (casereader_is_empty): New function.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/ChangeLog?cvsroot=pspp&r1=1.174&r2=1.175
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casegrouper.c?cvsroot=pspp&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casereader.c?cvsroot=pspp&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casereader.h?cvsroot=pspp&r1=1.5&r2=1.6

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/pspp/pspp/src/data/ChangeLog,v
retrieving revision 1.174
retrieving revision 1.175
diff -u -b -r1.174 -r1.175
--- ChangeLog   7 Dec 2007 05:22:06 -0000       1.174
+++ ChangeLog   8 Dec 2007 06:09:03 -0000       1.175
@@ -1,3 +1,13 @@
+2007-12-07  Ben Pfaff  <address@hidden>
+
+       Patch #6302.
+
+       * casegrouper.c (casegrouper_get_next_group): Cause a casegrouper
+       made from an empty casereader produce a casegrouper with no
+       groups, instead of one with one group that has no cases.
+
+       * casereader.c (casereader_is_empty): New function.
+
 2007-12-06  Ben Pfaff  <address@hidden>
 
        Patch #6303.

Index: casegrouper.c
===================================================================
RCS file: /cvsroot/pspp/pspp/src/data/casegrouper.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- casegrouper.c       7 Jul 2007 06:14:07 -0000       1.6
+++ casegrouper.c       8 Dec 2007 06:09:03 -0000       1.7
@@ -110,12 +110,21 @@
     {
       if (grouper->reader != NULL)
         {
+          if (!casereader_is_empty (grouper->reader))
+            {
           *reader = grouper->reader;
           grouper->reader = NULL;
           return true;
         }
       else
         {
+              casereader_destroy (grouper->reader);
+              grouper->reader = NULL;
+              return false;
+            }
+        }
+      else
+        {
           *reader = NULL;
           return false;
         }

Index: casereader.c
===================================================================
RCS file: /cvsroot/pspp/pspp/src/data/casereader.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- casereader.c        2 Oct 2007 04:13:07 -0000       1.8
+++ casereader.c        8 Dec 2007 06:09:03 -0000       1.9
@@ -183,6 +183,24 @@
   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. */

Index: casereader.h
===================================================================
RCS file: /cvsroot/pspp/pspp/src/data/casereader.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- casereader.h        12 Sep 2007 13:43:50 -0000      1.5
+++ casereader.h        8 Dec 2007 06:09:03 -0000       1.6
@@ -70,6 +70,7 @@
 
 bool casereader_peek (struct casereader *, casenumber, struct ccase *)
      WARN_UNUSED_RESULT;
+bool casereader_is_empty (struct casereader *);
 
 bool casereader_error (const struct casereader *);
 void casereader_force_error (struct casereader *);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]