#include <data/case.h>
#include <data/data-in.h>
#include <data/datasheet.h>
+#include <data/casereader.h>
#include <math/sort.h>
#include <libpspp/misc.h>
#include "xalloc.h"
-#include "xallocsa.h"
+#include "xmalloca.h"
/* --- prototypes --- */
static void psppire_case_file_class_init (PsppireCaseFileClass *class);
object_class->finalize = psppire_case_file_finalize;
signals [CASE_CHANGED] =
- g_signal_new ("case_changed",
+ g_signal_new ("case-changed",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST,
0,
signals [CASE_INSERTED] =
- g_signal_new ("case_inserted",
+ g_signal_new ("case-inserted",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST,
0,
signals [CASES_DELETED] =
- g_signal_new ("cases_deleted",
+ g_signal_new ("cases-deleted",
G_TYPE_FROM_CLASS (class),
G_SIGNAL_RUN_FIRST,
0,
* Creates a new #PsppireCaseFile.
*/
PsppireCaseFile*
-psppire_case_file_new (struct casereader *reader)
+psppire_case_file_new (const struct casereader *reader)
{
PsppireCaseFile *cf = g_object_new (G_TYPE_PSPPIRE_CASE_FILE, NULL);
- cf->datasheet = datasheet_create (reader);
+ cf->datasheet = datasheet_create (casereader_clone (reader));
cf->accessible = TRUE;
return cf;
g_return_val_if_fail (idx < datasheet_get_column_cnt (cf->datasheet), FALSE);
width = fmt_var_width (fmt);
- value = xallocsa (value_cnt_from_width (width) * sizeof *value);
+ value = xmalloca (value_cnt_from_width (width) * sizeof *value);
ok = (datasheet_get_value (cf->datasheet, casenum, idx, value, width)
&& data_in (input, fmt->type, 0, 0, value, width)
&& datasheet_put_value (cf->datasheet, casenum, idx, value, width));
if (ok)
g_signal_emit (cf, signals [CASE_CHANGED], 0, casenum);
- freesa (value);
+ freea (value);
return TRUE;
}