pspp-cvs
[Top][All Lists]
Advanced

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

[Pspp-cvs] pspp po/de.po po/pspp.pot src/data/ChangeLog sr...


From: John Darrington
Subject: [Pspp-cvs] pspp po/de.po po/pspp.pot src/data/ChangeLog sr...
Date: Mon, 25 Sep 2006 09:35:16 +0000

CVSROOT:        /sources/pspp
Module name:    pspp
Changes by:     John Darrington <jmd>   06/09/25 09:35:16

Modified files:
        po             : de.po pspp.pot 
        src/data       : ChangeLog casefile-private.h casefile.c 
                         casefile.h fastfile.c procedure.c 
                         transformations.h 
        src/language/control: do-if.c loop.c 
        src/language/data-io: data-list.c get.c inpt-pgm.c print-space.c 
                              print.c 
        src/language/stats: autorecode.c descriptives.c regression.q 
        src/language/tests: casefile-test.c 
        src/language/xforms: compute.c count.c recode.c sample.c 
                             select-if.c 
        src/ui         : flexifile.c 
        tests/xforms   : casefile.sh 

Log message:
        Added casereader_clone function.
        Introduced casenum_t type to enumerate and count cases.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/pspp/po/de.po?cvsroot=pspp&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/pspp/po/pspp.pot?cvsroot=pspp&r1=1.96&r2=1.97
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/ChangeLog?cvsroot=pspp&r1=1.62&r2=1.63
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casefile-private.h?cvsroot=pspp&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casefile.c?cvsroot=pspp&r1=1.15&r2=1.16
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/casefile.h?cvsroot=pspp&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/fastfile.c?cvsroot=pspp&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/procedure.c?cvsroot=pspp&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/pspp/src/data/transformations.h?cvsroot=pspp&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/control/do-if.c?cvsroot=pspp&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/control/loop.c?cvsroot=pspp&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/data-list.c?cvsroot=pspp&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/get.c?cvsroot=pspp&r1=1.16&r2=1.17
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/inpt-pgm.c?cvsroot=pspp&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/print-space.c?cvsroot=pspp&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/data-io/print.c?cvsroot=pspp&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/autorecode.c?cvsroot=pspp&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/descriptives.c?cvsroot=pspp&r1=1.10&r2=1.11
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/stats/regression.q?cvsroot=pspp&r1=1.29&r2=1.30
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/tests/casefile-test.c?cvsroot=pspp&r1=1.4&r2=1.5
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/xforms/compute.c?cvsroot=pspp&r1=1.5&r2=1.6
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/xforms/count.c?cvsroot=pspp&r1=1.7&r2=1.8
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/xforms/recode.c?cvsroot=pspp&r1=1.9&r2=1.10
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/xforms/sample.c?cvsroot=pspp&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/pspp/src/language/xforms/select-if.c?cvsroot=pspp&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/pspp/src/ui/flexifile.c?cvsroot=pspp&r1=1.1&r2=1.2
http://cvs.savannah.gnu.org/viewcvs/pspp/tests/xforms/casefile.sh?cvsroot=pspp&r1=1.8&r2=1.9

Patches:
Index: po/de.po
===================================================================
RCS file: /sources/pspp/pspp/po/de.po,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- po/de.po    30 Jul 2006 12:27:59 -0000      1.11
+++ po/de.po    25 Sep 2006 09:35:15 -0000      1.12
@@ -10,7 +10,7 @@
 msgstr ""
 "Project-Id-Version: PSPP 0.4.2\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2006-07-30 14:13+0800\n"
+"POT-Creation-Date: 2006-09-25 16:28+0800\n"
 "PO-Revision-Date: 2006-05-26 17:49+0800\n"
 "Last-Translator: John Darrington <address@hidden>\n"
 "Language-Team: German <address@hidden>\n"
@@ -268,32 +268,32 @@
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/data/fastfile.c:499
+#: src/data/fastfile.c:536
 #, c-format
 msgid "%s: Removing temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:623
+#: src/data/fastfile.c:660
 #, c-format
 msgid "Error writing temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:651
+#: src/data/fastfile.c:688
 #, c-format
 msgid "%s: Opening temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:695
+#: src/data/fastfile.c:732
 #, c-format
 msgid "%s: Seeking temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:717
+#: src/data/fastfile.c:754
 #, c-format
 msgid "%s: Reading temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:720
+#: src/data/fastfile.c:757
 #, c-format
 msgid "%s: Temporary file ended unexpectedly."
 msgstr ""
@@ -1163,24 +1163,24 @@
 msgstr ""
 
 #: src/language/data-io/data-list.c:403 src/language/data-io/data-list.c:503
-#: src/language/data-io/print.c:368 src/language/dictionary/split-file.c:84
+#: src/language/data-io/print.c:370 src/language/dictionary/split-file.c:84
 #: src/language/dictionary/sys-file-info.c:144
 #: src/language/dictionary/sys-file-info.c:378
 #: src/language/stats/descriptives.c:894
 msgid "Variable"
 msgstr ""
 
-#: src/language/data-io/data-list.c:404 src/language/data-io/print.c:369
+#: src/language/data-io/data-list.c:404 src/language/data-io/print.c:371
 msgid "Record"
 msgstr ""
 
-#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:370
+#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:372
 #: src/ui/gui/var-sheet.c:78
 msgid "Columns"
 msgstr "Spalten"
 
 #: src/language/data-io/data-list.c:406 src/language/data-io/data-list.c:504
-#: src/language/data-io/print.c:371
+#: src/language/data-io/print.c:373
 msgid "Format"
 msgstr ""
 
@@ -1416,7 +1416,7 @@
 msgid "COLUMN subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/inpt-pgm.c:385
+#: src/language/data-io/inpt-pgm.c:384
 msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
@@ -1678,19 +1678,19 @@
 "Data fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/language/data-io/print.c:246
+#: src/language/data-io/print.c:248
 #, c-format
 msgid "Output calls for %d records but %d specified on RECORDS subcommand."
 msgstr ""
 
-#: src/language/data-io/print.c:400
+#: src/language/data-io/print.c:402
 #, c-format
 msgid "Writing %d record to %s."
 msgid_plural "Writing %d records to %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/language/data-io/print.c:404
+#: src/language/data-io/print.c:406
 #, c-format
 msgid "Writing %d record."
 msgid_plural "Writing %d records."
@@ -1727,7 +1727,7 @@
 msgstr ""
 
 #: src/language/dictionary/formats.c:92
-msgid "`(' expected after variable list"
+msgid "`(' expected after variable list."
 msgstr ""
 
 #: src/language/dictionary/formats.c:102 src/language/dictionary/numeric.c:71
@@ -4222,7 +4222,7 @@
 msgid "Save Data As"
 msgstr "Speichern unter"
 
-#: src/ui/gui/menu-actions.c:582
+#: src/ui/gui/menu-actions.c:500
 msgid "Font Selection"
 msgstr "Schriftwahlung"
 
@@ -4250,11 +4250,11 @@
 msgid "Sorry. The help system hasn't yet been implemented."
 msgstr "Es gibt noch nicht kein Helpsysteme. Schade!"
 
-#: src/ui/gui/psppire-data-store.c:731
+#: src/ui/gui/psppire-data-store.c:733
 msgid "var"
 msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:812 src/ui/gui/psppire-var-store.c:518
+#: src/ui/gui/psppire-data-store.c:814 src/ui/gui/psppire-var-store.c:518
 #: src/ui/gui/psppire-var-store.c:528 src/ui/gui/psppire-var-store.c:538
 #: src/ui/gui/psppire-var-store.c:735
 #, c-format

Index: po/pspp.pot
===================================================================
RCS file: /sources/pspp/pspp/po/pspp.pot,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -b -r1.96 -r1.97
--- po/pspp.pot 30 Jul 2006 12:27:59 -0000      1.96
+++ po/pspp.pot 25 Sep 2006 09:35:15 -0000      1.97
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: address@hidden"
-"POT-Creation-Date: 2006-07-30 14:13+0800\n"
+"POT-Creation-Date: 2006-09-25 16:28+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <address@hidden>\n"
 "Language-Team: LANGUAGE <address@hidden>\n"
@@ -267,32 +267,32 @@
 "system-missing, zero, or negative.  These case(s) were ignored."
 msgstr ""
 
-#: src/data/fastfile.c:499
+#: src/data/fastfile.c:536
 #, c-format
 msgid "%s: Removing temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:623
+#: src/data/fastfile.c:660
 #, c-format
 msgid "Error writing temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:651
+#: src/data/fastfile.c:688
 #, c-format
 msgid "%s: Opening temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:695
+#: src/data/fastfile.c:732
 #, c-format
 msgid "%s: Seeking temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:717
+#: src/data/fastfile.c:754
 #, c-format
 msgid "%s: Reading temporary file: %s."
 msgstr ""
 
-#: src/data/fastfile.c:720
+#: src/data/fastfile.c:757
 #, c-format
 msgid "%s: Temporary file ended unexpectedly."
 msgstr ""
@@ -1162,24 +1162,24 @@
 msgstr ""
 
 #: src/language/data-io/data-list.c:403 src/language/data-io/data-list.c:503
-#: src/language/data-io/print.c:368 src/language/dictionary/split-file.c:84
+#: src/language/data-io/print.c:370 src/language/dictionary/split-file.c:84
 #: src/language/dictionary/sys-file-info.c:144
 #: src/language/dictionary/sys-file-info.c:378
 #: src/language/stats/descriptives.c:894
 msgid "Variable"
 msgstr ""
 
-#: src/language/data-io/data-list.c:404 src/language/data-io/print.c:369
+#: src/language/data-io/data-list.c:404 src/language/data-io/print.c:371
 msgid "Record"
 msgstr ""
 
-#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:370
+#: src/language/data-io/data-list.c:405 src/language/data-io/print.c:372
 #: src/ui/gui/var-sheet.c:78
 msgid "Columns"
 msgstr ""
 
 #: src/language/data-io/data-list.c:406 src/language/data-io/data-list.c:504
-#: src/language/data-io/print.c:371
+#: src/language/data-io/print.c:373
 msgid "Format"
 msgstr ""
 
@@ -1415,7 +1415,7 @@
 msgid "COLUMN subcommand multiply specified."
 msgstr ""
 
-#: src/language/data-io/inpt-pgm.c:385
+#: src/language/data-io/inpt-pgm.c:384
 msgid ""
 "REREAD: Column numbers must be positive finite numbers.  Column set to 1."
 msgstr ""
@@ -1677,19 +1677,19 @@
 "Data fields must be listed in order of increasing record number."
 msgstr ""
 
-#: src/language/data-io/print.c:246
+#: src/language/data-io/print.c:248
 #, c-format
 msgid "Output calls for %d records but %d specified on RECORDS subcommand."
 msgstr ""
 
-#: src/language/data-io/print.c:400
+#: src/language/data-io/print.c:402
 #, c-format
 msgid "Writing %d record to %s."
 msgid_plural "Writing %d records to %s."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/language/data-io/print.c:404
+#: src/language/data-io/print.c:406
 #, c-format
 msgid "Writing %d record."
 msgid_plural "Writing %d records."
@@ -1726,7 +1726,7 @@
 msgstr ""
 
 #: src/language/dictionary/formats.c:92
-msgid "`(' expected after variable list"
+msgid "`(' expected after variable list."
 msgstr ""
 
 #: src/language/dictionary/formats.c:102 src/language/dictionary/numeric.c:71
@@ -4221,7 +4221,7 @@
 msgid "Save Data As"
 msgstr ""
 
-#: src/ui/gui/menu-actions.c:582
+#: src/ui/gui/menu-actions.c:500
 msgid "Font Selection"
 msgstr ""
 
@@ -4249,11 +4249,11 @@
 msgid "Sorry. The help system hasn't yet been implemented."
 msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:731
+#: src/ui/gui/psppire-data-store.c:733
 msgid "var"
 msgstr ""
 
-#: src/ui/gui/psppire-data-store.c:812 src/ui/gui/psppire-var-store.c:518
+#: src/ui/gui/psppire-data-store.c:814 src/ui/gui/psppire-var-store.c:518
 #: src/ui/gui/psppire-var-store.c:528 src/ui/gui/psppire-var-store.c:538
 #: src/ui/gui/psppire-var-store.c:735
 #, c-format

Index: src/data/ChangeLog
===================================================================
RCS file: /sources/pspp/pspp/src/data/ChangeLog,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -b -r1.62 -r1.63
--- src/data/ChangeLog  21 Sep 2006 14:01:09 -0000      1.62
+++ src/data/ChangeLog  25 Sep 2006 09:35:15 -0000      1.63
@@ -1,3 +1,10 @@
+Mon Sep 25 17:11:46 WST 2006 John Darrington <address@hidden>
+
+       * casefile-private.h casefile.c casefile.h fastfile.c: Created new
+       casereader method casereader_clone.   
+       
+       * procedure.c pransformations.h: Introduced new type casenum_t
+
 Thu Sep 21 07:00:30 2006  Ben Pfaff  <address@hidden>
 
        * variable.c: (width_to_bytes) Rephrase code for clarify.

Index: src/data/casefile-private.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/casefile-private.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/data/casefile-private.h 17 Jul 2006 10:45:43 -0000      1.1
+++ src/data/casefile-private.h 25 Sep 2006 09:35:15 -0000      1.2
@@ -65,6 +65,8 @@
   unsigned long (*cnum) (const struct casereader *);
 
   void (*destroy) (struct casereader * r);
+
+  struct casereader * (*clone) (const struct casereader *);
 };
 
 

Index: src/data/casefile.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/casefile.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- src/data/casefile.c 17 Jul 2006 10:45:43 -0000      1.15
+++ src/data/casefile.c 25 Sep 2006 09:35:15 -0000      1.16
@@ -157,7 +157,10 @@
   if ( ! read_case ) return false;
 
   if ( ffr->destructive && casefile_in_core (cf) )
+    {
+      case_nullify (c);
     case_move (c, read_case);
+    }
   else
     case_clone (c, read_case);
 
@@ -173,6 +176,16 @@
   r->class->destroy(r);
 }
 
+/* Creates a copy of R and returns it */
+struct casereader *
+casereader_clone(const struct casereader *r)
+{
+  /* Would we ever want to clone a destructive reader ?? */
+  assert ( ! r->destructive ) ;
+
+  return r->class->clone (r);
+}
+
 /* Destroys casefile CF. */
 void
 casefile_destroy(struct casefile *cf)

Index: src/data/casefile.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/casefile.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/data/casefile.h 17 Jul 2006 10:45:43 -0000      1.4
+++ src/data/casefile.h 25 Sep 2006 09:35:15 -0000      1.5
@@ -30,6 +30,7 @@
 struct casefile;
 
 
+/* Casereader functions */
 
 struct casefile *casereader_get_casefile (const struct casereader *r);
 
@@ -41,6 +42,11 @@
 
 void casereader_destroy (struct casereader *r);
 
+struct casereader *casereader_clone(const struct casereader *r);
+
+
+/* Casefile functions */
+
 void casefile_destroy (struct casefile *cf);
 
 bool casefile_error (const struct casefile *cf);
@@ -50,9 +56,8 @@
 size_t casefile_get_value_cnt (const struct casefile *cf);
 
 struct casereader *casefile_get_reader (const struct casefile *cf);
-struct casereader *casefile_get_destructive_reader (struct casefile *cf);
-
 
+struct casereader *casefile_get_destructive_reader (struct casefile *cf);
 
 bool casefile_append (struct casefile *cf, const struct ccase *c);
 

Index: src/data/fastfile.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/fastfile.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/data/fastfile.c 17 Jul 2006 10:45:43 -0000      1.1
+++ src/data/fastfile.c 25 Sep 2006 09:35:15 -0000      1.2
@@ -86,8 +86,7 @@
           also read with casereaders in this phase, but the
           ability to create new casereaders is curtailed.
 
-          In this phase, casereaders could still be cloned (once
-          we eventually implement cloning).
+          In this phase, casereaders could still be cloned.
 
           To transition from phase 1 or 2 to phase 3 and create a
           casereader, call casefile_get_destructive_reader().
@@ -287,6 +286,44 @@
   return reader;
 }
 
+
+/* Creates a copy of the casereader CR, and returns it */
+static struct casereader *
+fastfilereader_clone (const struct casereader *cr)
+{
+  const struct fastfilereader *ffr = (const struct fastfilereader *) cr ;
+  struct fastfilereader *new_ffr = xzalloc (sizeof *new_ffr);
+
+  struct casereader *new_reader = (struct casereader *) new_ffr;
+
+  struct casefile *cf =  casereader_get_casefile (cr);
+  struct fastfile *ff = (struct fastfile *) cf;
+
+  assert (!cf->being_destroyed);
+
+  /* Flush the buffer to disk if it's not empty. */
+  if (ff->mode == WRITE && ff->storage == DISK)
+    flush_buffer (ff);
+
+  ff->mode = READ;
+
+  casereader_register (cf, new_reader, &class_reader);
+
+  new_ffr->case_idx = ffr->case_idx ;
+  new_reader->destructive = cr->destructive;
+  new_ffr->fd = ffr->fd ;
+  new_ffr->buffer = ffr->buffer ;
+  new_ffr->buffer_pos = ffr->buffer_pos;
+
+  if (ff->storage == DISK)
+    reader_open_file (new_ffr);
+
+  return new_reader;
+}
+
+
+
+
 /* Returns the number of `union value's in a case for CF. */
 static size_t
 fastfile_get_value_cnt (const struct casefile *cf)
@@ -748,4 +785,5 @@
     fastfilereader_get_next_case,
     fastfilereader_cnum,
     fastfilereader_destroy,
+    fastfilereader_clone,
   };

Index: src/data/procedure.c
===================================================================
RCS file: /sources/pspp/pspp/src/data/procedure.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- src/data/procedure.c        17 Jul 2006 10:45:43 -0000      1.11
+++ src/data/procedure.c        25 Sep 2006 09:35:15 -0000      1.12
@@ -875,7 +875,7 @@
    *CASES_REMAINING. */
 static int
 case_limit_trns_proc (void *cases_remaining_,
-                      struct ccase *c UNUSED, int case_nr UNUSED) 
+                      struct ccase *c UNUSED, casenum_t case_nr UNUSED) 
 {
   size_t *cases_remaining = cases_remaining_;
   if (*cases_remaining > 0) 
@@ -914,7 +914,7 @@
 /* FILTER transformation. */
 static int
 filter_trns_proc (void *filter_var_,
-                  struct ccase *c UNUSED, int case_nr UNUSED) 
+                  struct ccase *c UNUSED, casenum_t case_nr UNUSED) 
   
 {
   struct variable *filter_var = filter_var_;

Index: src/data/transformations.h
===================================================================
RCS file: /sources/pspp/pspp/src/data/transformations.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/data/transformations.h  4 May 2006 06:19:02 -0000       1.1
+++ src/data/transformations.h  25 Sep 2006 09:35:15 -0000      1.2
@@ -23,6 +23,8 @@
 #include <stdbool.h>
 #include <stddef.h>
 
+typedef unsigned long casenum_t ;
+
 /* trns_proc_func return values. */
 enum trns_result 
   {
@@ -35,7 +37,7 @@
 
 struct ccase;
 typedef void trns_finalize_func (void *);
-typedef int trns_proc_func (void *, struct ccase *, int);
+typedef int trns_proc_func (void *, struct ccase *, casenum_t);
 typedef bool trns_free_func (void *);
 
 /* Transformation chains. */

Index: src/language/control/do-if.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/control/do-if.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- src/language/control/do-if.c        5 May 2006 04:53:12 -0000       1.5
+++ src/language/control/do-if.c        25 Sep 2006 09:35:15 -0000      1.6
@@ -238,7 +238,7 @@
    Checks each clause and jumps to the appropriate
    transformation. */
 static int 
-do_if_trns_proc (void *do_if_, struct ccase *c, int case_num UNUSED)
+do_if_trns_proc (void *do_if_, struct ccase *c, casenum_t case_num UNUSED)
 {
   struct do_if_trns *do_if = do_if_;
   struct clause *clause;
@@ -277,7 +277,7 @@
 
 /* Breaks out of a DO IF construct. */
 static int 
-break_trns_proc (void *do_if_, struct ccase *c UNUSED, int case_num UNUSED)
+break_trns_proc (void *do_if_, struct ccase *c UNUSED, casenum_t case_num 
UNUSED)
 {
   struct do_if_trns *do_if = do_if_;
 

Index: src/language/control/loop.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/control/loop.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/language/control/loop.c 5 May 2006 04:53:12 -0000       1.6
+++ src/language/control/loop.c 25 Sep 2006 09:35:15 -0000      1.7
@@ -273,7 +273,7 @@
 
 /* Sets up LOOP for the first pass. */
 static int
-loop_trns_proc (void *loop_, struct ccase *c, int case_num)
+loop_trns_proc (void *loop_, struct ccase *c, casenum_t case_num)
 {
   struct loop_trns *loop = loop_;
 
@@ -325,7 +325,7 @@
 
 /* Finishes a pass through the loop and starts the next. */
 static int
-end_loop_trns_proc (void *loop_, struct ccase *c, int case_num UNUSED)
+end_loop_trns_proc (void *loop_, struct ccase *c, casenum_t case_num UNUSED)
 {
   struct loop_trns *loop = loop_;
 
@@ -363,7 +363,7 @@
 
 /* Executes BREAK. */
 static int
-break_trns_proc (void *loop_, struct ccase *c UNUSED, int case_num UNUSED)
+break_trns_proc (void *loop_, struct ccase *c UNUSED, casenum_t case_num 
UNUSED)
 {
   struct loop_trns *loop = loop_;
 

Index: src/language/data-io/data-list.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/data-list.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- src/language/data-io/data-list.c    18 Jul 2006 04:57:01 -0000      1.19
+++ src/language/data-io/data-list.c    25 Sep 2006 09:35:15 -0000      1.20
@@ -771,7 +771,7 @@
 
 /* Handle DATA LIST transformation DLS, parsing data into C. */
 static int
-data_list_trns_proc (void *dls_, struct ccase *c, int case_num UNUSED)
+data_list_trns_proc (void *dls_, struct ccase *c, casenum_t case_num UNUSED)
 {
   struct data_list_pgm *dls = dls_;
   int retval;

Index: src/language/data-io/get.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/get.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -b -r1.16 -r1.17
--- src/language/data-io/get.c  17 Jul 2006 10:45:43 -0000      1.16
+++ src/language/data-io/get.c  25 Sep 2006 09:35:15 -0000      1.17
@@ -542,7 +542,7 @@
 
 /* Writes case C to the system file specified on XSAVE or XEXPORT. */
 static int
-output_trns_proc (void *trns_, struct ccase *c, int case_num UNUSED)
+output_trns_proc (void *trns_, struct ccase *c, casenum_t case_num UNUSED)
 {
   struct output_trns *t = trns_;
   case_writer_write_case (t->aw, c);

Index: src/language/data-io/inpt-pgm.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/inpt-pgm.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- src/language/data-io/inpt-pgm.c     5 Aug 2006 15:28:12 -0000       1.13
+++ src/language/data-io/inpt-pgm.c     25 Sep 2006 09:35:15 -0000      1.14
@@ -297,7 +297,7 @@
 
 /* Sends the current case as the source's output. */
 int
-end_case_trns_proc (void *inp_, struct ccase *c, int case_nr UNUSED)
+end_case_trns_proc (void *inp_, struct ccase *c, casenum_t case_nr UNUSED)
 {
   struct input_program_pgm *inp = inp_;
 
@@ -370,7 +370,7 @@
 
 /* Executes a REREAD transformation. */
 static int
-reread_trns_proc (void *t_, struct ccase *c, int case_num)
+reread_trns_proc (void *t_, struct ccase *c, casenum_t case_num)
 {
   struct reread_trns *t = t_;
 
@@ -416,7 +416,7 @@
 /* Executes an END FILE transformation. */
 static int
 end_file_trns_proc (void *trns_ UNUSED, struct ccase *c UNUSED,
-                    int case_num UNUSED)
+                    casenum_t case_num UNUSED)
 {
   return TRNS_END_FILE;
 }

Index: src/language/data-io/print-space.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/print-space.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/language/data-io/print-space.c  18 Jul 2006 04:57:01 -0000      1.1
+++ src/language/data-io/print-space.c  25 Sep 2006 09:35:15 -0000      1.2
@@ -103,7 +103,7 @@
 /* Executes a PRINT SPACE transformation. */
 static int
 print_space_trns_proc (void *t_, struct ccase *c,
-                       int case_num UNUSED)
+                       casenum_t case_num UNUSED)
 {
   struct print_space_trns *trns = t_;
   int n;

Index: src/language/data-io/print.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/data-io/print.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- src/language/data-io/print.c        31 Jul 2006 17:32:55 -0000      1.13
+++ src/language/data-io/print.c        25 Sep 2006 09:35:15 -0000      1.14
@@ -416,7 +416,7 @@
 
 /* Performs the transformation inside print_trns T on case C. */
 static int
-print_trns_proc (void *trns_, struct ccase *c, int case_num UNUSED)
+print_trns_proc (void *trns_, struct ccase *c, casenum_t case_num UNUSED)
 {
   struct print_trns *trns = trns_;
   struct prt_out_spec *spec;

Index: src/language/stats/autorecode.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/autorecode.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/language/stats/autorecode.c     27 Jun 2006 19:09:22 -0000      1.9
+++ src/language/stats/autorecode.c     25 Sep 2006 09:35:15 -0000      1.10
@@ -272,7 +272,7 @@
 
 /* Executes an AUTORECODE transformation. */
 static int
-autorecode_trns_proc (void *trns_, struct ccase *c, int case_idx UNUSED)
+autorecode_trns_proc (void *trns_, struct ccase *c, casenum_t case_idx UNUSED)
 {
   struct autorecode_trns *trns = trns_;
   size_t i;

Index: src/language/stats/descriptives.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/descriptives.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- src/language/stats/descriptives.c   23 Sep 2006 00:15:58 -0000      1.10
+++ src/language/stats/descriptives.c   25 Sep 2006 09:35:15 -0000      1.11
@@ -576,7 +576,7 @@
 */
 static int
 descriptives_trns_proc (void *trns_, struct ccase * c,
-                        int case_idx UNUSED)
+                        casenum_t case_idx UNUSED)
 {
   struct dsc_trns *t = trns_;
   struct dsc_z_score *z;

Index: src/language/stats/regression.q
===================================================================
RCS file: /sources/pspp/pspp/src/language/stats/regression.q,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -b -r1.29 -r1.30
--- src/language/stats/regression.q     14 Jul 2006 19:17:50 -0000      1.29
+++ src/language/stats/regression.q     25 Sep 2006 09:35:15 -0000      1.30
@@ -544,7 +544,8 @@
   Gets the predicted values.
  */
 static int
-regression_trns_pred_proc (void *t_, struct ccase *c, int case_idx UNUSED)
+regression_trns_pred_proc (void *t_, struct ccase *c, 
+                          casenum_t case_idx UNUSED)
 {
   size_t i;
   size_t n_vals;
@@ -582,7 +583,8 @@
   Gets the residuals.
  */
 static int
-regression_trns_resid_proc (void *t_, struct ccase *c, int case_idx UNUSED)
+regression_trns_resid_proc (void *t_, struct ccase *c, 
+                           casenum_t case_idx UNUSED)
 {
   size_t i;
   size_t n_vals;

Index: src/language/tests/casefile-test.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/tests/casefile-test.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -b -r1.4 -r1.5
--- src/language/tests/casefile-test.c  17 Jul 2006 10:45:43 -0000      1.4
+++ src/language/tests/casefile-test.c  25 Sep 2006 09:35:15 -0000      1.5
@@ -28,6 +28,7 @@
 #include <stdarg.h>
 #include <language/command.h>
 #include <language/lexer/lexer.h>
+#include <libpspp/assertion.h>
 
 #include "xalloc.h"
 
@@ -38,6 +39,9 @@
 static void read_and_verify_random_case (struct casefile *cf,
                                          struct casereader *reader,
                                          size_t case_idx);
+static void test_casereader_clone (struct casereader *reader1, size_t 
case_cnt);
+                                
+
 static void fail_test (const char *message, ...);
 
 int
@@ -63,7 +67,7 @@
   if (token != '.')
     return lex_end_of_command ();
     
-  for (pattern = 0; pattern < 6; pattern++) 
+  for (pattern = 0; pattern < 7; pattern++) 
     {
       const size_t *size;
 
@@ -129,6 +133,12 @@
       for (; j < case_cnt; j++) 
         read_and_verify_random_case (cf, r2, j);
       break;
+    case 6:
+      test_casereader_clone (r1, case_cnt);
+      test_casereader_clone (r2, case_cnt);
+      break;
+    default:
+      NOT_REACHED ();
     }
   if (casereader_read (r1, &c))
     fail_test ("Casereader 1 not at end of file.");
@@ -205,6 +215,60 @@
 }
 
 static void
+test_casereader_clone (struct casereader *reader1, size_t case_cnt)
+{
+  size_t i;
+  size_t cases = 0;
+  struct ccase c1;
+  struct ccase c2;
+  struct casefile *src = casereader_get_casefile (reader1);
+  struct casereader *clone = NULL;
+
+  size_t value_cnt = casefile_get_value_cnt (src);
+
+  struct casefile *newfile = fastfile_create (value_cnt);
+  struct casereader *newreader;
+
+
+  /* Read a 3rd of the cases */
+  for ( i = 0 ; i < case_cnt / 3 ; ++i ) 
+    casereader_read (reader1, &c1);
+
+  clone = casereader_clone (reader1);
+
+  /* Copy all the cases into a new file */
+  while( casereader_read (reader1, &c1))
+    { 
+      casefile_append (newfile, &c1);
+      cases ++;
+    }
+
+  newreader = casefile_get_reader (newfile);
+
+  /* Make sure that the new file's are identical to those returned from 
+     the cloned reader */
+  while( casereader_read (clone, &c1))
+    { 
+      const union value *v1;
+      const union value *v2;
+      cases --;
+
+      if ( ! casereader_read_xfer (newreader, &c2) ) 
+       break;
+      
+      v1 = case_data_all (&c1) ;
+      v2 = case_data_all (&c2) ;
+
+      if ( 0 != memcmp (v1, v2, value_cnt * MAX_SHORT_STRING))
+       fail_test ("Cloned reader read different value at case %ld", cases);
+    }
+
+  if ( cases > 0 ) 
+    fail_test ("Cloned reader reads different number of cases.");
+
+}
+
+static void
 fail_test (const char *message, ...) 
 {
   va_list args;

Index: src/language/xforms/compute.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/xforms/compute.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -b -r1.5 -r1.6
--- src/language/xforms/compute.c       5 May 2006 04:53:13 -0000       1.5
+++ src/language/xforms/compute.c       25 Sep 2006 09:35:15 -0000      1.6
@@ -110,7 +110,7 @@
 
 /* Handle COMPUTE or IF with numeric target variable. */
 static int
-compute_num (void *compute_, struct ccase *c, int case_num)
+compute_num (void *compute_, struct ccase *c, casenum_t case_num)
 {
   struct compute_trns *compute = compute_;
 
@@ -125,7 +125,7 @@
 /* Handle COMPUTE or IF with numeric vector element target
    variable. */
 static int
-compute_num_vec (void *compute_, struct ccase *c, int case_num)
+compute_num_vec (void *compute_, struct ccase *c, casenum_t case_num)
 {
   struct compute_trns *compute = compute_;
 
@@ -157,7 +157,7 @@
 
 /* Handle COMPUTE or IF with string target variable. */
 static int
-compute_str (void *compute_, struct ccase *c, int case_num)
+compute_str (void *compute_, struct ccase *c, casenum_t case_num)
 {
   struct compute_trns *compute = compute_;
 
@@ -172,7 +172,7 @@
 /* Handle COMPUTE or IF with string vector element target
    variable. */
 static int
-compute_str_vec (void *compute_, struct ccase *c, int case_num)
+compute_str_vec (void *compute_, struct ccase *c, casenum_t case_num)
 {
   struct compute_trns *compute = compute_;
 

Index: src/language/xforms/count.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/xforms/count.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -b -r1.7 -r1.8
--- src/language/xforms/count.c 27 Jun 2006 19:09:22 -0000      1.7
+++ src/language/xforms/count.c 25 Sep 2006 09:35:15 -0000      1.8
@@ -325,7 +325,7 @@
 /* Performs the COUNT transformation T on case C. */
 static int
 count_trns_proc (void *trns_, struct ccase *c,
-                 int case_num UNUSED)
+                 casenum_t case_num UNUSED)
 {
   struct count_trns *trns = trns_;
   struct dst_var *dv;

Index: src/language/xforms/recode.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/xforms/recode.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- src/language/xforms/recode.c        8 Jul 2006 03:05:52 -0000       1.9
+++ src/language/xforms/recode.c        25 Sep 2006 09:35:15 -0000      1.10
@@ -622,7 +622,7 @@
 
 /* Performs RECODE transformation. */
 static int
-recode_trns_proc (void *trns_, struct ccase *c, int case_idx UNUSED)
+recode_trns_proc (void *trns_, struct ccase *c, casenum_t case_idx UNUSED)
 {
   struct recode_trns *trns = trns_;
   size_t i;

Index: src/language/xforms/sample.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/xforms/sample.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- src/language/xforms/sample.c        5 May 2006 04:53:13 -0000       1.6
+++ src/language/xforms/sample.c        25 Sep 2006 09:35:15 -0000      1.7
@@ -119,7 +119,7 @@
 /* Executes a SAMPLE transformation. */
 static int
 sample_trns_proc (void *t_, struct ccase *c UNUSED,
-                  int case_num UNUSED)
+                  casenum_t case_num UNUSED)
 {
   struct sample_trns *t = t_;
   double U;

Index: src/language/xforms/select-if.c
===================================================================
RCS file: /sources/pspp/pspp/src/language/xforms/select-if.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- src/language/xforms/select-if.c     27 Jun 2006 19:09:22 -0000      1.8
+++ src/language/xforms/select-if.c     25 Sep 2006 09:35:15 -0000      1.9
@@ -73,7 +73,7 @@
 /* Performs the SELECT IF transformation T on case C. */
 static int
 select_if_proc (void *t_, struct ccase *c,
-                int case_num)
+                casenum_t case_num)
 {
   struct select_if_trns *t = t_;
   return (expr_evaluate_num (t->e, c, case_num) == 1.0

Index: src/ui/flexifile.c
===================================================================
RCS file: /sources/pspp/pspp/src/ui/flexifile.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- src/ui/flexifile.c  17 Jul 2006 10:45:43 -0000      1.1
+++ src/ui/flexifile.c  25 Sep 2006 09:35:15 -0000      1.2
@@ -212,6 +212,24 @@
   return reader;
 }
 
+
+static struct casereader *
+flexifilereader_clone (const struct casereader *cr)
+{
+  const struct flexifilereader *ffr = (const struct flexifilereader *) cr;
+  struct flexifilereader *new_ffr = xzalloc (sizeof *new_ffr);
+  struct casereader *new_reader = (struct casereader *) new_ffr;
+  struct casefile *cf = casereader_get_casefile (cr);
+
+  casereader_register (cf, new_reader, CLASS_CASEREADER(&class_reader));
+
+  new_ffr->case_idx = ffr->case_idx ;
+  new_ffr->destructive = ffr->destructive ;
+
+  return new_reader;
+}
+
+
 static bool
 flexifile_in_core(const struct casefile *cf UNUSED)
 {
@@ -268,7 +286,8 @@
     {
       flexifilereader_get_next_case,
       0,  /* cnum */
-      flexifilereader_destroy
+      flexifilereader_destroy,
+      flexifilereader_clone
     }
   };
 

Index: tests/xforms/casefile.sh
===================================================================
RCS file: /sources/pspp/pspp/tests/xforms/casefile.sh,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- tests/xforms/casefile.sh    11 Mar 2006 07:16:40 -0000      1.8
+++ tests/xforms/casefile.sh    25 Sep 2006 09:35:15 -0000      1.9
@@ -66,12 +66,7 @@
 diff -b $TEMPDIR/casefile.out - <<EOF
 Casefile tests succeeded.
 EOF
-
-if [ $? -ne 0 ] ; then no_result ; fi
-
-
 if [ $? -ne 0 ] ; then fail ; fi
 
 
-
 pass;




reply via email to

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