{
g_return_val_if_fail (cf, FALSE);
g_return_val_if_fail (cf->datasheet, FALSE);
+ g_return_val_if_fail (cf->accessible, FALSE);
+
+ g_return_val_if_fail (first + n_cases <=
+ psppire_case_file_get_case_count (cf), FALSE);
datasheet_delete_rows (cf->datasheet, first, n_cases);
- g_signal_emit (cf, signals [CASES_DELETED], 0, n_cases, first);
+ g_signal_emit (cf, signals [CASES_DELETED], 0, first, n_cases);
return TRUE;
}
g_return_val_if_fail (cf, FALSE);
g_return_val_if_fail (cf->datasheet, FALSE);
+ g_return_val_if_fail (cf->accessible, FALSE);
case_clone (&tmp, cc);
result = datasheet_insert_rows (cf->datasheet, posn, &tmp, 1);
}
-/* Append a case to the case file */
-gboolean
-psppire_case_file_append_case (PsppireCaseFile *cf,
- struct ccase *c)
-{
- struct ccase tmp;
- bool result ;
- gint posn ;
-
- g_return_val_if_fail (cf, FALSE);
- g_return_val_if_fail (cf->datasheet, FALSE);
-
- posn = datasheet_get_row_cnt (cf->datasheet);
-
- case_clone (&tmp, c);
- result = datasheet_insert_rows (cf->datasheet, posn, &tmp, 1);
-
- g_signal_emit (cf, signals [CASE_INSERTED], 0, posn);
-
- return result;
-}
-
-
inline casenumber
psppire_case_file_get_case_count (const PsppireCaseFile *cf)
{
width = fmt_var_width (fmt);
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)
+ && data_in (input, LEGACY_NATIVE, fmt->type, 0, 0, value, width)
&& datasheet_put_value (cf->datasheet, casenum, idx, value, width));
if (ok)
/* Resize the cases in the casefile, by inserting N_VALUES into every
- one of them. */
+ one of them at the position immediately preceeding WHERE.
+*/
gboolean
psppire_case_file_insert_values (PsppireCaseFile *cf,
- gint n_values, gint before)
+ gint n_values, gint where)
{
- union value *values;
g_return_val_if_fail (cf, FALSE);
g_return_val_if_fail (cf->accessible, FALSE);
+ if ( n_values == 0 )
+ return FALSE;
+
+ g_assert (n_values > 0);
+
if ( ! cf->datasheet )
cf->datasheet = datasheet_create (NULL);
- values = xcalloc (n_values, sizeof *values);
- datasheet_insert_columns (cf->datasheet, values, n_values, before);
+ {
+ union value *values = xcalloc (n_values, sizeof *values);
+ datasheet_insert_columns (cf->datasheet, values, n_values, where);
free (values);
+ }
return TRUE;
}
+
/* Fills C with the CASENUMth case.
Returns true on success, false otherwise.
*/