/* PSPPIRE - a graphical user interface for PSPP.
- Copyright (C) 2017 Free Software Foundation
+ Copyright (C) 2017, 2020 Free Software Foundation
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
enum {MAX_LINE_LEN = 16384}; /* Max length of an acceptable line. */
-
static void
read_lines (PsppireTextFile *tf)
{
tf->file_name, MAX_LINE_LEN);
line_reader_close (reader);
for (i = 0; i < tf->line_cnt; i++)
- g_free (&tf->lines[i]);
+ g_free (tf->lines[i].string);
tf->line_cnt = 0;
ds_destroy (&input);
return;
= recode_substring_pool ("UTF-8",
line_reader_get_encoding (reader),
input.ss, NULL);
- }
+ }
ds_destroy (&input);
if (tf->line_cnt == 0)
msg (ME, _("`%s' is empty."), tf->file_name);
line_reader_close (reader);
for (i = 0; i < tf->line_cnt; i++)
- g_free (&tf->lines[i]);
+ g_free (tf->lines[i].string);
tf->line_cnt = 0;
goto done;
}
};
}
-
-static void psppire_text_file_init (PsppireTextFile *text_file);
-static void psppire_text_file_class_init (PsppireTextFileClass *class);
-
static void psppire_text_file_finalize (GObject *object);
static void psppire_text_file_dispose (GObject *object);
iface->iter_parent = __iter_parent;
}
-
-GType
-psppire_text_file_get_type (void)
-{
- static GType text_file_type = 0;
-
- if (!text_file_type)
- {
- static const GTypeInfo text_file_info =
- {
- sizeof (PsppireTextFileClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) psppire_text_file_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (PsppireTextFile),
- 0,
- (GInstanceInitFunc) psppire_text_file_init,
- };
-
- static const GInterfaceInfo tree_model_info = {
- (GInterfaceInitFunc) __tree_model_init,
- NULL,
- NULL
- };
-
- text_file_type = g_type_register_static (G_TYPE_OBJECT,
- "PsppireTextFile",
- &text_file_info, 0);
-
- g_type_add_interface_static (text_file_type, GTK_TYPE_TREE_MODEL,
- &tree_model_info);
- }
-
- return text_file_type;
-}
-
+G_DEFINE_TYPE_WITH_CODE (PsppireTextFile, psppire_text_file, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL,
+ __tree_model_init))
static void
psppire_text_file_class_init (PsppireTextFileClass *class)
GObjectClass *object_class;
parent_class = g_type_class_peek_parent (class);
- object_class = (GObjectClass*) class;
+ object_class = G_OBJECT_CLASS (class);
GParamSpec *maximum_lines_spec =
g_param_spec_int ("maximum-lines",
{
PsppireTextFile *tf = PSPPIRE_TEXT_FILE (object);
+ for (int i = 0; i < tf->line_cnt; i++)
+ g_free (tf->lines[i].string);
+
g_free (tf->encoding);
g_free (tf->file_name);