X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcase-tmpfile.c;h=0290f51126380366a233e8a3e5dc1f6eb8c22a68;hb=771599745cfe2a306dc45f2f299b9bfbfa19601b;hp=5744786611a737fb467f8f7c4c9673164696cc40;hpb=b5c82cc9aabe7e641011130240ae1b2e84348e23;p=pspp diff --git a/src/data/case-tmpfile.c b/src/data/case-tmpfile.c index 5744786611..0290f51126 100644 --- a/src/data/case-tmpfile.c +++ b/src/data/case-tmpfile.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2009, 2010, 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 @@ -16,18 +16,17 @@ #include -#include +#include "data/case-tmpfile.h" #include #include #include -#include -#include -#include +#include "libpspp/assertion.h" +#include "libpspp/taint.h" +#include "libpspp/ext-array.h" -#include "error.h" -#include "xalloc.h" +#include "gl/xalloc.h" /* A temporary file that stores an array of cases. */ struct case_tmpfile @@ -36,7 +35,7 @@ struct case_tmpfile struct caseproto *proto; /* Format of cases in the tmpfile. */ size_t case_size; /* Number of bytes per case. */ size_t *offsets; /* Offset to each value. */ - struct tmpfile *tmpfile; /* Temporary file. */ + struct ext_array *ext_array; /* Temporary file. */ }; /* Returns the number of bytes needed to store a value with the @@ -52,12 +51,12 @@ width_to_n_bytes (int width) static void * value_to_data (const union value *value_, int width) { - union value *value = (union value *) value_; + union value *value = CONST_CAST (union value *, value_); assert (sizeof value->f == sizeof (double)); if (width == 0) return &value->f; else - return value_str_rw (value, width); + return value->s; } /* Creates and returns a new case_tmpfile that will store cases @@ -72,7 +71,7 @@ case_tmpfile_create (const struct caseproto *proto) ctf = xmalloc (sizeof *ctf); ctf->taint = taint_create (); - ctf->tmpfile = tmpfile_create (); + ctf->ext_array = ext_array_create (); ctf->proto = caseproto_ref (proto); ctf->case_size = 0; n_values = caseproto_get_n_widths (proto); @@ -97,7 +96,7 @@ case_tmpfile_destroy (struct case_tmpfile *ctf) if (ctf != NULL) { struct taint *taint = ctf->taint; - tmpfile_destroy (ctf->tmpfile); + ext_array_destroy (ctf->ext_array); caseproto_unref (ctf->proto); free (ctf->offsets); free (ctf); @@ -149,9 +148,9 @@ case_tmpfile_get_values (const struct case_tmpfile *ctf, { int width = caseproto_get_width (ctf->proto, i); if (width != -1 - && !tmpfile_read (ctf->tmpfile, case_offset + ctf->offsets[i], - width_to_n_bytes (width), - value_to_data (&values[i], width))) + && !ext_array_read (ctf->ext_array, case_offset + ctf->offsets[i], + width_to_n_bytes (width), + value_to_data (&values[i], width))) return false; } return true; @@ -194,9 +193,9 @@ case_tmpfile_put_values (struct case_tmpfile *ctf, { int width = caseproto_get_width (ctf->proto, i); if (width != -1 - && !tmpfile_write (ctf->tmpfile, case_offset + ctf->offsets[i], - width_to_n_bytes (width), - value_to_data (values++, width))) + && !ext_array_write (ctf->ext_array, case_offset + ctf->offsets[i], + width_to_n_bytes (width), + value_to_data (values++, width))) return false; } return true;