diff --git a/libfwupdplugin/fu-srec-firmware.c b/libfwupdplugin/fu-srec-firmware.c index 29210c723..55ca3bb48 100644 --- a/libfwupdplugin/fu-srec-firmware.c +++ b/libfwupdplugin/fu-srec-firmware.c @@ -23,12 +23,13 @@ * See also: #FuFirmware */ -struct _FuSrecFirmware { +typedef struct { FuFirmware parent_instance; GPtrArray *records; -}; +} FuSrecFirmwarePrivate; -G_DEFINE_TYPE (FuSrecFirmware, fu_srec_firmware, FU_TYPE_FIRMWARE) +G_DEFINE_TYPE_WITH_PRIVATE (FuSrecFirmware, fu_srec_firmware, FU_TYPE_FIRMWARE) +#define GET_PRIVATE(o) (fu_srec_firmware_get_instance_private (o)) /** * fu_srec_firmware_get_records: @@ -46,8 +47,9 @@ G_DEFINE_TYPE (FuSrecFirmware, fu_srec_firmware, FU_TYPE_FIRMWARE) GPtrArray * fu_srec_firmware_get_records (FuSrecFirmware *self) { + FuSrecFirmwarePrivate *priv = GET_PRIVATE (self); g_return_val_if_fail (FU_IS_SREC_FIRMWARE (self), NULL); - return self->records; + return priv->records; } static void @@ -85,6 +87,7 @@ fu_srec_firmware_tokenize (FuFirmware *firmware, GBytes *fw, FwupdInstallFlags flags, GError **error) { FuSrecFirmware *self = FU_SREC_FIRMWARE (firmware); + FuSrecFirmwarePrivate *priv = GET_PRIVATE (self); const gchar *data; gboolean got_eof = FALSE; gsize sz = 0; @@ -253,7 +256,7 @@ fu_srec_firmware_tokenize (FuFirmware *firmware, GBytes *fw, fu_byte_array_append_uint8 (rcd->buf, tmp); } } - g_ptr_array_add (self->records, rcd); + g_ptr_array_add (priv->records, rcd); } /* no EOF */ @@ -276,6 +279,7 @@ fu_srec_firmware_parse (FuFirmware *firmware, GError **error) { FuSrecFirmware *self = FU_SREC_FIRMWARE (firmware); + FuSrecFirmwarePrivate *priv = GET_PRIVATE (self); gboolean got_hdr = FALSE; guint16 data_cnt = 0; guint32 addr32_last = 0; @@ -284,8 +288,8 @@ fu_srec_firmware_parse (FuFirmware *firmware, g_autoptr(GByteArray) outbuf = g_byte_array_new (); /* parse records */ - for (guint j = 0; j < self->records->len; j++) { - FuSrecFirmwareRecord *rcd = g_ptr_array_index (self->records, j); + for (guint j = 0; j < priv->records->len; j++) { + FuSrecFirmwareRecord *rcd = g_ptr_array_index (priv->records, j); /* header */ if (rcd->kind == FU_FIRMWARE_SREC_RECORD_KIND_S0_HEADER) { @@ -500,14 +504,16 @@ static void fu_srec_firmware_finalize (GObject *object) { FuSrecFirmware *self = FU_SREC_FIRMWARE (object); - g_ptr_array_unref (self->records); + FuSrecFirmwarePrivate *priv = GET_PRIVATE (self); + g_ptr_array_unref (priv->records); G_OBJECT_CLASS (fu_srec_firmware_parent_class)->finalize (object); } static void fu_srec_firmware_init (FuSrecFirmware *self) { - self->records = g_ptr_array_new_with_free_func ((GFreeFunc) fu_srec_firmware_record_free); + FuSrecFirmwarePrivate *priv = GET_PRIVATE (self); + priv->records = g_ptr_array_new_with_free_func ((GFreeFunc) fu_srec_firmware_record_free); fu_firmware_add_flag (FU_FIRMWARE (self), FU_FIRMWARE_FLAG_HAS_CHECKSUM); } diff --git a/libfwupdplugin/fu-srec-firmware.h b/libfwupdplugin/fu-srec-firmware.h index 23b115e18..cb98d74da 100644 --- a/libfwupdplugin/fu-srec-firmware.h +++ b/libfwupdplugin/fu-srec-firmware.h @@ -9,7 +9,12 @@ #include "fu-firmware.h" #define FU_TYPE_SREC_FIRMWARE (fu_srec_firmware_get_type ()) -G_DECLARE_FINAL_TYPE (FuSrecFirmware, fu_srec_firmware, FU, SREC_FIRMWARE, FuFirmware) +G_DECLARE_DERIVABLE_TYPE (FuSrecFirmware, fu_srec_firmware, FU, SREC_FIRMWARE, FuFirmware) + +struct _FuSrecFirmwareClass +{ + FuFirmwareClass parent_class; +}; typedef enum { FU_FIRMWARE_SREC_RECORD_KIND_S0_HEADER,