From 7baec6b83ae5533f9f19baef3850265b07cf12ab Mon Sep 17 00:00:00 2001 From: Joakim Sindholt Date: Wed, 16 Dec 2009 12:42:53 +0100 Subject: csview: implement bitfields in the worst way possible --- Makefile.am | 3 + src/cs.c | 67 +- src/csimport.c | 131 ++-- src/csview.c | 1928 +++++++++++++++++++++++++++++++++---------------------- src/csview.vala | 562 +++++++++++----- src/main.c | 200 +++--- src/registers.c | 314 ++++----- 7 files changed, 1850 insertions(+), 1355 deletions(-) diff --git a/Makefile.am b/Makefile.am index 9fc63d3..d1d16ff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -25,6 +25,9 @@ rsim_VALAFLAGS = \ --pkg gtk+-2.0 \ --pkg libxml-2.0 +rsim_CFLAGS = \ + -fno-strict-aliasing + rsim_LDADD = \ $(RSIM_LIBS) \ $(NULL) diff --git a/src/cs.c b/src/cs.c index 613753c..60ce2d8 100644 --- a/src/cs.c +++ b/src/cs.c @@ -1,3 +1,6 @@ +/* cs.c generated by valac, the Vala compiler + * generated from cs.vala, do not modify */ + #include #include @@ -66,6 +69,7 @@ typedef struct _EmulationPacket3Class EmulationPacket3Class; typedef struct _EmulationPacketIterator EmulationPacketIterator; typedef struct _EmulationPacketIteratorClass EmulationPacketIteratorClass; typedef struct _EmulationPacketIteratorPrivate EmulationPacketIteratorPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) typedef struct _EmulationPacketBasePrivate EmulationPacketBasePrivate; typedef struct _EmulationPacket0Private EmulationPacket0Private; typedef struct _EmulationPacket1Private EmulationPacket1Private; @@ -314,15 +318,17 @@ inline EmulationPacketBase* emulation_make_packet (guint32 header, guint32* dwor } +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + EmulationPacketIterator* emulation_packet_iterator_construct (GType object_type, EmulationPacketBase* p) { EmulationPacketIterator * self; - EmulationPacketBase* _tmp1_; EmulationPacketBase* _tmp0_; g_return_val_if_fail (p != NULL, NULL); - self = g_object_newv (object_type, 0, NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->m_packet = (_tmp1_ = (_tmp0_ = p, (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)), (self->priv->m_packet == NULL) ? NULL : (self->priv->m_packet = (g_object_unref (self->priv->m_packet), NULL)), _tmp1_); + self = (EmulationPacketIterator*) g_object_new (object_type, NULL); + self->priv->m_packet = (_tmp0_ = _g_object_ref0 (p), _g_object_unref0 (self->priv->m_packet), _tmp0_); self->priv->m_pos = (guint) 0; return self; } @@ -364,7 +370,7 @@ static void emulation_packet_iterator_instance_init (EmulationPacketIterator * s static void emulation_packet_iterator_finalize (GObject* obj) { EmulationPacketIterator * self; self = EMULATION_PACKET_ITERATOR (obj); - (self->priv->m_packet == NULL) ? NULL : (self->priv->m_packet = (g_object_unref (self->priv->m_packet), NULL)); + _g_object_unref0 (self->priv->m_packet); G_OBJECT_CLASS (emulation_packet_iterator_parent_class)->finalize (obj); } @@ -405,7 +411,7 @@ inline guint32 emulation_packet_base_extract_bits (EmulationPacketBase* self, gu EmulationPacketBase* emulation_packet_base_construct (GType object_type) { EmulationPacketBase * self; - self = g_object_newv (object_type, 0, NULL); + self = (EmulationPacketBase*) g_object_new (object_type, NULL); return self; } @@ -469,7 +475,6 @@ GType emulation_packet_base_get_type (void) { static void emulation_packet_base_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationPacketBase * self; - gpointer boxed; self = EMULATION_PACKET_BASE (object); switch (property_id) { case EMULATION_PACKET_BASE_EXTRACT_TYPE: @@ -574,7 +579,6 @@ GType emulation_packet0_get_type (void) { static void emulation_packet0_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationPacket0 * self; - gpointer boxed; self = EMULATION_PACKET0 (object); switch (property_id) { case EMULATION_PACKET0_ADDR: @@ -674,7 +678,6 @@ GType emulation_packet1_get_type (void) { static void emulation_packet1_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationPacket1 * self; - gpointer boxed; self = EMULATION_PACKET1 (object); switch (property_id) { case EMULATION_PACKET1_ADDR1: @@ -740,7 +743,6 @@ GType emulation_packet2_get_type (void) { static void emulation_packet2_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationPacket2 * self; - gpointer boxed; self = EMULATION_PACKET2 (object); switch (property_id) { case EMULATION_PACKET2_LENGTH: @@ -825,7 +827,6 @@ GType emulation_packet3_get_type (void) { static void emulation_packet3_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationPacket3 * self; - gpointer boxed; self = EMULATION_PACKET3 (object); switch (property_id) { case EMULATION_PACKET3_OPCODE: @@ -861,9 +862,8 @@ static guint emulation_cs_check (guint32* cs, guint len) { if (!(i < len)) { break; } - _tmp1_ = NULL; i = i + emulation_packet_base_get_length (_tmp1_ = emulation_make_packet (cs[i], NULL)); - (_tmp1_ == NULL) ? NULL : (_tmp1_ = (g_object_unref (_tmp1_), NULL)); + _g_object_unref0 (_tmp1_); if ((i + 1) > len) { result = (guint) 0; return result; @@ -884,10 +884,9 @@ static guint32* _vala_array_dup1 (guint32* self, int length) { static EmulationPacketBase** _vala_array_dup2 (EmulationPacketBase** self, int length) { EmulationPacketBase** result; int i; - EmulationPacketBase* _tmp8_; result = g_new0 (EmulationPacketBase*, length); for (i = 0; i < length; i++) { - result[i] = (_tmp8_ = self[i], (_tmp8_ == NULL) ? NULL : g_object_ref (_tmp8_)); + result[i] = _g_object_ref0 (self[i]); } return result; } @@ -904,25 +903,20 @@ EmulationCS* emulation_cs_construct (GType object_type, guint32* cs, guint len) gint _tmp5__size; gint _tmp5__length1; EmulationPacketBase** _tmp5_; - EmulationPacketBase** _tmp10_; EmulationPacketBase** _tmp9_; - EmulationPacketBase* _tmp8_; - self = g_object_newv (object_type, 0, NULL); + EmulationPacketBase** _tmp8_; + self = (EmulationCS*) g_object_new (object_type, NULL); if (len > 0) { g_assert (cs != NULL); } _tmp0_ = (_tmp0__length1 = 0, NULL); if (len > 0) { guint32* _tmp1_; - _tmp1_ = NULL; _tmp0_ = (_tmp1_ = g_new0 (guint32, len), _tmp0_ = (g_free (_tmp0_), NULL), _tmp0__length1 = len, _tmp0__size = _tmp0__length1, _tmp1_); } else { guint32* _tmp2_; - _tmp2_ = NULL; _tmp0_ = (_tmp2_ = NULL, _tmp0_ = (g_free (_tmp0_), NULL), _tmp0__length1 = 0, _tmp0__size = _tmp0__length1, _tmp2_); } - _tmp4_ = NULL; - _tmp3_ = NULL; self->dwords = (_tmp4_ = (_tmp3_ = _tmp0_, (_tmp3_ == NULL) ? ((gpointer) _tmp3_) : _vala_array_dup1 (_tmp3_, _tmp0__length1)), self->dwords = (g_free (self->dwords), NULL), self->dwords_length1 = _tmp0__length1, _tmp4_); if (len > 0) { memcpy (self->dwords, cs, (gsize) (len * sizeof (guint32))); @@ -931,17 +925,12 @@ EmulationCS* emulation_cs_construct (GType object_type, guint32* cs, guint len) _tmp5_ = (_tmp5__length1 = 0, NULL); if (pkt_count > 0) { EmulationPacketBase** _tmp6_; - _tmp6_ = NULL; _tmp5_ = (_tmp6_ = g_new0 (EmulationPacketBase*, pkt_count + 1), _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_object_unref), NULL), _tmp5__length1 = pkt_count, _tmp5__size = _tmp5__length1, _tmp6_); } else { EmulationPacketBase** _tmp7_; - _tmp7_ = NULL; _tmp5_ = (_tmp7_ = NULL, _tmp5_ = (_vala_array_free (_tmp5_, _tmp5__length1, (GDestroyNotify) g_object_unref), NULL), _tmp5__length1 = 0, _tmp5__size = _tmp5__length1, _tmp7_); } - _tmp10_ = NULL; - _tmp9_ = NULL; - _tmp8_ = NULL; - self->packets = (_tmp10_ = (_tmp9_ = _tmp5_, (_tmp9_ == NULL) ? ((gpointer) _tmp9_) : _vala_array_dup2 (_tmp9_, _tmp5__length1)), self->packets = (_vala_array_free (self->packets, self->packets_length1, (GDestroyNotify) g_object_unref), NULL), self->packets_length1 = _tmp5__length1, _tmp10_); + self->packets = (_tmp9_ = (_tmp8_ = _tmp5_, (_tmp8_ == NULL) ? ((gpointer) _tmp8_) : _vala_array_dup2 (_tmp8_, _tmp5__length1)), self->packets = (_vala_array_free (self->packets, self->packets_length1, (GDestroyNotify) g_object_unref), NULL), self->packets_length1 = _tmp5__length1, _tmp9_); if (pkt_count > 0) { guint pkt; pkt = (guint) 0; @@ -949,26 +938,24 @@ EmulationCS* emulation_cs_construct (GType object_type, guint32* cs, guint len) guint i; i = (guint) 0; { - gboolean _tmp11_; - _tmp11_ = TRUE; + gboolean _tmp10_; + _tmp10_ = TRUE; while (TRUE) { - guint32* _tmp12_; - EmulationPacketBase* _tmp13_; - if (!_tmp11_) { + guint32* _tmp11_ = NULL; + EmulationPacketBase* _tmp12_; + if (!_tmp10_) { i++; } - _tmp11_ = FALSE; + _tmp10_ = FALSE; if (!(i < len)) { break; } - _tmp12_ = NULL; if (i < (len - 1)) { - _tmp12_ = &self->dwords[i + 1]; + _tmp11_ = &self->dwords[i + 1]; } else { - _tmp12_ = NULL; + _tmp11_ = NULL; } - _tmp13_ = NULL; - self->packets[pkt] = (_tmp13_ = emulation_make_packet (self->dwords[i], _tmp12_), (self->packets[pkt] == NULL) ? NULL : (self->packets[pkt] = (g_object_unref (self->packets[pkt]), NULL)), _tmp13_); + self->packets[pkt] = (_tmp12_ = emulation_make_packet (self->dwords[i], _tmp11_), _g_object_unref0 (self->packets[pkt]), _tmp12_); i = i + emulation_packet_base_get_length (self->packets[pkt++]); } } diff --git a/src/csimport.c b/src/csimport.c index 710f82d..dd8b299 100644 --- a/src/csimport.c +++ b/src/csimport.c @@ -1,3 +1,6 @@ +/* csimport.c generated by valac, the Vala compiler + * generated from csimport.vala, do not modify */ + #include #include @@ -49,6 +52,10 @@ typedef struct _EmulationCSClass EmulationCSClass; typedef struct _GUICSImport GUICSImport; typedef struct _GUICSImportClass GUICSImportClass; typedef struct _GUICSImportPrivate GUICSImportPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) +#define _g_array_free0(var) ((var == NULL) ? NULL : (var = (g_array_free (var, TRUE), NULL))) +#define _g_free0(var) (var = (g_free (var), NULL)) +#define _fclose0(var) ((var == NULL) ? NULL : (var = (fclose (var), NULL))) #define EMULATION_TYPE_PACKET_BASE (emulation_packet_base_get_type ()) #define EMULATION_PACKET_BASE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_PACKET_BASE, EmulationPacketBase)) @@ -151,12 +158,10 @@ static void gui_cs_import_dword_cellrenderer (GUICSImport* self, GtkTreeViewColu g_return_if_fail (cell != NULL); g_return_if_fail (model != NULL); id = (guint32) 0; - gtk_tree_model_get (model, &(*iter), 0, &id, -1, -1); + gtk_tree_model_get (model, iter, 0, &id, -1, -1); g_assert (id < self->priv->m_dwords->len); - _tmp0_ = NULL; - _tmp1_ = NULL; g_object_set ((_tmp1_ = cell, GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL), "text", _tmp0_ = g_strdup_printf ("0x%08X", g_array_index (self->priv->m_dwords, guint32, (guint) id)), NULL); - _tmp0_ = (g_free (_tmp0_), NULL); + _g_free0 (_tmp0_); } @@ -169,16 +174,14 @@ static inline void gui_cs_import_create_name_frame (GUICSImport* self) { namealign = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new (1.0f, 0.5f, 1.0f, 1.0f)); g_object_set (namealign, "left-padding", (guint) 12, NULL); g_object_set (namealign, "bottom-padding", (guint) 4, NULL); - _tmp0_ = NULL; - gtk_container_add ((GtkContainer*) namealign, (GtkWidget*) (self->priv->m_name_entry = (_tmp0_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), (self->priv->m_name_entry == NULL) ? NULL : (self->priv->m_name_entry = (g_object_unref (self->priv->m_name_entry), NULL)), _tmp0_))); + gtk_container_add ((GtkContainer*) namealign, (GtkWidget*) (self->priv->m_name_entry = (_tmp0_ = g_object_ref_sink ((GtkEntry*) gtk_entry_new ()), _g_object_unref0 (self->priv->m_name_entry), _tmp0_))); nameframe = g_object_ref_sink ((GtkFrame*) gtk_frame_new ("Name")); - _tmp1_ = NULL; gtk_label_set_use_markup ((_tmp1_ = gtk_frame_get_label_widget (nameframe), GTK_IS_LABEL (_tmp1_) ? ((GtkLabel*) _tmp1_) : NULL), TRUE); g_object_set (nameframe, "shadow", GTK_SHADOW_NONE, NULL); gtk_container_add ((GtkContainer*) nameframe, (GtkWidget*) namealign); gtk_box_pack_start ((GtkBox*) ((GtkDialog*) self)->vbox, (GtkWidget*) nameframe, FALSE, TRUE, (guint) 0); - (namealign == NULL) ? NULL : (namealign = (g_object_unref (namealign), NULL)); - (nameframe == NULL) ? NULL : (nameframe = (g_object_unref (nameframe), NULL)); + _g_object_unref0 (namealign); + _g_object_unref0 (nameframe); } @@ -212,18 +215,14 @@ static inline void gui_cs_import_create_dwords_frame (GUICSImport* self) { GtkFrame* dwordsframe; GtkWidget* _tmp7_; g_return_if_fail (self != NULL); - _tmp0_ = NULL; - self->priv->m_dwords_store = (_tmp0_ = gtk_list_store_new (2, G_TYPE_UINT, G_TYPE_STRING, NULL), (self->priv->m_dwords_store == NULL) ? NULL : (self->priv->m_dwords_store = (g_object_unref (self->priv->m_dwords_store), NULL)), _tmp0_); + self->priv->m_dwords_store = (_tmp0_ = gtk_list_store_new (2, G_TYPE_UINT, G_TYPE_STRING, NULL), _g_object_unref0 (self->priv->m_dwords_store), _tmp0_); dwords_list = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new ()); - _tmp1_ = NULL; gtk_tree_view_insert_column_with_attributes (dwords_list, -1, "#", (GtkCellRenderer*) (_tmp1_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", 0, NULL, NULL); - (_tmp1_ == NULL) ? NULL : (_tmp1_ = (g_object_unref (_tmp1_), NULL)); - _tmp2_ = NULL; + _g_object_unref0 (_tmp1_); gtk_tree_view_insert_column_with_data_func (dwords_list, -1, "Value", (GtkCellRenderer*) (_tmp2_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), _gui_cs_import_dword_cellrenderer_gtk_tree_cell_data_func, g_object_ref (self), g_object_unref); - (_tmp2_ == NULL) ? NULL : (_tmp2_ = (g_object_unref (_tmp2_), NULL)); - _tmp3_ = NULL; + _g_object_unref0 (_tmp2_); gtk_tree_view_insert_column_with_attributes (dwords_list, -1, "Meta", (GtkCellRenderer*) (_tmp3_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", 1, NULL, NULL); - (_tmp3_ == NULL) ? NULL : (_tmp3_ = (g_object_unref (_tmp3_), NULL)); + _g_object_unref0 (_tmp3_); gtk_container_set_border_width ((GtkContainer*) dwords_list, (guint) 5); gtk_tree_view_set_model (dwords_list, (GtkTreeModel*) self->priv->m_dwords_store); sw = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); @@ -235,15 +234,13 @@ static inline void gui_cs_import_create_dwords_frame (GUICSImport* self) { col.red = (guint16) 0xFFFF; col.green = (guint16) 0x0000; col.blue = (guint16) 0x0000; - _tmp5_ = NULL; - self->priv->m_status_label = (_tmp5_ = g_object_ref_sink ((GtkLabel*) gtk_label_new (NULL)), (self->priv->m_status_label == NULL) ? NULL : (self->priv->m_status_label = (g_object_unref (self->priv->m_status_label), NULL)), _tmp5_); + self->priv->m_status_label = (_tmp5_ = g_object_ref_sink ((GtkLabel*) gtk_label_new (NULL)), _g_object_unref0 (self->priv->m_status_label), _tmp5_); loadbtn = g_object_ref_sink ((GtkButton*) gtk_button_new_with_label ("Load")); loadalign = g_object_ref_sink ((GtkAlignment*) gtk_alignment_new (0.5f, 0.5f, 1.0f, 1.0f)); loadbox = g_object_ref_sink ((GtkHButtonBox*) gtk_hbutton_box_new ()); gtk_widget_modify_fg ((GtkWidget*) self->priv->m_status_label, GTK_STATE_NORMAL, &col); - _tmp6_ = NULL; gtk_button_set_image (loadbtn, (GtkWidget*) (_tmp6_ = g_object_ref_sink ((GtkImage*) gtk_image_new_from_stock ("gtk-convert", GTK_ICON_SIZE_BUTTON)))); - (_tmp6_ == NULL) ? NULL : (_tmp6_ = (g_object_unref (_tmp6_), NULL)); + _g_object_unref0 (_tmp6_); g_signal_connect_object (loadbtn, "clicked", (GCallback) _gui_cs_import_load_cs_gtk_button_clicked, self, 0); gtk_box_pack_end ((GtkBox*) loadbox, (GtkWidget*) loadbtn, FALSE, TRUE, (guint) 0); g_object_set (loadalign, "right-padding", (guint) 3, NULL); @@ -259,21 +256,20 @@ static inline void gui_cs_import_create_dwords_frame (GUICSImport* self) { g_object_set (dwordsalign, "bottom-padding", (guint) 3, NULL); gtk_container_add ((GtkContainer*) dwordsalign, (GtkWidget*) dbox); dwordsframe = g_object_ref_sink ((GtkFrame*) gtk_frame_new ("DWORDs")); - _tmp7_ = NULL; gtk_label_set_use_markup ((_tmp7_ = gtk_frame_get_label_widget (dwordsframe), GTK_IS_LABEL (_tmp7_) ? ((GtkLabel*) _tmp7_) : NULL), TRUE); g_object_set (dwordsframe, "shadow", GTK_SHADOW_NONE, NULL); gtk_container_add ((GtkContainer*) dwordsframe, (GtkWidget*) dwordsalign); gtk_box_pack_start ((GtkBox*) ((GtkDialog*) self)->vbox, (GtkWidget*) dwordsframe, TRUE, TRUE, (guint) 0); gtk_window_set_transient_for ((GtkWindow*) self, (GtkWindow*) gui_main); - (dwords_list == NULL) ? NULL : (dwords_list = (g_object_unref (dwords_list), NULL)); - (sw == NULL) ? NULL : (sw = (g_object_unref (sw), NULL)); - (loadbtn == NULL) ? NULL : (loadbtn = (g_object_unref (loadbtn), NULL)); - (loadalign == NULL) ? NULL : (loadalign = (g_object_unref (loadalign), NULL)); - (loadbox == NULL) ? NULL : (loadbox = (g_object_unref (loadbox), NULL)); - (bbox == NULL) ? NULL : (bbox = (g_object_unref (bbox), NULL)); - (dbox == NULL) ? NULL : (dbox = (g_object_unref (dbox), NULL)); - (dwordsalign == NULL) ? NULL : (dwordsalign = (g_object_unref (dwordsalign), NULL)); - (dwordsframe == NULL) ? NULL : (dwordsframe = (g_object_unref (dwordsframe), NULL)); + _g_object_unref0 (dwords_list); + _g_object_unref0 (sw); + _g_object_unref0 (loadbtn); + _g_object_unref0 (loadalign); + _g_object_unref0 (loadbox); + _g_object_unref0 (bbox); + _g_object_unref0 (dbox); + _g_object_unref0 (dwordsalign); + _g_object_unref0 (dwordsframe); } @@ -284,9 +280,8 @@ static void gui_cs_import_on_response (GUICSImport* self, GtkDialog* source, gin case GTK_RESPONSE_APPLY: { EmulationCS* _tmp0_; - _tmp0_ = NULL; emulation_add_cs (gtk_entry_get_text (self->priv->m_name_entry), _tmp0_ = emulation_cs_new (&g_array_index (self->priv->m_dwords, guint32, (guint) 0), self->priv->m_dwords->len)); - (_tmp0_ == NULL) ? NULL : (_tmp0_ = (g_object_unref (_tmp0_), NULL)); + _g_object_unref0 (_tmp0_); gtk_object_destroy ((GtkObject*) self); break; } @@ -306,19 +301,18 @@ static void gui_cs_import_load_cs (GUICSImport* self, GtkButton* source) { fc = g_object_ref_sink ((GtkFileChooserDialog*) gtk_file_chooser_dialog_new ("Open File", (GtkWindow*) self, GTK_FILE_CHOOSER_ACTION_OPEN, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT, NULL, NULL)); if (gtk_dialog_run ((GtkDialog*) fc) == GTK_RESPONSE_ACCEPT) { char* _tmp0_; - _tmp0_ = NULL; gui_cs_import_open_cs (self, _tmp0_ = gtk_file_chooser_get_filename ((GtkFileChooser*) fc)); - _tmp0_ = (g_free (_tmp0_), NULL); + _g_free0 (_tmp0_); } gtk_object_destroy ((GtkObject*) fc); - (fc == NULL) ? NULL : (fc = (g_object_unref (fc), NULL)); + _g_object_unref0 (fc); } static void gui_cs_import_open_cs (GUICSImport* self, const char* filename) { FILE* fs; GtkTreeIter iter = {0}; - guint32 dword; + guint32 dword = 0U; guint dword_count; char* pktname; g_return_if_fail (self != NULL); @@ -328,18 +322,15 @@ static void gui_cs_import_open_cs (GUICSImport* self, const char* filename) { char* _tmp0_; GtkMessageDialog* _tmp1_; GtkMessageDialog* dlg; - _tmp0_ = NULL; - _tmp1_ = NULL; - dlg = (_tmp1_ = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) self, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _tmp0_ = g_strconcat ("Unable to open the selected file: ", filename, NULL), NULL)), _tmp0_ = (g_free (_tmp0_), NULL), _tmp1_); + dlg = (_tmp1_ = g_object_ref_sink ((GtkMessageDialog*) gtk_message_dialog_new ((GtkWindow*) self, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, _tmp0_ = g_strconcat ("Unable to open the selected file: ", filename, NULL))), _g_free0 (_tmp0_), _tmp1_); gtk_dialog_run ((GtkDialog*) dlg); gtk_object_destroy ((GtkObject*) dlg); - (dlg == NULL) ? NULL : (dlg = (g_object_unref (dlg), NULL)); - (fs == NULL) ? NULL : (fs = (fclose (fs), NULL)); + _g_object_unref0 (dlg); + _fclose0 (fs); return; } gtk_list_store_clear (self->priv->m_dwords_store); g_array_set_size (self->priv->m_dwords, (guint) 0); - dword = 0U; dword_count = (guint) 0; pktname = NULL; { @@ -358,8 +349,7 @@ static void gui_cs_import_open_cs (GUICSImport* self, const char* filename) { break; } gtk_list_store_append (self->priv->m_dwords_store, &iter); - _tmp3_ = NULL; - pktname = (_tmp3_ = NULL, pktname = (g_free (pktname), NULL), _tmp3_); + pktname = (_tmp3_ = NULL, _g_free0 (pktname), _tmp3_); if (dword_count > 0) { dword_count--; } else { @@ -368,11 +358,9 @@ static void gui_cs_import_open_cs (GUICSImport* self, const char* filename) { char* _tmp4_; p = emulation_make_packet (dword, NULL); dword_count = emulation_packet_base_get_length (p); - _tmp5_ = NULL; - _tmp4_ = NULL; - pktname = (_tmp5_ = g_strconcat ("packet", _tmp4_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p)), NULL), pktname = (g_free (pktname), NULL), _tmp5_); - _tmp4_ = (g_free (_tmp4_), NULL); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); + pktname = (_tmp5_ = g_strconcat ("packet", _tmp4_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p)), NULL), _g_free0 (pktname), _tmp5_); + _g_free0 (_tmp4_); + _g_object_unref0 (p); } gtk_list_store_set (self->priv->m_dwords_store, &iter, 0, id, 1, pktname, -1, -1); g_array_append_val (self->priv->m_dwords, dword); @@ -381,25 +369,24 @@ static void gui_cs_import_open_cs (GUICSImport* self, const char* filename) { } self->priv->m_validcs = dword_count == 0; gui_cs_import_update_okbtn (self); - (fs == NULL) ? NULL : (fs = (fclose (fs), NULL)); - pktname = (g_free (pktname), NULL); + _fclose0 (fs); + _g_free0 (pktname); } static void gui_cs_import_update_okbtn (GUICSImport* self) { g_return_if_fail (self != NULL); if (self->priv->m_validcs) { - gboolean _tmp0_; - _tmp0_ = FALSE; + gboolean _tmp0_ = FALSE; if (gtk_entry_get_text_length (self->priv->m_name_entry) > 0) { _tmp0_ = self->priv->m_dwords->len > 0; } else { _tmp0_ = FALSE; } - g_object_set ((GtkWidget*) self->priv->m_okbtn, "sensitive", _tmp0_, NULL); + gtk_widget_set_sensitive ((GtkWidget*) self->priv->m_okbtn, _tmp0_); gtk_label_set_label (self->priv->m_status_label, ""); } else { - g_object_set ((GtkWidget*) self->priv->m_okbtn, "sensitive", FALSE, NULL); + gtk_widget_set_sensitive ((GtkWidget*) self->priv->m_okbtn, FALSE); gtk_label_set_label (self->priv->m_status_label, "This CS is invalid!"); } } @@ -417,6 +404,11 @@ GUICSImport* gui_cs_import_new (void) { } +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + static void _gui_cs_import_update_okbtn_gtk_editable_changed (GtkEntry* _sender, gpointer self) { gui_cs_import_update_okbtn (self); } @@ -429,29 +421,22 @@ static void _gui_cs_import_on_response_gtk_dialog_response (GtkDialog* _sender, static GObject * gui_cs_import_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { GObject * obj; - GUICSImportClass * klass; GObjectClass * parent_class; GUICSImport * self; - klass = GUI_CS_IMPORT_CLASS (g_type_class_peek (GUI_TYPE_CS_IMPORT)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); + parent_class = G_OBJECT_CLASS (gui_cs_import_parent_class); obj = parent_class->constructor (type, n_construct_properties, construct_properties); self = GUI_CS_IMPORT (obj); { - GtkButton* _tmp2_; GtkButton* _tmp1_; GtkWidget* _tmp0_; - GArray* _tmp3_; + GArray* _tmp2_; gui_cs_import_create_name_frame (self); gui_cs_import_create_dwords_frame (self); gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_CLOSE, (gint) GTK_RESPONSE_CLOSE); - _tmp2_ = NULL; - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->m_okbtn = (_tmp2_ = (_tmp1_ = (_tmp0_ = gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_OK, (gint) GTK_RESPONSE_APPLY), GTK_IS_BUTTON (_tmp0_) ? ((GtkButton*) _tmp0_) : NULL), (_tmp1_ == NULL) ? NULL : g_object_ref (_tmp1_)), (self->priv->m_okbtn == NULL) ? NULL : (self->priv->m_okbtn = (g_object_unref (self->priv->m_okbtn), NULL)), _tmp2_); - g_object_set ((GtkWidget*) self->priv->m_okbtn, "sensitive", FALSE, NULL); + self->priv->m_okbtn = (_tmp1_ = _g_object_ref0 ((_tmp0_ = gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_OK, (gint) GTK_RESPONSE_APPLY), GTK_IS_BUTTON (_tmp0_) ? ((GtkButton*) _tmp0_) : NULL)), _g_object_unref0 (self->priv->m_okbtn), _tmp1_); + gtk_widget_set_sensitive ((GtkWidget*) self->priv->m_okbtn, FALSE); self->priv->m_validcs = FALSE; - _tmp3_ = NULL; - self->priv->m_dwords = (_tmp3_ = g_array_new (FALSE, FALSE, (guint) sizeof (guint32)), (self->priv->m_dwords == NULL) ? NULL : (self->priv->m_dwords = (g_array_free (self->priv->m_dwords, TRUE), NULL)), _tmp3_); + self->priv->m_dwords = (_tmp2_ = g_array_new (FALSE, FALSE, (guint) sizeof (guint32)), _g_array_free0 (self->priv->m_dwords), _tmp2_); g_signal_connect_object ((GtkEditable*) self->priv->m_name_entry, "changed", (GCallback) _gui_cs_import_update_okbtn_gtk_editable_changed, self, 0); gtk_window_set_title ((GtkWindow*) self, "Import CS"); g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) _gui_cs_import_on_response_gtk_dialog_response, self, 0); @@ -478,11 +463,11 @@ static void gui_cs_import_instance_init (GUICSImport * self) { static void gui_cs_import_finalize (GObject* obj) { GUICSImport * self; self = GUI_CS_IMPORT (obj); - (self->priv->m_name_entry == NULL) ? NULL : (self->priv->m_name_entry = (g_object_unref (self->priv->m_name_entry), NULL)); - (self->priv->m_status_label == NULL) ? NULL : (self->priv->m_status_label = (g_object_unref (self->priv->m_status_label), NULL)); - (self->priv->m_dwords_store == NULL) ? NULL : (self->priv->m_dwords_store = (g_object_unref (self->priv->m_dwords_store), NULL)); - (self->priv->m_okbtn == NULL) ? NULL : (self->priv->m_okbtn = (g_object_unref (self->priv->m_okbtn), NULL)); - (self->priv->m_dwords == NULL) ? NULL : (self->priv->m_dwords = (g_array_free (self->priv->m_dwords, TRUE), NULL)); + _g_object_unref0 (self->priv->m_name_entry); + _g_object_unref0 (self->priv->m_status_label); + _g_object_unref0 (self->priv->m_dwords_store); + _g_object_unref0 (self->priv->m_okbtn); + _g_array_free0 (self->priv->m_dwords); G_OBJECT_CLASS (gui_cs_import_parent_class)->finalize (obj); } diff --git a/src/csview.c b/src/csview.c index 9412a32..80ad233 100644 --- a/src/csview.c +++ b/src/csview.c @@ -1,9 +1,13 @@ +/* csview.c generated by valac, the Vala compiler + * generated from csview.vala, do not modify */ + #include #include #include #include #include +#include #define GUI_TYPE_CS_LIST_MODEL (gui_cs_list_model_get_type ()) @@ -40,6 +44,47 @@ typedef struct _EmulationSpecClass EmulationSpecClass; #define GUI_CS_LIST_MODEL_TYPE_COLUMNS (gui_cs_list_model_columns_get_type ()) #define GUI_CS_LIST_MODEL_TYPE_ROW_TYPE (gui_cs_list_model_row_type_get_type ()) +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) + +#define EMULATION_TYPE_REGISTER_LIST (emulation_register_list_get_type ()) +#define EMULATION_REGISTER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_REGISTER_LIST, EmulationRegisterList)) +#define EMULATION_REGISTER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_REGISTER_LIST, EmulationRegisterListClass)) +#define EMULATION_IS_REGISTER_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_REGISTER_LIST)) +#define EMULATION_IS_REGISTER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_REGISTER_LIST)) +#define EMULATION_REGISTER_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_REGISTER_LIST, EmulationRegisterListClass)) + +typedef struct _EmulationRegisterList EmulationRegisterList; +typedef struct _EmulationRegisterListClass EmulationRegisterListClass; + +#define EMULATION_TYPE_REGISTER (emulation_register_get_type ()) +#define EMULATION_REGISTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_REGISTER, EmulationRegister)) +#define EMULATION_REGISTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_REGISTER, EmulationRegisterClass)) +#define EMULATION_IS_REGISTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_REGISTER)) +#define EMULATION_IS_REGISTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_REGISTER)) +#define EMULATION_REGISTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_REGISTER, EmulationRegisterClass)) + +typedef struct _EmulationRegister EmulationRegister; +typedef struct _EmulationRegisterClass EmulationRegisterClass; + +#define EMULATION_TYPE_REGISTER_INFO (emulation_register_info_get_type ()) +#define EMULATION_REGISTER_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_REGISTER_INFO, EmulationRegisterInfo)) +#define EMULATION_REGISTER_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_REGISTER_INFO, EmulationRegisterInfoClass)) +#define EMULATION_IS_REGISTER_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_REGISTER_INFO)) +#define EMULATION_IS_REGISTER_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_REGISTER_INFO)) +#define EMULATION_REGISTER_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_REGISTER_INFO, EmulationRegisterInfoClass)) + +typedef struct _EmulationRegisterInfo EmulationRegisterInfo; +typedef struct _EmulationRegisterInfoClass EmulationRegisterInfoClass; + +#define GUI_CS_LIST_MODEL_TYPE_CS_ITER (gui_cs_list_model_cs_iter_get_type ()) +#define GUI_CS_LIST_MODEL_CS_ITER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_CS_LIST_MODEL_TYPE_CS_ITER, GUICSListModelCSIter)) +#define GUI_CS_LIST_MODEL_CS_ITER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GUI_CS_LIST_MODEL_TYPE_CS_ITER, GUICSListModelCSIterClass)) +#define GUI_CS_LIST_MODEL_IS_CS_ITER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GUI_CS_LIST_MODEL_TYPE_CS_ITER)) +#define GUI_CS_LIST_MODEL_IS_CS_ITER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GUI_CS_LIST_MODEL_TYPE_CS_ITER)) +#define GUI_CS_LIST_MODEL_CS_ITER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GUI_CS_LIST_MODEL_TYPE_CS_ITER, GUICSListModelCSIterClass)) + +typedef struct _GUICSListModelCSIter GUICSListModelCSIter; +typedef struct _GUICSListModelCSIterClass GUICSListModelCSIterClass; typedef struct _EmulationCSPrivate EmulationCSPrivate; #define EMULATION_TYPE_PACKET_BASE (emulation_packet_base_get_type ()) @@ -51,7 +96,7 @@ typedef struct _EmulationCSPrivate EmulationCSPrivate; typedef struct _EmulationPacketBase EmulationPacketBase; typedef struct _EmulationPacketBaseClass EmulationPacketBaseClass; -typedef struct _EmulationPacketBasePrivate EmulationPacketBasePrivate; +#define _gui_cs_list_model_cs_iter_unref0(var) ((var == NULL) ? NULL : (var = (gui_cs_list_model_cs_iter_unref (var), NULL))) #define EMULATION_TYPE_PACKET0 (emulation_packet0_get_type ()) #define EMULATION_PACKET0(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_PACKET0, EmulationPacket0)) @@ -72,6 +117,19 @@ typedef struct _EmulationPacket0Class EmulationPacket0Class; typedef struct _EmulationPacket1 EmulationPacket1; typedef struct _EmulationPacket1Class EmulationPacket1Class; +#define _gtk_tree_path_free0(var) ((var == NULL) ? NULL : (var = (gtk_tree_path_free (var), NULL))) + +#define EMULATION_TYPE_BITFIELD (emulation_bitfield_get_type ()) +#define EMULATION_BITFIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_BITFIELD, EmulationBitfield)) +#define EMULATION_BITFIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_BITFIELD, EmulationBitfieldClass)) +#define EMULATION_IS_BITFIELD(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_BITFIELD)) +#define EMULATION_IS_BITFIELD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_BITFIELD)) +#define EMULATION_BITFIELD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_BITFIELD, EmulationBitfieldClass)) + +typedef struct _EmulationBitfield EmulationBitfield; +typedef struct _EmulationBitfieldClass EmulationBitfieldClass; +typedef struct _EmulationPacketBasePrivate EmulationPacketBasePrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) #define EMULATION_TYPE_PACKET3 (emulation_packet3_get_type ()) #define EMULATION_PACKET3(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_PACKET3, EmulationPacket3)) @@ -82,36 +140,8 @@ typedef struct _EmulationPacket1Class EmulationPacket1Class; typedef struct _EmulationPacket3 EmulationPacket3; typedef struct _EmulationPacket3Class EmulationPacket3Class; - -#define EMULATION_TYPE_REGISTER_LIST (emulation_register_list_get_type ()) -#define EMULATION_REGISTER_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_REGISTER_LIST, EmulationRegisterList)) -#define EMULATION_REGISTER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_REGISTER_LIST, EmulationRegisterListClass)) -#define EMULATION_IS_REGISTER_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_REGISTER_LIST)) -#define EMULATION_IS_REGISTER_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_REGISTER_LIST)) -#define EMULATION_REGISTER_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_REGISTER_LIST, EmulationRegisterListClass)) - -typedef struct _EmulationRegisterList EmulationRegisterList; -typedef struct _EmulationRegisterListClass EmulationRegisterListClass; - -#define EMULATION_TYPE_REGISTER (emulation_register_get_type ()) -#define EMULATION_REGISTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_REGISTER, EmulationRegister)) -#define EMULATION_REGISTER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_REGISTER, EmulationRegisterClass)) -#define EMULATION_IS_REGISTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_REGISTER)) -#define EMULATION_IS_REGISTER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_REGISTER)) -#define EMULATION_REGISTER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_REGISTER, EmulationRegisterClass)) - -typedef struct _EmulationRegister EmulationRegister; -typedef struct _EmulationRegisterClass EmulationRegisterClass; - -#define EMULATION_TYPE_REGISTER_INFO (emulation_register_info_get_type ()) -#define EMULATION_REGISTER_INFO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_REGISTER_INFO, EmulationRegisterInfo)) -#define EMULATION_REGISTER_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EMULATION_TYPE_REGISTER_INFO, EmulationRegisterInfoClass)) -#define EMULATION_IS_REGISTER_INFO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EMULATION_TYPE_REGISTER_INFO)) -#define EMULATION_IS_REGISTER_INFO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EMULATION_TYPE_REGISTER_INFO)) -#define EMULATION_REGISTER_INFO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EMULATION_TYPE_REGISTER_INFO, EmulationRegisterInfoClass)) - -typedef struct _EmulationRegisterInfo EmulationRegisterInfo; -typedef struct _EmulationRegisterInfoClass EmulationRegisterInfoClass; +typedef struct _GUICSListModelCSIterPrivate GUICSListModelCSIterPrivate; +typedef struct _GUICSListModelParamSpecCSIter GUICSListModelParamSpecCSIter; #define GUI_TYPE_CS_VIEW (gui_cs_view_get_type ()) #define GUI_CS_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GUI_TYPE_CS_VIEW, GUICSView)) @@ -150,6 +180,7 @@ typedef enum { GUI_CS_LIST_MODEL_ROW_TYPE_PACKET = 0, GUI_CS_LIST_MODEL_ROW_TYPE_HEADER, GUI_CS_LIST_MODEL_ROW_TYPE_DWORD, + GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT, GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD, GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD } GUICSListModelRowType; @@ -179,6 +210,25 @@ struct _EmulationPacketBaseClass { guint (*get_length) (EmulationPacketBase* self); }; +struct _GUICSListModelCSIter { + GTypeInstance parent_instance; + volatile int ref_count; + GUICSListModelCSIterPrivate * priv; +}; + +struct _GUICSListModelCSIterClass { + GTypeClass parent_class; + void (*finalize) (GUICSListModelCSIter *self); +}; + +struct _GUICSListModelCSIterPrivate { + GtkTreeIter* m_iter; +}; + +struct _GUICSListModelParamSpecCSIter { + GParamSpec parent_instance; +}; + struct _GUICSView { GtkWindow parent_instance; GUICSViewPrivate * priv; @@ -233,6 +283,7 @@ static gint gui_cs_list_model_packet_headers_length_length1; static guint* gui_cs_list_model_packet_headers_length = NULL; static gint gui_cs_list_model_packet_headers_length_length1 = 0; static gint gui_cs_list_model_packet_headers_length_size = 0; +static gpointer gui_cs_list_model_cs_iter_parent_class = NULL; static gpointer gui_cs_list_model_parent_class = NULL; static GtkTreeModelIface* gui_cs_list_model_gtk_tree_model_parent_iface = NULL; static gpointer gui_cs_view_parent_class = NULL; @@ -250,55 +301,80 @@ static char** _vala_array_dup3 (char** self, int length); static char** _vala_array_dup4 (char** self, int length); static char** _vala_array_dup5 (char** self, int length); static char** _vala_array_dup6 (char** self, int length); -guint gui_cs_list_model_get_packet_num (GUICSListModel* self, GtkTreeIter* iter); -static inline guint gui_cs_list_model_get_dword_num (GUICSListModel* self, GtkTreeIter* iter); -static inline guint gui_cs_list_model_get_bitfield_num (GUICSListModel* self, GtkTreeIter* iter); -static inline void gui_cs_list_model_set_packet_num (GUICSListModel* self, GtkTreeIter* iter, guint n); -static inline void gui_cs_list_model_set_dword_num (GUICSListModel* self, GtkTreeIter* iter, guint n); -static inline void gui_cs_list_model_set_bitfield_num (GUICSListModel* self, GtkTreeIter* iter, guint n); -static inline gboolean gui_cs_list_model_is_header (GUICSListModel* self, GtkTreeIter* iter); -static inline gboolean gui_cs_list_model_has_dwords (GUICSListModel* self, GtkTreeIter* iter); -static inline gboolean gui_cs_list_model_has_bitfields (GUICSListModel* self, GtkTreeIter* iter); -static inline guint gui_cs_list_model_dword_index (GUICSListModel* self, GtkTreeIter* iter); -static inline guint gui_cs_list_model_bitfield_index (GUICSListModel* self, GtkTreeIter* iter); -static inline void gui_cs_list_model_set_iter (GUICSListModel* self, GtkTreeIter* iter, guint p, guint d, guint b, gboolean stamp); GUICSListModel* gui_cs_list_model_new (EmulationCS* cs, EmulationSpec* spec); GUICSListModel* gui_cs_list_model_construct (GType object_type, EmulationCS* cs, EmulationSpec* spec); -GUICSListModelRowType gui_cs_list_model_get_row_type (GUICSListModel* self, GtkTreeIter* iter); static GtkTreeModelFlags gui_cs_list_model_real_get_flags (GtkTreeModel* base); static gint gui_cs_list_model_real_get_n_columns (GtkTreeModel* base); static GType gui_cs_list_model_real_get_column_type (GtkTreeModel* base, gint i); +GType emulation_register_list_get_type (void); +EmulationRegisterList* emulation_spec_translate_addr (EmulationSpec* self, guint addr); +guint emulation_register_list_get_length (EmulationRegisterList* self); +static guint gui_cs_list_model_get_variant_count (GUICSListModel* self, guint32 addr); +GType emulation_register_get_type (void); +EmulationRegister* emulation_register_list_get (EmulationRegisterList* self, guint index); +GType emulation_register_info_get_type (void); +EmulationRegisterInfo* emulation_register_get_info (EmulationRegister* self); +guint emulation_register_info_get_length (EmulationRegisterInfo* self); +static guint gui_cs_list_model_get_bitfield_count (GUICSListModel* self, guint32 addr, guint variant); +GUICSListModelCSIter* gui_cs_list_model_cs_iter_new (GtkTreeIter* iter); +GUICSListModelCSIter* gui_cs_list_model_cs_iter_construct (GType object_type, GtkTreeIter* iter); +gpointer gui_cs_list_model_cs_iter_ref (gpointer instance); +void gui_cs_list_model_cs_iter_unref (gpointer instance); +GParamSpec* gui_cs_list_model_param_spec_cs_iter (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags); +void gui_cs_list_model_value_set_cs_iter (GValue* value, gpointer v_object); +gpointer gui_cs_list_model_value_get_cs_iter (const GValue* value); +GType gui_cs_list_model_cs_iter_get_type (void); +void gui_cs_list_model_cs_iter_reset (GUICSListModelCSIter* self); GType emulation_packet_base_get_type (void); +void gui_cs_list_model_cs_iter_set_packet (GUICSListModelCSIter* self, guint32 value); +guint32 gui_cs_list_model_cs_iter_get_packet (GUICSListModelCSIter* self); guint emulation_packet_base_get_length (EmulationPacketBase* self); +void gui_cs_list_model_cs_iter_set_dword (GUICSListModelCSIter* self, guint32 value); +void gui_cs_list_model_cs_iter_set_in_dwords (GUICSListModelCSIter* self, gboolean value); +guint32 gui_cs_list_model_cs_iter_get_dword (GUICSListModelCSIter* self); guint emulation_packet_base_get_type_id (EmulationPacketBase* self); -static gboolean gui_cs_list_model_real_get_iter (GtkTreeModel* base, GtkTreeIter* iter, const GtkTreePath* path); +void gui_cs_list_model_cs_iter_set_bitfield (GUICSListModelCSIter* self, guint32 value); +void gui_cs_list_model_cs_iter_set_in_bitfields (GUICSListModelCSIter* self, gboolean value); +GType emulation_packet0_get_type (void); +guint32 emulation_packet0_get_addr (EmulationPacket0* self); +GType emulation_packet1_get_type (void); +guint32 emulation_packet1_get_addr1 (EmulationPacket1* self); +guint32 emulation_packet1_get_addr2 (EmulationPacket1* self); +void gui_cs_list_model_cs_iter_set_variant (GUICSListModelCSIter* self, guint32 value); +void gui_cs_list_model_cs_iter_set_in_variants (GUICSListModelCSIter* self, gboolean value); +guint32 gui_cs_list_model_cs_iter_get_variant (GUICSListModelCSIter* self); +static gboolean gui_cs_list_model_real_get_iter (GtkTreeModel* base, GtkTreeIter* iter, GtkTreePath* path); +gboolean gui_cs_list_model_cs_iter_get_in_dwords (GUICSListModelCSIter* self); +gboolean gui_cs_list_model_cs_iter_get_in_bitfields (GUICSListModelCSIter* self); +gboolean gui_cs_list_model_cs_iter_get_in_variants (GUICSListModelCSIter* self); +guint32 gui_cs_list_model_cs_iter_get_bitfield (GUICSListModelCSIter* self); static GtkTreePath* gui_cs_list_model_real_get_path (GtkTreeModel* base, GtkTreeIter* iter); +guint32 gui_cs_list_model_get_numeric_value (GUICSListModel* self, GtkTreeIter* iter); +const char* emulation_register_info_get_name (EmulationRegisterInfo* self); +static char* gui_cs_list_model_translate_addr (GUICSListModel* self, guint32 addr); +static const char* gui_cs_list_model_variant_name (GUICSListModel* self, guint32 addr, guint variant); +GType emulation_bitfield_get_type (void); +EmulationBitfield* emulation_register_info_get (EmulationRegisterInfo* self, guint index); +const char* emulation_bitfield_get_name (EmulationBitfield* self); +static const char* gui_cs_list_model_bitfield_name (GUICSListModel* self, guint32 addr, guint variant, guint bitfield); +guint8 emulation_bitfield_get_high (EmulationBitfield* self); +guint8 emulation_bitfield_get_low (EmulationBitfield* self); +static guint32 gui_cs_list_model_bitfield_value (GUICSListModel* self, guint32 addr, guint variant, guint bitfield, guint32 dword); +GUICSListModelRowType gui_cs_list_model_cs_iter_get_row_type (GUICSListModelCSIter* self); +static guint32 gui_cs_list_model_dword_addr (GUICSListModel* self, guint p, guint d); guint32 emulation_packet_base_get (EmulationPacketBase* self, guint index); -GType emulation_packet0_get_type (void); guint32 emulation_packet0_get__ADDR (EmulationPacket0* self); guint32 emulation_packet0_get__ONE_REG_WR (EmulationPacket0* self); guint32 emulation_packet0_get__COUNT (EmulationPacket0* self); -GType emulation_packet1_get_type (void); guint32 emulation_packet1_get__ADDR1 (EmulationPacket1* self); guint32 emulation_packet1_get__ADDR2 (EmulationPacket1* self); GType emulation_packet3_get_type (void); guint32 emulation_packet3_get__IT_OPCODE (EmulationPacket3* self); guint32 emulation_packet3_get__COUNT (EmulationPacket3* self); -guint32 gui_cs_list_model_get_numeric_value (GUICSListModel* self, GtkTreeIter* iter); -GType emulation_register_list_get_type (void); -EmulationRegisterList* emulation_spec_translate_addr (EmulationSpec* self, guint addr); -GType emulation_register_get_type (void); -EmulationRegister* emulation_register_list_get (EmulationRegisterList* self, guint index); -GType emulation_register_info_get_type (void); -EmulationRegisterInfo* emulation_register_get_info (EmulationRegister* self); -const char* emulation_register_info_get_name (EmulationRegisterInfo* self); -static char* gui_cs_list_model_translate_addr (GUICSListModel* self, guint32 addr); -guint32 emulation_packet0_get_addr (EmulationPacket0* self); -guint32 emulation_packet1_get_addr1 (EmulationPacket1* self); -guint32 emulation_packet1_get_addr2 (EmulationPacket1* self); -gboolean emulation_packet0_get_one_reg_wr (EmulationPacket0* self); static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* iter, gint column, GValue* val); +gboolean emulation_packet0_get_one_reg_wr (EmulationPacket0* self); static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIter* iter); +void gui_cs_list_model_cs_iter_copy (GUICSListModelCSIter* self, GUICSListModelCSIter* it); static gboolean gui_cs_list_model_real_iter_children (GtkTreeModel* base, GtkTreeIter* iter, GtkTreeIter* parent); static gboolean gui_cs_list_model_real_iter_has_child (GtkTreeModel* base, GtkTreeIter* iter); static gint gui_cs_list_model_real_iter_n_children (GtkTreeModel* base, GtkTreeIter* iter); @@ -306,6 +382,14 @@ static gboolean gui_cs_list_model_real_iter_nth_child (GtkTreeModel* base, GtkTr static gboolean gui_cs_list_model_real_iter_parent (GtkTreeModel* base, GtkTreeIter* iter, GtkTreeIter* child); static void gui_cs_list_model_real_ref_node (GtkTreeModel* base, GtkTreeIter* iter); static void gui_cs_list_model_real_unref_node (GtkTreeModel* base, GtkTreeIter* iter); +#define GUI_CS_LIST_MODEL_CS_ITER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GUI_CS_LIST_MODEL_TYPE_CS_ITER, GUICSListModelCSIterPrivate)) +enum { + GUI_CS_LIST_MODEL_CS_ITER_DUMMY_PROPERTY +}; +static inline guint32 gui_cs_list_model_cs_iter_get_iter_bits (GUICSListModelCSIter* self, guint low, guint high); +static inline void gui_cs_list_model_cs_iter_set_iter_bits (GUICSListModelCSIter* self, guint low, guint high, guint32 val); +gboolean gui_cs_list_model_cs_iter_get_is_header (GUICSListModelCSIter* self); +static void gui_cs_list_model_cs_iter_finalize (GUICSListModelCSIter* obj); static void gui_cs_list_model_finalize (GObject* obj); GType gui_cs_view_get_type (void); #define GUI_CS_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GUI_TYPE_CS_VIEW, GUICSViewPrivate)) @@ -335,7 +419,7 @@ GType gui_cs_list_model_columns_get_type (void) { GType gui_cs_list_model_row_type_get_type (void) { static GType gui_cs_list_model_row_type_type_id = 0; if (G_UNLIKELY (gui_cs_list_model_row_type_type_id == 0)) { - static const GEnumValue values[] = {{GUI_CS_LIST_MODEL_ROW_TYPE_PACKET, "GUI_CS_LIST_MODEL_ROW_TYPE_PACKET", "packet"}, {GUI_CS_LIST_MODEL_ROW_TYPE_HEADER, "GUI_CS_LIST_MODEL_ROW_TYPE_HEADER", "header"}, {GUI_CS_LIST_MODEL_ROW_TYPE_DWORD, "GUI_CS_LIST_MODEL_ROW_TYPE_DWORD", "dword"}, {GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD, "GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD", "bitfield"}, {GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD, "GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD", "header-bitfield"}, {0, NULL, NULL}}; + static const GEnumValue values[] = {{GUI_CS_LIST_MODEL_ROW_TYPE_PACKET, "GUI_CS_LIST_MODEL_ROW_TYPE_PACKET", "packet"}, {GUI_CS_LIST_MODEL_ROW_TYPE_HEADER, "GUI_CS_LIST_MODEL_ROW_TYPE_HEADER", "header"}, {GUI_CS_LIST_MODEL_ROW_TYPE_DWORD, "GUI_CS_LIST_MODEL_ROW_TYPE_DWORD", "dword"}, {GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT, "GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT", "variant"}, {GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD, "GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD", "bitfield"}, {GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD, "GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD", "header-bitfield"}, {0, NULL, NULL}}; gui_cs_list_model_row_type_type_id = g_enum_register_static ("GUICSListModelRowType", values); } return gui_cs_list_model_row_type_type_id; @@ -345,10 +429,9 @@ GType gui_cs_list_model_row_type_get_type (void) { static char** _vala_array_dup3 (char** self, int length) { char** result; int i; - const char* _tmp5_; result = g_new0 (char*, length); for (i = 0; i < length; i++) { - result[i] = (_tmp5_ = self[i], (_tmp5_ == NULL) ? NULL : g_strdup (_tmp5_)); + result[i] = g_strdup (self[i]); } return result; } @@ -357,12 +440,10 @@ static char** _vala_array_dup3 (char** self, int length) { static char** _vala_array_dup4 (char** self, int length) { char** result; int i; - const char* _tmp7_; - char** _tmp6_; - const char* _tmp5_; + char** _tmp5_; result = g_new0 (char*, length); for (i = 0; i < length; i++) { - result[i] = (_tmp7_ = self[i], (_tmp7_ == NULL) ? NULL : g_strdup (_tmp7_)); + result[i] = g_strdup (self[i]); } return result; } @@ -371,14 +452,11 @@ static char** _vala_array_dup4 (char** self, int length) { static char** _vala_array_dup5 (char** self, int length) { char** result; int i; - const char* _tmp9_; - char** _tmp8_; - const char* _tmp7_; char** _tmp6_; - const char* _tmp5_; + char** _tmp5_; result = g_new0 (char*, length); for (i = 0; i < length; i++) { - result[i] = (_tmp9_ = self[i], (_tmp9_ == NULL) ? NULL : g_strdup (_tmp9_)); + result[i] = g_strdup (self[i]); } return result; } @@ -387,136 +465,31 @@ static char** _vala_array_dup5 (char** self, int length) { static char** _vala_array_dup6 (char** self, int length) { char** result; int i; - const char* _tmp11_; - char** _tmp10_; - const char* _tmp9_; - char** _tmp8_; - const char* _tmp7_; + char** _tmp7_; char** _tmp6_; - const char* _tmp5_; + char** _tmp5_; result = g_new0 (char*, length); for (i = 0; i < length; i++) { - result[i] = (_tmp11_ = self[i], (_tmp11_ == NULL) ? NULL : g_strdup (_tmp11_)); + result[i] = g_strdup (self[i]); } return result; } -inline guint gui_cs_list_model_get_packet_num (GUICSListModel* self, GtkTreeIter* iter) { - guint result; - g_return_val_if_fail (self != NULL, 0U); - result = *((guint*) (&(*iter).user_data)); - return result; -} - - -static inline guint gui_cs_list_model_get_dword_num (GUICSListModel* self, GtkTreeIter* iter) { - guint result; - g_return_val_if_fail (self != NULL, 0U); - result = *((guint*) (&(*iter).user_data2)); - return result; -} - - -static inline guint gui_cs_list_model_get_bitfield_num (GUICSListModel* self, GtkTreeIter* iter) { - guint result; - g_return_val_if_fail (self != NULL, 0U); - result = *((guint*) (&(*iter).user_data3)); - return result; -} - - -static inline void gui_cs_list_model_set_packet_num (GUICSListModel* self, GtkTreeIter* iter, guint n) { - g_return_if_fail (self != NULL); - (*iter).user_data = *((void**) (&n)); -} - - -static inline void gui_cs_list_model_set_dword_num (GUICSListModel* self, GtkTreeIter* iter, guint n) { - g_return_if_fail (self != NULL); - (*iter).user_data2 = *((void**) (&n)); -} - - -static inline void gui_cs_list_model_set_bitfield_num (GUICSListModel* self, GtkTreeIter* iter, guint n) { - g_return_if_fail (self != NULL); - (*iter).user_data3 = *((void**) (&n)); -} - - -/* for dwords, 0 means no dwords, 1 means just the header, and 2+ means header and packets - for bitfields, 0 means no bitfields, 1+ means bitfields */ -static inline gboolean gui_cs_list_model_is_header (GUICSListModel* self, GtkTreeIter* iter) { - gboolean result; - g_return_val_if_fail (self != NULL, FALSE); - result = gui_cs_list_model_get_dword_num (self, &(*iter)) == 1; - return result; -} - - -static inline gboolean gui_cs_list_model_has_dwords (GUICSListModel* self, GtkTreeIter* iter) { - gboolean result; - g_return_val_if_fail (self != NULL, FALSE); - result = gui_cs_list_model_get_dword_num (self, &(*iter)) >= 1; - return result; -} - - -static inline gboolean gui_cs_list_model_has_bitfields (GUICSListModel* self, GtkTreeIter* iter) { - gboolean result; - g_return_val_if_fail (self != NULL, FALSE); - result = gui_cs_list_model_get_bitfield_num (self, &(*iter)) >= 1; - return result; -} - - -static inline guint gui_cs_list_model_dword_index (GUICSListModel* self, GtkTreeIter* iter) { - guint result; - g_return_val_if_fail (self != NULL, 0U); - result = gui_cs_list_model_get_dword_num (self, &(*iter)) - 2; - return result; -} - - -static inline guint gui_cs_list_model_bitfield_index (GUICSListModel* self, GtkTreeIter* iter) { - guint result; - g_return_val_if_fail (self != NULL, 0U); - result = gui_cs_list_model_get_bitfield_num (self, &(*iter)) - 1; - return result; -} - - -static inline void gui_cs_list_model_set_iter (GUICSListModel* self, GtkTreeIter* iter, guint p, guint d, guint b, gboolean stamp) { - gint _tmp0_; - g_return_if_fail (self != NULL); - gui_cs_list_model_set_packet_num (self, &(*iter), p); - gui_cs_list_model_set_dword_num (self, &(*iter), d); - gui_cs_list_model_set_bitfield_num (self, &(*iter), b); - _tmp0_ = 0; - if (stamp) { - _tmp0_ = self->priv->m_stamp; - } else { - _tmp0_ = 0; - } - (*iter).stamp = _tmp0_; +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; } GUICSListModel* gui_cs_list_model_construct (GType object_type, EmulationCS* cs, EmulationSpec* spec) { GUICSListModel * self; - EmulationCS* _tmp1_; EmulationCS* _tmp0_; - EmulationSpec* _tmp3_; - EmulationSpec* _tmp2_; + EmulationSpec* _tmp1_; g_return_val_if_fail (cs != NULL, NULL); g_return_val_if_fail (spec != NULL, NULL); - self = g_object_newv (object_type, 0, NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->m_cs = (_tmp1_ = (_tmp0_ = cs, (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)), (self->priv->m_cs == NULL) ? NULL : (self->priv->m_cs = (g_object_unref (self->priv->m_cs), NULL)), _tmp1_); - _tmp3_ = NULL; - _tmp2_ = NULL; - self->priv->m_spec = (_tmp3_ = (_tmp2_ = spec, (_tmp2_ == NULL) ? NULL : g_object_ref (_tmp2_)), (self->priv->m_spec == NULL) ? NULL : (self->priv->m_spec = (g_object_unref (self->priv->m_spec), NULL)), _tmp3_); + self = (GUICSListModel*) g_object_new (object_type, NULL); + self->priv->m_cs = (_tmp0_ = _g_object_ref0 (cs), _g_object_unref0 (self->priv->m_cs), _tmp0_); + self->priv->m_spec = (_tmp1_ = _g_object_ref0 (spec), _g_object_unref0 (self->priv->m_spec), _tmp1_); self->priv->m_stamp = 19449216; return self; } @@ -527,37 +500,6 @@ GUICSListModel* gui_cs_list_model_new (EmulationCS* cs, EmulationSpec* spec) { } -GUICSListModelRowType gui_cs_list_model_get_row_type (GUICSListModel* self, GtkTreeIter* iter) { - GUICSListModelRowType result; - g_return_val_if_fail (self != NULL, 0); - if (gui_cs_list_model_has_bitfields (self, &(*iter))) { - GUICSListModelRowType _tmp0_; - _tmp0_ = 0; - if (gui_cs_list_model_is_header (self, &(*iter))) { - _tmp0_ = GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD; - } else { - _tmp0_ = GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD; - } - result = _tmp0_; - return result; - } else { - if (gui_cs_list_model_has_dwords (self, &(*iter))) { - GUICSListModelRowType _tmp1_; - _tmp1_ = 0; - if (gui_cs_list_model_is_header (self, &(*iter))) { - _tmp1_ = GUI_CS_LIST_MODEL_ROW_TYPE_HEADER; - } else { - _tmp1_ = GUI_CS_LIST_MODEL_ROW_TYPE_DWORD; - } - result = _tmp1_; - return result; - } - } - result = GUI_CS_LIST_MODEL_ROW_TYPE_PACKET; - return result; -} - - static GtkTreeModelFlags gui_cs_list_model_real_get_flags (GtkTreeModel* base) { GUICSListModel * self; GtkTreeModelFlags result; @@ -585,69 +527,173 @@ static GType gui_cs_list_model_real_get_column_type (GtkTreeModel* base, gint i) } -static gboolean gui_cs_list_model_real_get_iter (GtkTreeModel* base, GtkTreeIter* iter, const GtkTreePath* path) { +static guint gui_cs_list_model_get_variant_count (GUICSListModel* self, guint32 addr) { + guint result; + EmulationRegisterList* regs; + guint _tmp0_ = 0U; + g_return_val_if_fail (self != NULL, 0U); + regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr); + if (regs == NULL) { + _tmp0_ = (guint) 0; + } else { + _tmp0_ = emulation_register_list_get_length (regs); + } + result = _tmp0_; + _g_object_unref0 (regs); + return result; +} + + +static guint gui_cs_list_model_get_bitfield_count (GUICSListModel* self, guint32 addr, guint variant) { + guint result; + EmulationRegisterList* regs; + guint _tmp0_ = 0U; + g_return_val_if_fail (self != NULL, 0U); + regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr); + g_assert (regs != NULL); + g_assert (variant < emulation_register_list_get_length (regs)); + if (emulation_register_info_get_length (emulation_register_get_info (emulation_register_list_get (regs, variant))) == 0) { + _tmp0_ = (guint) 1; + } else { + _tmp0_ = emulation_register_info_get_length (emulation_register_get_info (emulation_register_list_get (regs, variant))); + } + result = _tmp0_; + _g_object_unref0 (regs); + return result; +} + + +static gboolean gui_cs_list_model_real_get_iter (GtkTreeModel* base, GtkTreeIter* iter, GtkTreePath* path) { GUICSListModel * self; gboolean result; gint depth; - gboolean _tmp0_; + GUICSListModelCSIter* it; gint* indices; - gboolean _tmp1_; + gboolean _tmp0_ = FALSE; self = (GUICSListModel*) base; g_return_val_if_fail (path != NULL, FALSE); depth = gtk_tree_path_get_depth (path); - _tmp0_ = FALSE; - if (depth <= 3) { - _tmp0_ = depth >= 1; - } else { - _tmp0_ = FALSE; - } - g_assert (_tmp0_); + g_assert ((depth <= 4) && (depth >= 1)); + it = gui_cs_list_model_cs_iter_new (iter); + gui_cs_list_model_cs_iter_reset (it); indices = gtk_tree_path_get_indices (path); - _tmp1_ = FALSE; if (indices[0] >= self->priv->m_cs->packets_length1) { - _tmp1_ = TRUE; + _tmp0_ = TRUE; } else { - _tmp1_ = indices[0] < 0; + _tmp0_ = indices[0] < 0; } - if (_tmp1_) { + if (_tmp0_) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - gui_cs_list_model_set_iter (self, &(*iter), (guint) indices[0], (guint) 0, (guint) 0, FALSE); + gui_cs_list_model_cs_iter_set_packet (it, (guint32) indices[0]); if (depth >= 2) { - gboolean _tmp2_; - _tmp2_ = FALSE; - if (indices[1] > emulation_packet_base_get_length (self->priv->m_cs->packets[indices[0]])) { - _tmp2_ = TRUE; + gboolean _tmp1_ = FALSE; + if (indices[1] > emulation_packet_base_get_length (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)])) { + _tmp1_ = TRUE; } else { - _tmp2_ = indices[1] < 0; + _tmp1_ = indices[1] < 0; } - if (_tmp2_) { + if (_tmp1_) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - gui_cs_list_model_set_dword_num (self, &(*iter), (guint) (indices[1] + 1)); + gui_cs_list_model_cs_iter_set_dword (it, (guint32) indices[1]); + gui_cs_list_model_cs_iter_set_in_dwords (it, TRUE); } if (depth >= 3) { if (indices[2] < 0) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - if (indices[1] == 0) { - /* Header */ - if (indices[2] >= gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[indices[0]])]) { + if (gui_cs_list_model_cs_iter_get_dword (it) == 0) { + if (indices[2] >= gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)])]) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + if (depth > 3) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } + gui_cs_list_model_cs_iter_set_bitfield (it, (guint32) indices[2]); + gui_cs_list_model_cs_iter_set_in_bitfields (it, TRUE); } else { - /* XXX: DWORD */ - result = FALSE; - return result; + guint32 addr; + addr = (guint32) 0; + switch (emulation_packet_base_get_type_id (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)])) { + case 0: + { + EmulationPacketBase* _tmp2_; + EmulationPacket0* p0; + p0 = _g_object_ref0 ((_tmp2_ = self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)], EMULATION_IS_PACKET0 (_tmp2_) ? ((EmulationPacket0*) _tmp2_) : NULL)); + addr = emulation_packet0_get_addr (p0); + _g_object_unref0 (p0); + break; + } + case 1: + { + EmulationPacketBase* _tmp3_; + EmulationPacket1* p1; + guint32 _tmp4_ = 0U; + p1 = _g_object_ref0 ((_tmp3_ = self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)], EMULATION_IS_PACKET1 (_tmp3_) ? ((EmulationPacket1*) _tmp3_) : NULL)); + if (gui_cs_list_model_cs_iter_get_dword (it) == 1) { + _tmp4_ = emulation_packet1_get_addr1 (p1); + } else { + _tmp4_ = emulation_packet1_get_addr2 (p1); + } + addr = _tmp4_; + _g_object_unref0 (p1); + break; + } + case 2: + { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + case 3: + { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + } + if (indices[2] < 0) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + if (indices[2] >= gui_cs_list_model_get_variant_count (self, addr)) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + gui_cs_list_model_cs_iter_set_variant (it, (guint32) indices[2]); + gui_cs_list_model_cs_iter_set_in_variants (it, TRUE); + if (depth == 4) { + if (indices[3] < 0) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + if (indices[3] >= gui_cs_list_model_get_bitfield_count (self, addr, (guint) gui_cs_list_model_cs_iter_get_variant (it))) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + gui_cs_list_model_cs_iter_set_bitfield (it, (guint32) indices[3]); + gui_cs_list_model_cs_iter_set_in_bitfields (it, TRUE); + } } - gui_cs_list_model_set_bitfield_num (self, &(*iter), (guint) (indices[2] + 1)); } (*iter).stamp = self->priv->m_stamp; result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } @@ -656,180 +702,30 @@ static GtkTreePath* gui_cs_list_model_real_get_path (GtkTreeModel* base, GtkTree GUICSListModel * self; GtkTreePath* result; GtkTreePath* path; + GUICSListModelCSIter* it; self = (GUICSListModel*) base; path = gtk_tree_path_new (); - gtk_tree_path_append_index (path, (gint) gui_cs_list_model_get_packet_num (self, &(*iter))); - if (gui_cs_list_model_has_dwords (self, &(*iter))) { - gtk_tree_path_append_index (path, ((gint) gui_cs_list_model_get_dword_num (self, &(*iter))) - 1); + it = gui_cs_list_model_cs_iter_new (iter); + gtk_tree_path_append_index (path, (gint) gui_cs_list_model_cs_iter_get_packet (it)); + if (gui_cs_list_model_cs_iter_get_in_dwords (it)) { + gtk_tree_path_append_index (path, (gint) gui_cs_list_model_cs_iter_get_dword (it)); } - if (gui_cs_list_model_has_bitfields (self, &(*iter))) { - gtk_tree_path_append_index (path, ((gint) gui_cs_list_model_get_bitfield_num (self, &(*iter))) - 1); + if (gui_cs_list_model_cs_iter_get_in_bitfields (it)) { + if (gui_cs_list_model_cs_iter_get_in_variants (it)) { + gtk_tree_path_append_index (path, (gint) gui_cs_list_model_cs_iter_get_variant (it)); + } + gtk_tree_path_append_index (path, (gint) gui_cs_list_model_cs_iter_get_bitfield (it)); } result = path; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } guint32 gui_cs_list_model_get_numeric_value (GUICSListModel* self, GtkTreeIter* iter) { guint32 result; - EmulationPacketBase* _tmp0_; - EmulationPacketBase* p; g_return_val_if_fail (self != NULL, 0U); - _tmp0_ = NULL; - p = (_tmp0_ = self->priv->m_cs->packets[gui_cs_list_model_get_packet_num (self, &(*iter))], (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)); - switch (gui_cs_list_model_get_row_type (self, &(*iter))) { - case GUI_CS_LIST_MODEL_ROW_TYPE_PACKET: - { - result = p->header; - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: - { - result = emulation_packet_base_get (p, gui_cs_list_model_dword_index (self, &(*iter))); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER: - { - result = p->header; - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: - { - break; - } - case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: - { - switch (emulation_packet_base_get_type_id (p)) { - case 0: - { - EmulationPacket0* _tmp2_; - EmulationPacketBase* _tmp1_; - EmulationPacket0* p0; - _tmp2_ = NULL; - _tmp1_ = NULL; - p0 = (_tmp2_ = (_tmp1_ = p, EMULATION_IS_PACKET0 (_tmp1_) ? ((EmulationPacket0*) _tmp1_) : NULL), (_tmp2_ == NULL) ? NULL : g_object_ref (_tmp2_)); - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { - case 0: - { - result = emulation_packet0_get__ADDR (p0); - (p0 == NULL) ? NULL : (p0 = (g_object_unref (p0), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case 1: - { - result = emulation_packet0_get__ONE_REG_WR (p0); - (p0 == NULL) ? NULL : (p0 = (g_object_unref (p0), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case 2: - { - result = emulation_packet0_get__COUNT (p0); - (p0 == NULL) ? NULL : (p0 = (g_object_unref (p0), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case 3: - { - result = (guint32) emulation_packet_base_get_type_id (p); - (p0 == NULL) ? NULL : (p0 = (g_object_unref (p0), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - } - (p0 == NULL) ? NULL : (p0 = (g_object_unref (p0), NULL)); - break; - } - case 1: - { - EmulationPacket1* _tmp4_; - EmulationPacketBase* _tmp3_; - EmulationPacket1* p1; - _tmp4_ = NULL; - _tmp3_ = NULL; - p1 = (_tmp4_ = (_tmp3_ = p, EMULATION_IS_PACKET1 (_tmp3_) ? ((EmulationPacket1*) _tmp3_) : NULL), (_tmp4_ == NULL) ? NULL : g_object_ref (_tmp4_)); - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { - case 0: - { - result = emulation_packet1_get__ADDR1 (p1); - (p1 == NULL) ? NULL : (p1 = (g_object_unref (p1), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case 1: - { - result = emulation_packet1_get__ADDR2 (p1); - (p1 == NULL) ? NULL : (p1 = (g_object_unref (p1), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case 2: - { - result = (guint32) emulation_packet_base_get_type_id (p); - (p1 == NULL) ? NULL : (p1 = (g_object_unref (p1), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - } - (p1 == NULL) ? NULL : (p1 = (g_object_unref (p1), NULL)); - break; - } - case 2: - { - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { - case 0: - { - result = (guint32) emulation_packet_base_get_type_id (p); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - } - break; - } - case 3: - { - EmulationPacket3* _tmp6_; - EmulationPacketBase* _tmp5_; - EmulationPacket3* p3; - _tmp6_ = NULL; - _tmp5_ = NULL; - p3 = (_tmp6_ = (_tmp5_ = p, EMULATION_IS_PACKET3 (_tmp5_) ? ((EmulationPacket3*) _tmp5_) : NULL), (_tmp6_ == NULL) ? NULL : g_object_ref (_tmp6_)); - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { - case 0: - { - result = emulation_packet3_get__IT_OPCODE (p3); - (p3 == NULL) ? NULL : (p3 = (g_object_unref (p3), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case 1: - { - result = emulation_packet3_get__COUNT (p3); - (p3 == NULL) ? NULL : (p3 = (g_object_unref (p3), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - case 2: - { - result = (guint32) emulation_packet_base_get_type_id (p); - (p3 == NULL) ? NULL : (p3 = (g_object_unref (p3), NULL)); - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); - return result; - } - } - (p3 == NULL) ? NULL : (p3 = (g_object_unref (p3), NULL)); - break; - } - } - break; - } - } result = (guint32) 0; - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); return result; } @@ -842,40 +738,100 @@ static char* gui_cs_list_model_translate_addr (GUICSListModel* self, guint32 add regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr); if (regs == NULL) { result = g_strdup_printf ("0x%04X", addr); - (regs == NULL) ? NULL : (regs = (g_object_unref (regs), NULL)); + _g_object_unref0 (regs); return result; } _tmp0_ = NULL; - result = (_tmp0_ = emulation_register_info_get_name (emulation_register_get_info (emulation_register_list_get (regs, (guint) 0))), (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)); - (regs == NULL) ? NULL : (regs = (g_object_unref (regs), NULL)); + if (emulation_register_list_get_length (regs) > 1) { + _tmp0_ = "Multiple"; + } else { + _tmp0_ = emulation_register_info_get_name (emulation_register_get_info (emulation_register_list_get (regs, (guint) 0))); + } + result = g_strdup (_tmp0_); + _g_object_unref0 (regs); + return result; +} + + +static const char* gui_cs_list_model_variant_name (GUICSListModel* self, guint32 addr, guint variant) { + const char* result; + EmulationRegisterList* regs; + g_return_val_if_fail (self != NULL, NULL); + regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr); + g_assert (regs != NULL); + g_assert (variant < emulation_register_list_get_length (regs)); + result = emulation_register_info_get_name (emulation_register_get_info (emulation_register_list_get (regs, variant))); + _g_object_unref0 (regs); + return result; +} + + +static const char* gui_cs_list_model_bitfield_name (GUICSListModel* self, guint32 addr, guint variant, guint bitfield) { + const char* result; + EmulationRegisterList* regs; + g_return_val_if_fail (self != NULL, NULL); + regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr); + g_assert (regs != NULL); + g_assert (variant < emulation_register_list_get_length (regs)); + if (emulation_register_info_get_length (emulation_register_get_info (emulation_register_list_get (regs, variant))) > 0) { + g_assert (bitfield < emulation_register_info_get_length (emulation_register_get_info (emulation_register_list_get (regs, variant)))); + result = emulation_bitfield_get_name (emulation_register_info_get (emulation_register_get_info (emulation_register_list_get (regs, variant)), bitfield)); + _g_object_unref0 (regs); + return result; + } + result = "DATA_REGISTER"; + _g_object_unref0 (regs); + return result; +} + + +static guint32 gui_cs_list_model_bitfield_value (GUICSListModel* self, guint32 addr, guint variant, guint bitfield, guint32 dword) { + guint32 result; + EmulationRegisterList* regs; + guint high; + guint low; + g_return_val_if_fail (self != NULL, 0U); + regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr); + g_assert (regs != NULL); + g_assert (variant < emulation_register_list_get_length (regs)); + high = (guint) 31; + low = (guint) 0; + if (emulation_register_info_get_length (emulation_register_get_info (emulation_register_list_get (regs, variant))) > 0) { + g_assert (bitfield < emulation_register_info_get_length (emulation_register_get_info (emulation_register_list_get (regs, variant)))); + high = (guint) emulation_bitfield_get_high (emulation_register_info_get (emulation_register_get_info (emulation_register_list_get (regs, variant)), bitfield)); + low = (guint) emulation_bitfield_get_low (emulation_register_info_get (emulation_register_get_info (emulation_register_list_get (regs, variant)), bitfield)); + } + result = (dword >> low) & ((1 << ((high - low) + 1)) - 1); + _g_object_unref0 (regs); return result; - (regs == NULL) ? NULL : (regs = (g_object_unref (regs), NULL)); } static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* iter, gint column, GValue* val) { GUICSListModel * self; - EmulationPacketBase* _tmp0_; + GUICSListModelCSIter* it; EmulationPacketBase* p; self = (GUICSListModel*) base; - _tmp0_ = NULL; - p = (_tmp0_ = self->priv->m_cs->packets[gui_cs_list_model_get_packet_num (self, &(*iter))], (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)); - g_value_init (&(*val), G_TYPE_STRING); - switch (gui_cs_list_model_get_row_type (self, &(*iter))) { + if ((*iter).stamp != self->priv->m_stamp) { + return; + } + it = gui_cs_list_model_cs_iter_new (iter); + p = _g_object_ref0 (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)]); + g_value_init (val, G_TYPE_STRING); + switch (gui_cs_list_model_cs_iter_get_row_type (it)) { case GUI_CS_LIST_MODEL_ROW_TYPE_PACKET: { switch (column) { case GUI_CS_LIST_MODEL_COLUMNS_NAME: { - g_value_set_static_string (&(*val), gui_cs_list_model_packet_strings[emulation_packet_base_get_type_id (p)]); + g_value_set_static_string (val, gui_cs_list_model_packet_strings[emulation_packet_base_get_type_id (p)]); break; } case GUI_CS_LIST_MODEL_COLUMNS_VALUE: { - char* _tmp1_; - _tmp1_ = NULL; - g_value_set_string (&(*val), _tmp1_ = g_strdup_printf ("0x%08X", p->header)); - _tmp1_ = (g_free (_tmp1_), NULL); + char* _tmp0_; + g_value_set_string (val, _tmp0_ = g_strdup_printf ("0x%08X", p->header)); + _g_free0 (_tmp0_); break; } case GUI_CS_LIST_MODEL_COLUMNS_TARGET: @@ -883,43 +839,32 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (emulation_packet_base_get_type_id (p)) { case 0: { - char* _tmp3_; - EmulationPacketBase* _tmp2_; - _tmp3_ = NULL; - _tmp2_ = NULL; - g_value_set_string (&(*val), _tmp3_ = gui_cs_list_model_translate_addr (self, emulation_packet0_get_addr ((_tmp2_ = p, EMULATION_IS_PACKET0 (_tmp2_) ? ((EmulationPacket0*) _tmp2_) : NULL)))); - _tmp3_ = (g_free (_tmp3_), NULL); + char* _tmp1_; + g_value_set_string (val, _tmp1_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) 1))); + _g_free0 (_tmp1_); break; } case 1: { - char* _tmp9_; - char* _tmp8_; - char* _tmp6_; char* _tmp5_; - EmulationPacketBase* _tmp4_; - EmulationPacketBase* _tmp7_; - _tmp9_ = NULL; - _tmp8_ = NULL; - _tmp6_ = NULL; - _tmp5_ = NULL; - _tmp4_ = NULL; - _tmp7_ = NULL; - g_value_set_string (&(*val), _tmp9_ = g_strconcat (_tmp6_ = g_strconcat (_tmp5_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get_addr1 ((_tmp4_ = p, EMULATION_IS_PACKET1 (_tmp4_) ? ((EmulationPacket1*) _tmp4_) : NULL))), " | ", NULL), _tmp8_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get_addr2 ((_tmp7_ = p, EMULATION_IS_PACKET1 (_tmp7_) ? ((EmulationPacket1*) _tmp7_) : NULL))), NULL)); - _tmp9_ = (g_free (_tmp9_), NULL); - _tmp8_ = (g_free (_tmp8_), NULL); - _tmp6_ = (g_free (_tmp6_), NULL); - _tmp5_ = (g_free (_tmp5_), NULL); + char* _tmp4_; + char* _tmp3_; + char* _tmp2_; + g_value_set_string (val, _tmp5_ = g_strconcat (_tmp3_ = g_strconcat (_tmp2_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) 1)), " | ", NULL), _tmp4_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) 2)), NULL)); + _g_free0 (_tmp5_); + _g_free0 (_tmp4_); + _g_free0 (_tmp3_); + _g_free0 (_tmp2_); break; } case 2: { - g_value_set_static_string (&(*val), ""); + g_value_set_static_string (val, ""); break; } case 3: { - g_value_set_static_string (&(*val), "TODO"); + g_value_set_static_string (val, "TODO"); break; } } @@ -933,18 +878,16 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (column) { case GUI_CS_LIST_MODEL_COLUMNS_NAME: { - char* _tmp10_; - _tmp10_ = NULL; - g_value_set_string (&(*val), _tmp10_ = g_strdup_printf ("DWORD%u", gui_cs_list_model_dword_index (self, &(*iter)))); - _tmp10_ = (g_free (_tmp10_), NULL); + char* _tmp6_; + g_value_set_string (val, _tmp6_ = g_strdup_printf ("DWORD%u", gui_cs_list_model_cs_iter_get_dword (it) - 1)); + _g_free0 (_tmp6_); break; } case GUI_CS_LIST_MODEL_COLUMNS_VALUE: { - char* _tmp11_; - _tmp11_ = NULL; - g_value_set_string (&(*val), _tmp11_ = g_strdup_printf ("0x%08X", emulation_packet_base_get (p, gui_cs_list_model_dword_index (self, &(*iter))))); - _tmp11_ = (g_free (_tmp11_), NULL); + char* _tmp7_; + g_value_set_string (val, _tmp7_ = g_strdup_printf ("0x%08X", emulation_packet_base_get (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1)))); + _g_free0 (_tmp7_); break; } case GUI_CS_LIST_MODEL_COLUMNS_TARGET: @@ -952,50 +895,26 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (emulation_packet_base_get_type_id (p)) { case 0: { - gint _tmp12_; - EmulationPacketBase* _tmp13_; - char* _tmp15_; - EmulationPacketBase* _tmp14_; - _tmp12_ = 0; - _tmp13_ = NULL; - if (emulation_packet0_get_one_reg_wr ((_tmp13_ = p, EMULATION_IS_PACKET0 (_tmp13_) ? ((EmulationPacket0*) _tmp13_) : NULL))) { - _tmp12_ = 0; - } else { - _tmp12_ = 1; - } - _tmp15_ = NULL; - _tmp14_ = NULL; - g_value_set_string (&(*val), _tmp15_ = gui_cs_list_model_translate_addr (self, emulation_packet0_get_addr ((_tmp14_ = p, EMULATION_IS_PACKET0 (_tmp14_) ? ((EmulationPacket0*) _tmp14_) : NULL)) + ((4 * gui_cs_list_model_dword_index (self, &(*iter))) * _tmp12_))); - _tmp15_ = (g_free (_tmp15_), NULL); + char* _tmp8_; + g_value_set_string (val, _tmp8_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)))); + _g_free0 (_tmp8_); break; } case 1: { - guint32 _tmp16_; - char* _tmp19_; - _tmp16_ = 0U; - if (gui_cs_list_model_dword_index (self, &(*iter)) == 0) { - EmulationPacketBase* _tmp17_; - _tmp17_ = NULL; - _tmp16_ = emulation_packet1_get_addr1 ((_tmp17_ = p, EMULATION_IS_PACKET1 (_tmp17_) ? ((EmulationPacket1*) _tmp17_) : NULL)); - } else { - EmulationPacketBase* _tmp18_; - _tmp18_ = NULL; - _tmp16_ = emulation_packet1_get_addr2 ((_tmp18_ = p, EMULATION_IS_PACKET1 (_tmp18_) ? ((EmulationPacket1*) _tmp18_) : NULL)); - } - _tmp19_ = NULL; - g_value_set_string (&(*val), _tmp19_ = gui_cs_list_model_translate_addr (self, _tmp16_)); - _tmp19_ = (g_free (_tmp19_), NULL); + char* _tmp9_; + g_value_set_string (val, _tmp9_ = gui_cs_list_model_translate_addr (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)))); + _g_free0 (_tmp9_); break; } case 2: { - g_value_set_static_string (&(*val), ""); + g_value_set_static_string (val, ""); break; } case 3: { - g_value_set_static_string (&(*val), "TODO"); + g_value_set_static_string (val, "TODO"); break; } } @@ -1009,20 +928,40 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (column) { case GUI_CS_LIST_MODEL_COLUMNS_NAME: { - g_value_set_static_string (&(*val), "HEADER"); + g_value_set_static_string (val, "HEADER"); + break; + } + case GUI_CS_LIST_MODEL_COLUMNS_VALUE: + { + char* _tmp10_; + g_value_set_string (val, _tmp10_ = g_strdup_printf ("0x%08X", p->header)); + _g_free0 (_tmp10_); + break; + } + case GUI_CS_LIST_MODEL_COLUMNS_TARGET: + { + g_value_set_static_string (val, ""); + break; + } + } + break; + } + case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: + { + switch (column) { + case GUI_CS_LIST_MODEL_COLUMNS_NAME: + { + g_value_set_static_string (val, gui_cs_list_model_variant_name (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it))); break; } case GUI_CS_LIST_MODEL_COLUMNS_VALUE: { - char* _tmp20_; - _tmp20_ = NULL; - g_value_set_string (&(*val), _tmp20_ = g_strdup_printf ("0x%08X", p->header)); - _tmp20_ = (g_free (_tmp20_), NULL); + g_value_set_static_string (val, ""); break; } case GUI_CS_LIST_MODEL_COLUMNS_TARGET: { - g_value_set_static_string (&(*val), ""); + g_value_set_static_string (val, ""); break; } } @@ -1030,6 +969,25 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i } case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: { + switch (column) { + case GUI_CS_LIST_MODEL_COLUMNS_NAME: + { + g_value_set_static_string (val, gui_cs_list_model_bitfield_name (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it), (guint) gui_cs_list_model_cs_iter_get_bitfield (it))); + break; + } + case GUI_CS_LIST_MODEL_COLUMNS_VALUE: + { + char* _tmp11_; + g_value_set_string (val, _tmp11_ = g_strdup_printf ("%u", gui_cs_list_model_bitfield_value (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it), (guint) gui_cs_list_model_cs_iter_get_bitfield (it), emulation_packet_base_get (p, (guint) (gui_cs_list_model_cs_iter_get_dword (it) - 1))))); + _g_free0 (_tmp11_); + break; + } + case GUI_CS_LIST_MODEL_COLUMNS_TARGET: + { + g_value_set_static_string (val, ""); + break; + } + } break; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: @@ -1037,12 +995,12 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (column) { case GUI_CS_LIST_MODEL_COLUMNS_NAME: { - g_value_set_static_string (&(*val), gui_cs_list_model_packet_headers[emulation_packet_base_get_type_id (p)][gui_cs_list_model_bitfield_index (self, &(*iter))]); + g_value_set_static_string (val, gui_cs_list_model_packet_headers[emulation_packet_base_get_type_id (p)][gui_cs_list_model_cs_iter_get_bitfield (it)]); break; } case GUI_CS_LIST_MODEL_COLUMNS_TARGET: { - g_value_set_static_string (&(*val), ""); + g_value_set_static_string (val, ""); break; } case GUI_CS_LIST_MODEL_COLUMNS_VALUE: @@ -1050,95 +1008,81 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i switch (emulation_packet_base_get_type_id (p)) { case 0: { - EmulationPacket0* _tmp22_; - EmulationPacketBase* _tmp21_; + EmulationPacketBase* _tmp12_; EmulationPacket0* p0; - _tmp22_ = NULL; - _tmp21_ = NULL; - p0 = (_tmp22_ = (_tmp21_ = p, EMULATION_IS_PACKET0 (_tmp21_) ? ((EmulationPacket0*) _tmp21_) : NULL), (_tmp22_ == NULL) ? NULL : g_object_ref (_tmp22_)); - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { + p0 = _g_object_ref0 ((_tmp12_ = p, EMULATION_IS_PACKET0 (_tmp12_) ? ((EmulationPacket0*) _tmp12_) : NULL)); + switch (gui_cs_list_model_cs_iter_get_bitfield (it)) { case 0: { - char* _tmp23_; - _tmp23_ = NULL; - g_value_set_string (&(*val), _tmp23_ = gui_cs_list_model_translate_addr (self, emulation_packet0_get__ADDR (p0))); - _tmp23_ = (g_free (_tmp23_), NULL); + char* _tmp13_; + g_value_set_string (val, _tmp13_ = gui_cs_list_model_translate_addr (self, emulation_packet0_get__ADDR (p0))); + _g_free0 (_tmp13_); break; } case 1: { - char* _tmp24_; - _tmp24_ = NULL; - g_value_set_string (&(*val), _tmp24_ = g_strdup_printf ("%u", emulation_packet0_get__ONE_REG_WR (p0))); - _tmp24_ = (g_free (_tmp24_), NULL); + char* _tmp14_; + g_value_set_string (val, _tmp14_ = g_strdup_printf ("%u", emulation_packet0_get__ONE_REG_WR (p0))); + _g_free0 (_tmp14_); break; } case 2: { - char* _tmp25_; - _tmp25_ = NULL; - g_value_set_string (&(*val), _tmp25_ = g_strdup_printf ("%u", emulation_packet0_get__COUNT (p0))); - _tmp25_ = (g_free (_tmp25_), NULL); + char* _tmp15_; + g_value_set_string (val, _tmp15_ = g_strdup_printf ("%u", emulation_packet0_get__COUNT (p0))); + _g_free0 (_tmp15_); break; } case 3: { - char* _tmp26_; - _tmp26_ = NULL; - g_value_set_string (&(*val), _tmp26_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); - _tmp26_ = (g_free (_tmp26_), NULL); + char* _tmp16_; + g_value_set_string (val, _tmp16_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); + _g_free0 (_tmp16_); break; } } - (p0 == NULL) ? NULL : (p0 = (g_object_unref (p0), NULL)); + _g_object_unref0 (p0); break; } case 1: { - EmulationPacket1* _tmp28_; - EmulationPacketBase* _tmp27_; + EmulationPacketBase* _tmp17_; EmulationPacket1* p1; - _tmp28_ = NULL; - _tmp27_ = NULL; - p1 = (_tmp28_ = (_tmp27_ = p, EMULATION_IS_PACKET1 (_tmp27_) ? ((EmulationPacket1*) _tmp27_) : NULL), (_tmp28_ == NULL) ? NULL : g_object_ref (_tmp28_)); - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { + p1 = _g_object_ref0 ((_tmp17_ = p, EMULATION_IS_PACKET1 (_tmp17_) ? ((EmulationPacket1*) _tmp17_) : NULL)); + switch (gui_cs_list_model_cs_iter_get_bitfield (it)) { case 0: { - char* _tmp29_; - _tmp29_ = NULL; - g_value_set_string (&(*val), _tmp29_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get__ADDR1 (p1))); - _tmp29_ = (g_free (_tmp29_), NULL); + char* _tmp18_; + g_value_set_string (val, _tmp18_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get__ADDR1 (p1))); + _g_free0 (_tmp18_); break; } case 1: { - char* _tmp30_; - _tmp30_ = NULL; - g_value_set_string (&(*val), _tmp30_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get__ADDR2 (p1))); - _tmp30_ = (g_free (_tmp30_), NULL); + char* _tmp19_; + g_value_set_string (val, _tmp19_ = gui_cs_list_model_translate_addr (self, emulation_packet1_get__ADDR2 (p1))); + _g_free0 (_tmp19_); break; } case 2: { - char* _tmp31_; - _tmp31_ = NULL; - g_value_set_string (&(*val), _tmp31_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); - _tmp31_ = (g_free (_tmp31_), NULL); + char* _tmp20_; + g_value_set_string (val, _tmp20_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); + _g_free0 (_tmp20_); break; } } - (p1 == NULL) ? NULL : (p1 = (g_object_unref (p1), NULL)); + _g_object_unref0 (p1); break; } case 2: { - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { + switch (gui_cs_list_model_cs_iter_get_bitfield (it)) { case 0: { - char* _tmp32_; - _tmp32_ = NULL; - g_value_set_string (&(*val), _tmp32_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); - _tmp32_ = (g_free (_tmp32_), NULL); + char* _tmp21_; + g_value_set_string (val, _tmp21_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); + _g_free0 (_tmp21_); break; } } @@ -1146,39 +1090,33 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i } case 3: { - EmulationPacket3* _tmp34_; - EmulationPacketBase* _tmp33_; + EmulationPacketBase* _tmp22_; EmulationPacket3* p3; - _tmp34_ = NULL; - _tmp33_ = NULL; - p3 = (_tmp34_ = (_tmp33_ = p, EMULATION_IS_PACKET3 (_tmp33_) ? ((EmulationPacket3*) _tmp33_) : NULL), (_tmp34_ == NULL) ? NULL : g_object_ref (_tmp34_)); - switch (gui_cs_list_model_bitfield_index (self, &(*iter))) { + p3 = _g_object_ref0 ((_tmp22_ = p, EMULATION_IS_PACKET3 (_tmp22_) ? ((EmulationPacket3*) _tmp22_) : NULL)); + switch (gui_cs_list_model_cs_iter_get_bitfield (it)) { case 0: { - char* _tmp35_; - _tmp35_ = NULL; - g_value_set_string (&(*val), _tmp35_ = g_strdup_printf ("0x%02X", emulation_packet3_get__IT_OPCODE (p3))); - _tmp35_ = (g_free (_tmp35_), NULL); + char* _tmp23_; + g_value_set_string (val, _tmp23_ = g_strdup_printf ("0x%02X", emulation_packet3_get__IT_OPCODE (p3))); + _g_free0 (_tmp23_); break; } case 1: { - char* _tmp36_; - _tmp36_ = NULL; - g_value_set_string (&(*val), _tmp36_ = g_strdup_printf ("%u", emulation_packet3_get__COUNT (p3))); - _tmp36_ = (g_free (_tmp36_), NULL); + char* _tmp24_; + g_value_set_string (val, _tmp24_ = g_strdup_printf ("%u", emulation_packet3_get__COUNT (p3))); + _g_free0 (_tmp24_); break; } case 2: { - char* _tmp37_; - _tmp37_ = NULL; - g_value_set_string (&(*val), _tmp37_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); - _tmp37_ = (g_free (_tmp37_), NULL); + char* _tmp25_; + g_value_set_string (val, _tmp25_ = g_strdup_printf ("%u", emulation_packet_base_get_type_id (p))); + _g_free0 (_tmp25_); break; } } - (p3 == NULL) ? NULL : (p3 = (g_object_unref (p3), NULL)); + _g_object_unref0 (p3); break; } } @@ -1188,57 +1126,130 @@ static void gui_cs_list_model_real_get_value (GtkTreeModel* base, GtkTreeIter* i break; } } - (p == NULL) ? NULL : (p = (g_object_unref (p), NULL)); + _gui_cs_list_model_cs_iter_unref0 (it); + _g_object_unref0 (p); +} + + +static guint32 gui_cs_list_model_dword_addr (GUICSListModel* self, guint p, guint d) { + guint32 result; + g_return_val_if_fail (self != NULL, 0U); + g_assert (p < self->priv->m_cs->packets_length1); + switch (emulation_packet_base_get_type_id (self->priv->m_cs->packets[p])) { + case 0: + { + EmulationPacketBase* _tmp0_; + EmulationPacket0* p0; + guint _tmp1_ = 0U; + p0 = _g_object_ref0 ((_tmp0_ = self->priv->m_cs->packets[p], EMULATION_IS_PACKET0 (_tmp0_) ? ((EmulationPacket0*) _tmp0_) : NULL)); + if (emulation_packet0_get_one_reg_wr (p0)) { + _tmp1_ = (guint) 0; + } else { + _tmp1_ = 4 * (d - 1); + } + result = emulation_packet0_get_addr (p0) + _tmp1_; + _g_object_unref0 (p0); + return result; + } + case 1: + { + EmulationPacketBase* _tmp2_; + EmulationPacket1* p1; + guint32 _tmp3_ = 0U; + p1 = _g_object_ref0 ((_tmp2_ = self->priv->m_cs->packets[p], EMULATION_IS_PACKET1 (_tmp2_) ? ((EmulationPacket1*) _tmp2_) : NULL)); + if (d == 1) { + _tmp3_ = emulation_packet1_get_addr1 (p1); + } else { + _tmp3_ = emulation_packet1_get_addr2 (p1); + } + result = _tmp3_; + _g_object_unref0 (p1); + return result; + } + } + result = (guint32) 0; + return result; } static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIter* iter) { GUICSListModel * self; gboolean result; - guint p; + GUICSListModelCSIter* it; + guint32 p; self = (GUICSListModel*) base; - p = gui_cs_list_model_get_packet_num (self, &(*iter)); - switch (gui_cs_list_model_get_row_type (self, &(*iter))) { + if ((*iter).stamp != self->priv->m_stamp) { + result = FALSE; + return result; + } + (*iter).stamp = 0; + it = gui_cs_list_model_cs_iter_new (iter); + p = gui_cs_list_model_cs_iter_get_packet (it); + switch (gui_cs_list_model_cs_iter_get_row_type (it)) { case GUI_CS_LIST_MODEL_ROW_TYPE_PACKET: { p++; if (p >= self->priv->m_cs->packets_length1) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - gui_cs_list_model_set_packet_num (self, &(*iter), p); + gui_cs_list_model_cs_iter_set_packet (it, p); break; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER: case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - guint d; - d = gui_cs_list_model_get_dword_num (self, &(*iter)) + 1; - if (d > (emulation_packet_base_get_length (self->priv->m_cs->packets[p]) + 1)) { + guint32 d; + d = gui_cs_list_model_cs_iter_get_dword (it) + 1; + if (d >= (emulation_packet_base_get_length (self->priv->m_cs->packets[p]) + 1)) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + gui_cs_list_model_cs_iter_set_dword (it, d); + break; + } + case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: + { + guint32 v; + v = gui_cs_list_model_cs_iter_get_variant (it) + 1; + if (v >= gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) p, (guint) gui_cs_list_model_cs_iter_get_dword (it)))) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - gui_cs_list_model_set_dword_num (self, &(*iter), d); + gui_cs_list_model_cs_iter_set_variant (it, v); break; } case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: { - result = FALSE; - return result; + guint32 b; + b = gui_cs_list_model_cs_iter_get_bitfield (it) + 1; + if (b >= gui_cs_list_model_get_bitfield_count (self, gui_cs_list_model_dword_addr (self, (guint) p, (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it))) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + gui_cs_list_model_cs_iter_set_bitfield (it, b); + break; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: { - guint b; - b = gui_cs_list_model_get_bitfield_num (self, &(*iter)) + 1; - if (b > gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[p])]) { + guint32 b; + b = gui_cs_list_model_cs_iter_get_bitfield (it) + 1; + if (b >= gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[p])]) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - gui_cs_list_model_set_bitfield_num (self, &(*iter), b); + gui_cs_list_model_cs_iter_set_bitfield (it, b); break; } } + (*iter).stamp = self->priv->m_stamp; result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } @@ -1246,46 +1257,68 @@ static gboolean gui_cs_list_model_real_iter_next (GtkTreeModel* base, GtkTreeIte static gboolean gui_cs_list_model_real_iter_children (GtkTreeModel* base, GtkTreeIter* iter, GtkTreeIter* parent) { GUICSListModel * self; gboolean result; + GUICSListModelCSIter* it; + GUICSListModelCSIter* pa; self = (GUICSListModel*) base; + it = gui_cs_list_model_cs_iter_new (iter); + (*iter).stamp = 0; if (parent == NULL) { if (self->priv->m_cs->packets_length1 == 0) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - gui_cs_list_model_set_iter (self, &(*iter), (guint) 0, (guint) 0, (guint) 0, TRUE); + gui_cs_list_model_cs_iter_reset (it); + (*iter).stamp = self->priv->m_stamp; result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - switch (gui_cs_list_model_get_row_type (self, parent)) { + if ((*parent).stamp != self->priv->m_stamp) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + pa = gui_cs_list_model_cs_iter_new (parent); + gui_cs_list_model_cs_iter_copy (it, pa); + switch (gui_cs_list_model_cs_iter_get_row_type (pa)) { case GUI_CS_LIST_MODEL_ROW_TYPE_PACKET: { - gui_cs_list_model_set_iter (self, &(*iter), gui_cs_list_model_get_packet_num (self, parent), (guint) 1, (guint) 0, TRUE); - result = TRUE; - return result; + gui_cs_list_model_cs_iter_set_dword (it, (guint32) 0); + gui_cs_list_model_cs_iter_set_in_dwords (it, TRUE); + break; } + case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER: { - gui_cs_list_model_set_iter (self, &(*iter), gui_cs_list_model_get_packet_num (self, parent), (guint) 1, (guint) 1, TRUE); - result = TRUE; - return result; + gui_cs_list_model_cs_iter_set_bitfield (it, (guint32) 0); + gui_cs_list_model_cs_iter_set_in_bitfields (it, TRUE); + break; } case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - result = FALSE; - return result; - } - case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: - { - result = FALSE; - return result; + if (gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (pa), (guint) gui_cs_list_model_cs_iter_get_dword (pa))) == 0) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); + return result; + } + gui_cs_list_model_cs_iter_set_variant (it, (guint32) 0); + gui_cs_list_model_cs_iter_set_in_variants (it, TRUE); + break; } - case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: + default: { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); return result; } } - result = FALSE; + (*iter).stamp = self->priv->m_stamp; + result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); return result; } @@ -1293,35 +1326,59 @@ static gboolean gui_cs_list_model_real_iter_children (GtkTreeModel* base, GtkTre static gboolean gui_cs_list_model_real_iter_has_child (GtkTreeModel* base, GtkTreeIter* iter) { GUICSListModel * self; gboolean result; + GUICSListModelCSIter* it; self = (GUICSListModel*) base; - switch (gui_cs_list_model_get_row_type (self, &(*iter))) { + if ((*iter).stamp != self->priv->m_stamp) { + result = FALSE; + return result; + } + it = gui_cs_list_model_cs_iter_new (iter); + switch (gui_cs_list_model_cs_iter_get_row_type (it)) { case GUI_CS_LIST_MODEL_ROW_TYPE_PACKET: { result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER: { result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - result = FALSE; + gboolean _tmp0_ = FALSE; + if (gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it))) == 0) { + _tmp0_ = FALSE; + } else { + _tmp0_ = TRUE; + } + result = _tmp0_; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: + { + result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } } result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } @@ -1329,41 +1386,57 @@ static gboolean gui_cs_list_model_real_iter_has_child (GtkTreeModel* base, GtkTr static gint gui_cs_list_model_real_iter_n_children (GtkTreeModel* base, GtkTreeIter* iter) { GUICSListModel * self; gint result; - guint p; + GUICSListModelCSIter* it; self = (GUICSListModel*) base; if (iter == NULL) { result = self->priv->m_cs->packets_length1; return result; } - p = gui_cs_list_model_get_packet_num (self, iter); - switch (gui_cs_list_model_get_row_type (self, iter)) { + if ((*iter).stamp != self->priv->m_stamp) { + result = 0; + return result; + } + it = gui_cs_list_model_cs_iter_new (iter); + switch (gui_cs_list_model_cs_iter_get_row_type (it)) { case GUI_CS_LIST_MODEL_ROW_TYPE_PACKET: { - result = ((gint) emulation_packet_base_get_length (self->priv->m_cs->packets[p])) + 1; + result = ((gint) emulation_packet_base_get_length (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)])) + 1; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER: { - result = (gint) gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[p])]; + result = (gint) gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (it)])]; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - result = 0; + result = (gint) gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it))); + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: + { + result = (gint) gui_cs_list_model_get_bitfield_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (it), (guint) gui_cs_list_model_cs_iter_get_dword (it)), (guint) gui_cs_list_model_cs_iter_get_variant (it)); + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: { result = 0; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: { result = 0; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } } result = 0; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } @@ -1371,11 +1444,13 @@ static gint gui_cs_list_model_real_iter_n_children (GtkTreeModel* base, GtkTreeI static gboolean gui_cs_list_model_real_iter_nth_child (GtkTreeModel* base, GtkTreeIter* iter, GtkTreeIter* parent, gint n) { GUICSListModel * self; gboolean result; - guint p; + GUICSListModelCSIter* it; + GUICSListModelCSIter* pa; self = (GUICSListModel*) base; + it = gui_cs_list_model_cs_iter_new (iter); + (*iter).stamp = 0; if (parent == NULL) { - gboolean _tmp0_; - _tmp0_ = FALSE; + gboolean _tmp0_ = FALSE; if (n >= self->priv->m_cs->packets_length1) { _tmp0_ = TRUE; } else { @@ -1383,65 +1458,89 @@ static gboolean gui_cs_list_model_real_iter_nth_child (GtkTreeModel* base, GtkTr } if (_tmp0_) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - gui_cs_list_model_set_iter (self, &(*iter), (guint) n, (guint) 0, (guint) 0, TRUE); + (*iter).stamp = self->priv->m_stamp; + gui_cs_list_model_cs_iter_reset (it); + gui_cs_list_model_cs_iter_set_packet (it, (guint32) n); result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); return result; } - p = gui_cs_list_model_get_packet_num (self, parent); - switch (gui_cs_list_model_get_row_type (self, parent)) { + if ((*parent).stamp != self->priv->m_stamp) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + if (n < 0) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + return result; + } + pa = gui_cs_list_model_cs_iter_new (parent); + gui_cs_list_model_cs_iter_copy (it, pa); + switch (gui_cs_list_model_cs_iter_get_row_type (pa)) { case GUI_CS_LIST_MODEL_ROW_TYPE_PACKET: { - gboolean _tmp1_; - _tmp1_ = FALSE; - if (n > emulation_packet_base_get_length (self->priv->m_cs->packets[p])) { - _tmp1_ = TRUE; - } else { - _tmp1_ = n < 0; - } - if (_tmp1_) { + if (n > emulation_packet_base_get_length (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (pa)])) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); return result; } - gui_cs_list_model_set_iter (self, &(*iter), p, (guint) (n + 1), (guint) 0, TRUE); - result = TRUE; - return result; + gui_cs_list_model_cs_iter_set_in_dwords (it, TRUE); + gui_cs_list_model_cs_iter_set_dword (it, (guint32) n); + break; } case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER: { - gboolean _tmp2_; - _tmp2_ = FALSE; - if (n >= gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[p])]) { - _tmp2_ = TRUE; - } else { - _tmp2_ = n < 0; - } - if (_tmp2_) { + if (n >= gui_cs_list_model_packet_headers_length[emulation_packet_base_get_type_id (self->priv->m_cs->packets[gui_cs_list_model_cs_iter_get_packet (pa)])]) { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); return result; } - gui_cs_list_model_set_iter (self, &(*iter), p, (guint) 1, (guint) (n + 1), TRUE); - result = TRUE; - return result; + gui_cs_list_model_cs_iter_set_in_bitfields (it, TRUE); + gui_cs_list_model_cs_iter_set_bitfield (it, (guint32) n); + break; } case GUI_CS_LIST_MODEL_ROW_TYPE_DWORD: { - result = FALSE; - return result; + if (n >= gui_cs_list_model_get_variant_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (pa), (guint) gui_cs_list_model_cs_iter_get_dword (pa)))) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); + return result; + } + gui_cs_list_model_cs_iter_set_in_variants (it, TRUE); + gui_cs_list_model_cs_iter_set_variant (it, (guint32) n); + break; } - case GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD: + case GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT: { - result = FALSE; - return result; + if (n >= gui_cs_list_model_get_bitfield_count (self, gui_cs_list_model_dword_addr (self, (guint) gui_cs_list_model_cs_iter_get_packet (pa), (guint) gui_cs_list_model_cs_iter_get_dword (pa)), (guint) gui_cs_list_model_cs_iter_get_variant (pa))) { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); + return result; + } + gui_cs_list_model_cs_iter_set_in_bitfields (it, TRUE); + gui_cs_list_model_cs_iter_set_bitfield (it, (guint32) n); + break; } - case GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD: + default: { result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); return result; } } - result = FALSE; + (*iter).stamp = self->priv->m_stamp; + result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (pa); return result; } @@ -1449,19 +1548,37 @@ static gboolean gui_cs_list_model_real_iter_nth_child (GtkTreeModel* base, GtkTr static gboolean gui_cs_list_model_real_iter_parent (GtkTreeModel* base, GtkTreeIter* iter, GtkTreeIter* child) { GUICSListModel * self; gboolean result; + GUICSListModelCSIter* it; + GUICSListModelCSIter* ch; self = (GUICSListModel*) base; - if (gui_cs_list_model_has_bitfields (self, &(*child))) { - gui_cs_list_model_set_iter (self, &(*iter), gui_cs_list_model_get_packet_num (self, &(*child)), gui_cs_list_model_get_dword_num (self, &(*child)), (guint) 0, TRUE); - result = TRUE; + (*iter).stamp = 0; + if ((*child).stamp != self->priv->m_stamp) { + result = FALSE; return result; + } + it = gui_cs_list_model_cs_iter_new (iter); + ch = gui_cs_list_model_cs_iter_new (child); + gui_cs_list_model_cs_iter_copy (it, ch); + if (gui_cs_list_model_cs_iter_get_in_bitfields (ch)) { + gui_cs_list_model_cs_iter_set_in_bitfields (it, FALSE); } else { - if (gui_cs_list_model_has_dwords (self, &(*child))) { - gui_cs_list_model_set_iter (self, &(*iter), gui_cs_list_model_get_packet_num (self, &(*child)), (guint) 0, (guint) 0, TRUE); - result = TRUE; - return result; + if (gui_cs_list_model_cs_iter_get_in_variants (ch)) { + gui_cs_list_model_cs_iter_set_in_variants (it, FALSE); + } else { + if (gui_cs_list_model_cs_iter_get_in_dwords (ch)) { + gui_cs_list_model_cs_iter_set_in_dwords (it, FALSE); + } else { + result = FALSE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (ch); + return result; + } } } - result = FALSE; + (*iter).stamp = self->priv->m_stamp; + result = TRUE; + _gui_cs_list_model_cs_iter_unref0 (it); + _gui_cs_list_model_cs_iter_unref0 (ch); return result; } @@ -1480,54 +1597,414 @@ static void gui_cs_list_model_real_unref_node (GtkTreeModel* base, GtkTreeIter* } +GUICSListModelCSIter* gui_cs_list_model_cs_iter_construct (GType object_type, GtkTreeIter* iter) { + GUICSListModelCSIter* self; + self = (GUICSListModelCSIter*) g_type_create_instance (object_type); + g_assert (iter != NULL); + self->priv->m_iter = (GtkTreeIter*) iter; + return self; +} + + +GUICSListModelCSIter* gui_cs_list_model_cs_iter_new (GtkTreeIter* iter) { + return gui_cs_list_model_cs_iter_construct (GUI_CS_LIST_MODEL_TYPE_CS_ITER, iter); +} + + +static inline guint32 gui_cs_list_model_cs_iter_get_iter_bits (GUICSListModelCSIter* self, guint low, guint high) { + guint32 result; + guint64 num; + g_return_val_if_fail (self != NULL, 0U); + num = ((guint64) (*((guint32*) (&(*self->priv->m_iter).user_data)))) | (((guint64) (*((guint32*) (&(*self->priv->m_iter).user_data2)))) << 32); + result = (guint32) ((num >> low) & ((((guint64) 1) << ((high - low) + 1)) - 1)); + return result; +} + + +static inline void gui_cs_list_model_cs_iter_set_iter_bits (GUICSListModelCSIter* self, guint low, guint high, guint32 val) { + guint64 num; + guint64 mask; + guint32 num32[2] = {0}; + g_return_if_fail (self != NULL); + num = ((guint64) (*((guint32*) (&(*self->priv->m_iter).user_data)))) | (((guint64) (*((guint32*) (&(*self->priv->m_iter).user_data2)))) << 32); + mask = ((((guint64) 1) << ((high - low) + 1)) - 1) << low; + num = num & (~mask); + num = num | ((((guint64) val) << low) & mask); + num32[0] = (guint32) num; + num32[1] = (guint32) (num >> 32); + (*self->priv->m_iter).user_data = *((void**) (&num32[0])); + (*self->priv->m_iter).user_data2 = *((void**) (&num32[1])); +} + + +void gui_cs_list_model_cs_iter_reset (GUICSListModelCSIter* self) { + g_return_if_fail (self != NULL); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 0, (guint) 31, (guint32) 0); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 32, (guint) 51, (guint32) 0); +} + + +void gui_cs_list_model_cs_iter_copy (GUICSListModelCSIter* self, GUICSListModelCSIter* it) { + g_return_if_fail (self != NULL); + g_return_if_fail (it != NULL); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 0, (guint) 31, gui_cs_list_model_cs_iter_get_iter_bits (it, (guint) 0, (guint) 31)); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 32, (guint) 51, gui_cs_list_model_cs_iter_get_iter_bits (it, (guint) 32, (guint) 51)); +} + + +guint32 gui_cs_list_model_cs_iter_get_packet (GUICSListModelCSIter* self) { + guint32 result; + g_return_val_if_fail (self != NULL, 0U); + result = gui_cs_list_model_cs_iter_get_iter_bits (self, (guint) 0, (guint) 13); + return result; +} + + +void gui_cs_list_model_cs_iter_set_packet (GUICSListModelCSIter* self, guint32 value) { + g_return_if_fail (self != NULL); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 0, (guint) 13, value); +} + + +guint32 gui_cs_list_model_cs_iter_get_dword (GUICSListModelCSIter* self) { + guint32 result; + g_return_val_if_fail (self != NULL, 0U); + result = gui_cs_list_model_cs_iter_get_iter_bits (self, (guint) 15, (guint) 29); + return result; +} + + +void gui_cs_list_model_cs_iter_set_dword (GUICSListModelCSIter* self, guint32 value) { + g_return_if_fail (self != NULL); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 15, (guint) 29, value); +} + + +guint32 gui_cs_list_model_cs_iter_get_variant (GUICSListModelCSIter* self) { + guint32 result; + g_return_val_if_fail (self != NULL, 0U); + result = gui_cs_list_model_cs_iter_get_iter_bits (self, (guint) 31, (guint) 45); + return result; +} + + +void gui_cs_list_model_cs_iter_set_variant (GUICSListModelCSIter* self, guint32 value) { + g_return_if_fail (self != NULL); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 31, (guint) 45, value); +} + + +guint32 gui_cs_list_model_cs_iter_get_bitfield (GUICSListModelCSIter* self) { + guint32 result; + g_return_val_if_fail (self != NULL, 0U); + result = gui_cs_list_model_cs_iter_get_iter_bits (self, (guint) 47, (guint) 51); + return result; +} + + +void gui_cs_list_model_cs_iter_set_bitfield (GUICSListModelCSIter* self, guint32 value) { + g_return_if_fail (self != NULL); + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 47, (guint) 51, value); +} + + +gboolean gui_cs_list_model_cs_iter_get_in_dwords (GUICSListModelCSIter* self) { + gboolean result; + gboolean _tmp0_ = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + if (gui_cs_list_model_cs_iter_get_iter_bits (self, (guint) 14, (guint) 14) == 1) { + _tmp0_ = TRUE; + } else { + _tmp0_ = FALSE; + } + result = _tmp0_; + return result; +} + + +void gui_cs_list_model_cs_iter_set_in_dwords (GUICSListModelCSIter* self, gboolean value) { + gint _tmp1_ = 0; + g_return_if_fail (self != NULL); + if (value) { + _tmp1_ = 1; + } else { + _tmp1_ = 0; + } + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 14, (guint) 14, (guint32) _tmp1_); +} + + +gboolean gui_cs_list_model_cs_iter_get_in_variants (GUICSListModelCSIter* self) { + gboolean result; + gboolean _tmp0_ = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + if (gui_cs_list_model_cs_iter_get_iter_bits (self, (guint) 30, (guint) 30) == 1) { + _tmp0_ = TRUE; + } else { + _tmp0_ = FALSE; + } + result = _tmp0_; + return result; +} + + +void gui_cs_list_model_cs_iter_set_in_variants (GUICSListModelCSIter* self, gboolean value) { + gint _tmp1_ = 0; + g_return_if_fail (self != NULL); + if (value) { + _tmp1_ = 1; + } else { + _tmp1_ = 0; + } + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 30, (guint) 30, (guint32) _tmp1_); +} + + +gboolean gui_cs_list_model_cs_iter_get_in_bitfields (GUICSListModelCSIter* self) { + gboolean result; + gboolean _tmp0_ = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + if (gui_cs_list_model_cs_iter_get_iter_bits (self, (guint) 46, (guint) 46) == 1) { + _tmp0_ = TRUE; + } else { + _tmp0_ = FALSE; + } + result = _tmp0_; + return result; +} + + +void gui_cs_list_model_cs_iter_set_in_bitfields (GUICSListModelCSIter* self, gboolean value) { + gint _tmp1_ = 0; + g_return_if_fail (self != NULL); + if (value) { + _tmp1_ = 1; + } else { + _tmp1_ = 0; + } + gui_cs_list_model_cs_iter_set_iter_bits (self, (guint) 46, (guint) 46, (guint32) _tmp1_); +} + + +gboolean gui_cs_list_model_cs_iter_get_is_header (GUICSListModelCSIter* self) { + gboolean result; + gboolean _tmp0_ = FALSE; + g_return_val_if_fail (self != NULL, FALSE); + if (gui_cs_list_model_cs_iter_get_dword (self) == 0) { + _tmp0_ = gui_cs_list_model_cs_iter_get_in_dwords (self); + } else { + _tmp0_ = FALSE; + } + result = _tmp0_; + return result; +} + + +GUICSListModelRowType gui_cs_list_model_cs_iter_get_row_type (GUICSListModelCSIter* self) { + GUICSListModelRowType result; + g_return_val_if_fail (self != NULL, 0); + if (gui_cs_list_model_cs_iter_get_in_bitfields (self)) { + GUICSListModelRowType _tmp0_ = 0; + if (gui_cs_list_model_cs_iter_get_is_header (self)) { + _tmp0_ = GUI_CS_LIST_MODEL_ROW_TYPE_HEADER_BITFIELD; + } else { + _tmp0_ = GUI_CS_LIST_MODEL_ROW_TYPE_BITFIELD; + } + result = _tmp0_; + return result; + } else { + if (gui_cs_list_model_cs_iter_get_in_variants (self)) { + result = GUI_CS_LIST_MODEL_ROW_TYPE_VARIANT; + return result; + } else { + if (gui_cs_list_model_cs_iter_get_in_dwords (self)) { + GUICSListModelRowType _tmp1_ = 0; + if (gui_cs_list_model_cs_iter_get_is_header (self)) { + _tmp1_ = GUI_CS_LIST_MODEL_ROW_TYPE_HEADER; + } else { + _tmp1_ = GUI_CS_LIST_MODEL_ROW_TYPE_DWORD; + } + result = _tmp1_; + return result; + } + } + } + result = GUI_CS_LIST_MODEL_ROW_TYPE_PACKET; + return result; +} + + +static void gui_cs_list_model_value_cs_iter_init (GValue* value) { + value->data[0].v_pointer = NULL; +} + + +static void gui_cs_list_model_value_cs_iter_free_value (GValue* value) { + if (value->data[0].v_pointer) { + gui_cs_list_model_cs_iter_unref (value->data[0].v_pointer); + } +} + + +static void gui_cs_list_model_value_cs_iter_copy_value (const GValue* src_value, GValue* dest_value) { + if (src_value->data[0].v_pointer) { + dest_value->data[0].v_pointer = gui_cs_list_model_cs_iter_ref (src_value->data[0].v_pointer); + } else { + dest_value->data[0].v_pointer = NULL; + } +} + + +static gpointer gui_cs_list_model_value_cs_iter_peek_pointer (const GValue* value) { + return value->data[0].v_pointer; +} + + +static gchar* gui_cs_list_model_value_cs_iter_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + if (collect_values[0].v_pointer) { + GUICSListModelCSIter* object; + object = collect_values[0].v_pointer; + if (object->parent_instance.g_class == NULL) { + return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) { + return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL); + } + value->data[0].v_pointer = gui_cs_list_model_cs_iter_ref (object); + } else { + value->data[0].v_pointer = NULL; + } + return NULL; +} + + +static gchar* gui_cs_list_model_value_cs_iter_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) { + GUICSListModelCSIter** object_p; + object_p = collect_values[0].v_pointer; + if (!object_p) { + return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value)); + } + if (!value->data[0].v_pointer) { + *object_p = NULL; + } else if (collect_flags && G_VALUE_NOCOPY_CONTENTS) { + *object_p = value->data[0].v_pointer; + } else { + *object_p = gui_cs_list_model_cs_iter_ref (value->data[0].v_pointer); + } + return NULL; +} + + +GParamSpec* gui_cs_list_model_param_spec_cs_iter (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) { + GUICSListModelParamSpecCSIter* spec; + g_return_val_if_fail (g_type_is_a (object_type, GUI_CS_LIST_MODEL_TYPE_CS_ITER), NULL); + spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags); + G_PARAM_SPEC (spec)->value_type = object_type; + return G_PARAM_SPEC (spec); +} + + +gpointer gui_cs_list_model_value_get_cs_iter (const GValue* value) { + g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GUI_CS_LIST_MODEL_TYPE_CS_ITER), NULL); + return value->data[0].v_pointer; +} + + +void gui_cs_list_model_value_set_cs_iter (GValue* value, gpointer v_object) { + GUICSListModelCSIter* old; + g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, GUI_CS_LIST_MODEL_TYPE_CS_ITER)); + old = value->data[0].v_pointer; + if (v_object) { + g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, GUI_CS_LIST_MODEL_TYPE_CS_ITER)); + g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value))); + value->data[0].v_pointer = v_object; + gui_cs_list_model_cs_iter_ref (value->data[0].v_pointer); + } else { + value->data[0].v_pointer = NULL; + } + if (old) { + gui_cs_list_model_cs_iter_unref (old); + } +} + + +static void gui_cs_list_model_cs_iter_class_init (GUICSListModelCSIterClass * klass) { + gui_cs_list_model_cs_iter_parent_class = g_type_class_peek_parent (klass); + GUI_CS_LIST_MODEL_CS_ITER_CLASS (klass)->finalize = gui_cs_list_model_cs_iter_finalize; + g_type_class_add_private (klass, sizeof (GUICSListModelCSIterPrivate)); +} + + +static void gui_cs_list_model_cs_iter_instance_init (GUICSListModelCSIter * self) { + self->priv = GUI_CS_LIST_MODEL_CS_ITER_GET_PRIVATE (self); + self->ref_count = 1; +} + + +static void gui_cs_list_model_cs_iter_finalize (GUICSListModelCSIter* obj) { + GUICSListModelCSIter * self; + self = GUI_CS_LIST_MODEL_CS_ITER (obj); +} + + +GType gui_cs_list_model_cs_iter_get_type (void) { + static GType gui_cs_list_model_cs_iter_type_id = 0; + if (gui_cs_list_model_cs_iter_type_id == 0) { + static const GTypeValueTable g_define_type_value_table = { gui_cs_list_model_value_cs_iter_init, gui_cs_list_model_value_cs_iter_free_value, gui_cs_list_model_value_cs_iter_copy_value, gui_cs_list_model_value_cs_iter_peek_pointer, "p", gui_cs_list_model_value_cs_iter_collect_value, "p", gui_cs_list_model_value_cs_iter_lcopy_value }; + static const GTypeInfo g_define_type_info = { sizeof (GUICSListModelCSIterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) gui_cs_list_model_cs_iter_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (GUICSListModelCSIter), 0, (GInstanceInitFunc) gui_cs_list_model_cs_iter_instance_init, &g_define_type_value_table }; + static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) }; + gui_cs_list_model_cs_iter_type_id = g_type_register_fundamental (g_type_fundamental_next (), "GUICSListModelCSIter", &g_define_type_info, &g_define_type_fundamental_info, 0); + } + return gui_cs_list_model_cs_iter_type_id; +} + + +gpointer gui_cs_list_model_cs_iter_ref (gpointer instance) { + GUICSListModelCSIter* self; + self = instance; + g_atomic_int_inc (&self->ref_count); + return instance; +} + + +void gui_cs_list_model_cs_iter_unref (gpointer instance) { + GUICSListModelCSIter* self; + self = instance; + if (g_atomic_int_dec_and_test (&self->ref_count)) { + GUI_CS_LIST_MODEL_CS_ITER_GET_CLASS (self)->finalize (self); + g_type_free_instance ((GTypeInstance *) self); + } +} + + static void gui_cs_list_model_class_init (GUICSListModelClass * klass) { - char** _tmp0_; - char** _tmp1_; - char** _tmp2_; - char** _tmp3_; - char** _tmp4_; - char*** _tmp13_; - char** _tmp12_; - const char* _tmp11_; - char** _tmp10_; - const char* _tmp9_; + char** _tmp0_ = NULL; + char** _tmp1_ = NULL; + char** _tmp2_ = NULL; + char** _tmp3_ = NULL; + char** _tmp4_ = NULL; + char*** _tmp9_ = NULL; char** _tmp8_; - const char* _tmp7_; + char** _tmp7_; char** _tmp6_; - const char* _tmp5_; - guint* _tmp14_; + char** _tmp5_; + guint* _tmp10_ = NULL; gui_cs_list_model_parent_class = g_type_class_peek_parent (klass); g_type_class_add_private (klass, sizeof (GUICSListModelPrivate)); G_OBJECT_CLASS (klass)->finalize = gui_cs_list_model_finalize; gui_cs_list_model_packet_strings = (_tmp0_ = g_new0 (char*, 4 + 1), _tmp0_[0] = g_strdup ("packet0"), _tmp0_[1] = g_strdup ("packet1"), _tmp0_[2] = g_strdup ("packet2"), _tmp0_[3] = g_strdup ("packet3"), _tmp0_); gui_cs_list_model_packet_strings_length1 = 4; - _tmp0_ = NULL; gui_cs_list_model_packet0_headers = (_tmp1_ = g_new0 (char*, 4 + 1), _tmp1_[0] = g_strdup ("BASE_INDEX"), _tmp1_[1] = g_strdup ("ONE_REG_WR"), _tmp1_[2] = g_strdup ("COUNT"), _tmp1_[3] = g_strdup ("TYPE"), _tmp1_); gui_cs_list_model_packet0_headers_length1 = 4; - _tmp1_ = NULL; gui_cs_list_model_packet1_headers = (_tmp2_ = g_new0 (char*, 3 + 1), _tmp2_[0] = g_strdup ("REG_INDEX1"), _tmp2_[1] = g_strdup ("REG_INDEX2"), _tmp2_[2] = g_strdup ("TYPE"), _tmp2_); gui_cs_list_model_packet1_headers_length1 = 3; - _tmp2_ = NULL; gui_cs_list_model_packet2_headers = (_tmp3_ = g_new0 (char*, 1 + 1), _tmp3_[0] = g_strdup ("TYPE"), _tmp3_); gui_cs_list_model_packet2_headers_length1 = 1; - _tmp3_ = NULL; gui_cs_list_model_packet3_headers = (_tmp4_ = g_new0 (char*, 3 + 1), _tmp4_[0] = g_strdup ("IT_OPCODE"), _tmp4_[1] = g_strdup ("COUNT"), _tmp4_[2] = g_strdup ("TYPE"), _tmp4_); gui_cs_list_model_packet3_headers_length1 = 3; - _tmp4_ = NULL; - gui_cs_list_model_packet_headers = (_tmp13_ = g_new0 (char**, 4), _tmp13_[0] = (_tmp6_ = gui_cs_list_model_packet0_headers, (_tmp6_ == NULL) ? ((gpointer) _tmp6_) : _vala_array_dup3 (_tmp6_, gui_cs_list_model_packet0_headers_length1)), _tmp13_[1] = (_tmp8_ = gui_cs_list_model_packet1_headers, (_tmp8_ == NULL) ? ((gpointer) _tmp8_) : _vala_array_dup4 (_tmp8_, gui_cs_list_model_packet1_headers_length1)), _tmp13_[2] = (_tmp10_ = gui_cs_list_model_packet2_headers, (_tmp10_ == NULL) ? ((gpointer) _tmp10_) : _vala_array_dup5 (_tmp10_, gui_cs_list_model_packet2_headers_length1)), _tmp13_[3] = (_tmp12_ = gui_cs_list_model_packet3_headers, (_tmp12_ == NULL) ? ((gpointer) _tmp12_) : _vala_array_dup6 (_tmp12_, gui_cs_list_model_packet3_headers_length1)), _tmp13_); + gui_cs_list_model_packet_headers = (_tmp9_ = g_new0 (char**, 4), _tmp9_[0] = (_tmp5_ = gui_cs_list_model_packet0_headers, (_tmp5_ == NULL) ? ((gpointer) _tmp5_) : _vala_array_dup3 (_tmp5_, gui_cs_list_model_packet0_headers_length1)), _tmp9_[1] = (_tmp6_ = gui_cs_list_model_packet1_headers, (_tmp6_ == NULL) ? ((gpointer) _tmp6_) : _vala_array_dup4 (_tmp6_, gui_cs_list_model_packet1_headers_length1)), _tmp9_[2] = (_tmp7_ = gui_cs_list_model_packet2_headers, (_tmp7_ == NULL) ? ((gpointer) _tmp7_) : _vala_array_dup5 (_tmp7_, gui_cs_list_model_packet2_headers_length1)), _tmp9_[3] = (_tmp8_ = gui_cs_list_model_packet3_headers, (_tmp8_ == NULL) ? ((gpointer) _tmp8_) : _vala_array_dup6 (_tmp8_, gui_cs_list_model_packet3_headers_length1)), _tmp9_); gui_cs_list_model_packet_headers_length1 = 4; - _tmp13_ = NULL; - _tmp12_ = NULL; - _tmp11_ = NULL; - _tmp10_ = NULL; - _tmp9_ = NULL; - _tmp8_ = NULL; - _tmp7_ = NULL; - _tmp6_ = NULL; - _tmp5_ = NULL; - gui_cs_list_model_packet_headers_length = (_tmp14_ = g_new0 (guint, 4), _tmp14_[0] = (guint) 4, _tmp14_[1] = (guint) 3, _tmp14_[2] = (guint) 1, _tmp14_[3] = (guint) 3, _tmp14_); + gui_cs_list_model_packet_headers_length = (_tmp10_ = g_new0 (guint, 4), _tmp10_[0] = (guint) 4, _tmp10_[1] = (guint) 3, _tmp10_[2] = (guint) 1, _tmp10_[3] = (guint) 3, _tmp10_); gui_cs_list_model_packet_headers_length_length1 = 4; - _tmp14_ = NULL; } @@ -1558,8 +2035,8 @@ static void gui_cs_list_model_instance_init (GUICSListModel * self) { static void gui_cs_list_model_finalize (GObject* obj) { GUICSListModel * self; self = GUI_CS_LIST_MODEL (obj); - (self->priv->m_cs == NULL) ? NULL : (self->priv->m_cs = (g_object_unref (self->priv->m_cs), NULL)); - (self->priv->m_spec == NULL) ? NULL : (self->priv->m_spec = (g_object_unref (self->priv->m_spec), NULL)); + _g_object_unref0 (self->priv->m_cs); + _g_object_unref0 (self->priv->m_spec); G_OBJECT_CLASS (gui_cs_list_model_parent_class)->finalize (obj); } @@ -1599,41 +2076,23 @@ GUICSView* gui_cs_view_construct (GType object_type, EmulationCS* cs, EmulationS GtkVBox* vbl; GtkButton* _tmp8_; GtkButton* _tmp9_; - GtkTreeView* state_reg_list; - GtkListStore* _tmp10_; - GtkScrolledWindow* sreg_sw; - GtkTreeView* state_raw_list; - GtkListStore* _tmp11_; - GtkScrolledWindow* sraw_sw; - GtkNotebook* nb; - GtkLabel* _tmp12_; - GtkLabel* _tmp13_; - GtkHPaned* paned; g_return_val_if_fail (cs != NULL, NULL); g_return_val_if_fail (spec != NULL, NULL); self = g_object_newv (object_type, 0, NULL); self->priv->m_pos = (guint) 0; cs_list = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new ()); - _tmp0_ = NULL; gtk_tree_view_insert_column_with_data_func (cs_list, -1, "", (GtkCellRenderer*) (_tmp0_ = g_object_ref_sink ((GtkCellRendererPixbuf*) gtk_cell_renderer_pixbuf_new ())), _gui_cs_view_current_dword_renderer_gtk_tree_cell_data_func, g_object_ref (self), g_object_unref); - (_tmp0_ == NULL) ? NULL : (_tmp0_ = (g_object_unref (_tmp0_), NULL)); - _tmp1_ = NULL; - _tmp2_ = NULL; - ec_name = (_tmp2_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Name", (GtkCellRenderer*) (_tmp1_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_NAME, NULL, NULL)), (_tmp1_ == NULL) ? NULL : (_tmp1_ = (g_object_unref (_tmp1_), NULL)), _tmp2_); - _tmp3_ = NULL; - _tmp4_ = NULL; - ec_value = (_tmp4_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Value", (GtkCellRenderer*) (_tmp3_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_VALUE, NULL, NULL)), (_tmp3_ == NULL) ? NULL : (_tmp3_ = (g_object_unref (_tmp3_), NULL)), _tmp4_); - _tmp5_ = NULL; - _tmp6_ = NULL; - ec_target = (_tmp6_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Target", (GtkCellRenderer*) (_tmp5_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_TARGET, NULL, NULL)), (_tmp5_ == NULL) ? NULL : (_tmp5_ = (g_object_unref (_tmp5_), NULL)), _tmp6_); + _g_object_unref0 (_tmp0_); + ec_name = (_tmp2_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Name", (GtkCellRenderer*) (_tmp1_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_NAME, NULL, NULL)), _g_object_unref0 (_tmp1_), _tmp2_); + ec_value = (_tmp4_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Value", (GtkCellRenderer*) (_tmp3_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_VALUE, NULL, NULL)), _g_object_unref0 (_tmp3_), _tmp4_); + ec_target = (_tmp6_ = g_object_ref_sink (gtk_tree_view_column_new_with_attributes ("Target", (GtkCellRenderer*) (_tmp5_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", GUI_CS_LIST_MODEL_COLUMNS_TARGET, NULL, NULL)), _g_object_unref0 (_tmp5_), _tmp6_); gtk_tree_view_insert_column (cs_list, ec_name, -1); gtk_tree_view_insert_column (cs_list, ec_value, -1); gtk_tree_view_insert_column (cs_list, ec_target, -1); gtk_tree_view_column_set_resizable (ec_name, TRUE); gtk_tree_view_column_set_resizable (ec_value, TRUE); gtk_tree_view_column_set_resizable (ec_target, TRUE); - _tmp7_ = NULL; - gtk_tree_view_set_model (cs_list, (GtkTreeModel*) (self->priv->m_pkg_store = (_tmp7_ = gui_cs_list_model_new (cs, spec), (self->priv->m_pkg_store == NULL) ? NULL : (self->priv->m_pkg_store = (g_object_unref (self->priv->m_pkg_store), NULL)), _tmp7_))); + gtk_tree_view_set_model (cs_list, (GtkTreeModel*) (self->priv->m_pkg_store = (_tmp7_ = gui_cs_list_model_new (cs, spec), _g_object_unref0 (self->priv->m_pkg_store), _tmp7_))); gtk_tree_view_set_expander_column (cs_list, ec_name); cs_sw = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); gtk_container_add ((GtkContainer*) cs_sw, (GtkWidget*) cs_list); @@ -1641,54 +2100,18 @@ GUICSView* gui_cs_view_construct (GType object_type, EmulationCS* cs, EmulationS g_object_set (cs_sw, "hscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); g_object_set (cs_sw, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); vbl = g_object_ref_sink ((GtkVBox*) gtk_vbox_new (FALSE, 4)); - _tmp8_ = NULL; - gtk_box_pack_start ((GtkBox*) vbl, (GtkWidget*) (self->priv->m_pkgup = (_tmp8_ = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock ("gtk-go-up")), (self->priv->m_pkgup == NULL) ? NULL : (self->priv->m_pkgup = (g_object_unref (self->priv->m_pkgup), NULL)), _tmp8_)), FALSE, TRUE, (guint) 0); + gtk_box_pack_start ((GtkBox*) vbl, (GtkWidget*) (self->priv->m_pkgup = (_tmp8_ = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock ("gtk-go-up")), _g_object_unref0 (self->priv->m_pkgup), _tmp8_)), FALSE, TRUE, (guint) 0); gtk_box_pack_start ((GtkBox*) vbl, (GtkWidget*) cs_sw, TRUE, TRUE, (guint) 0); - _tmp9_ = NULL; - gtk_box_pack_start ((GtkBox*) vbl, (GtkWidget*) (self->priv->m_pkgdown = (_tmp9_ = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock ("gtk-go-down")), (self->priv->m_pkgdown == NULL) ? NULL : (self->priv->m_pkgdown = (g_object_unref (self->priv->m_pkgdown), NULL)), _tmp9_)), FALSE, TRUE, (guint) 0); - state_reg_list = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new ()); - _tmp10_ = NULL; - gtk_tree_view_set_model (state_reg_list, (GtkTreeModel*) (self->priv->m_reg_store = (_tmp10_ = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_UINT, NULL), (self->priv->m_reg_store == NULL) ? NULL : (self->priv->m_reg_store = (g_object_unref (self->priv->m_reg_store), NULL)), _tmp10_))); - sreg_sw = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); - gtk_container_add ((GtkContainer*) sreg_sw, (GtkWidget*) state_reg_list); - gtk_scrolled_window_set_shadow_type (sreg_sw, GTK_SHADOW_ETCHED_IN); - g_object_set (sreg_sw, "hscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - g_object_set (sreg_sw, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - state_raw_list = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new ()); - _tmp11_ = NULL; - gtk_tree_view_set_model (state_raw_list, (GtkTreeModel*) (self->priv->m_raw_store = (_tmp11_ = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_UINT, NULL), (self->priv->m_raw_store == NULL) ? NULL : (self->priv->m_raw_store = (g_object_unref (self->priv->m_raw_store), NULL)), _tmp11_))); - sraw_sw = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); - gtk_container_add ((GtkContainer*) sraw_sw, (GtkWidget*) state_raw_list); - gtk_scrolled_window_set_shadow_type (sraw_sw, GTK_SHADOW_ETCHED_IN); - g_object_set (sraw_sw, "hscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - g_object_set (sraw_sw, "vscrollbar-policy", GTK_POLICY_AUTOMATIC, NULL); - nb = g_object_ref_sink ((GtkNotebook*) gtk_notebook_new ()); - _tmp12_ = NULL; - gtk_notebook_append_page (nb, (GtkWidget*) sreg_sw, (GtkWidget*) (_tmp12_ = g_object_ref_sink ((GtkLabel*) gtk_label_new ("Registers")))); - (_tmp12_ == NULL) ? NULL : (_tmp12_ = (g_object_unref (_tmp12_), NULL)); - _tmp13_ = NULL; - gtk_notebook_append_page (nb, (GtkWidget*) sraw_sw, (GtkWidget*) (_tmp13_ = g_object_ref_sink ((GtkLabel*) gtk_label_new ("Raw")))); - (_tmp13_ == NULL) ? NULL : (_tmp13_ = (g_object_unref (_tmp13_), NULL)); - gtk_notebook_set_scrollable (nb, TRUE); - paned = g_object_ref_sink ((GtkHPaned*) gtk_hpaned_new ()); - gtk_paned_add1 ((GtkPaned*) paned, (GtkWidget*) vbl); - gtk_paned_add2 ((GtkPaned*) paned, (GtkWidget*) nb); - gtk_paned_set_position ((GtkPaned*) paned, 400); - gtk_container_add ((GtkContainer*) self, (GtkWidget*) paned); + gtk_box_pack_start ((GtkBox*) vbl, (GtkWidget*) (self->priv->m_pkgdown = (_tmp9_ = g_object_ref_sink ((GtkButton*) gtk_button_new_from_stock ("gtk-go-down")), _g_object_unref0 (self->priv->m_pkgdown), _tmp9_)), FALSE, TRUE, (guint) 0); + gtk_container_add ((GtkContainer*) self, (GtkWidget*) vbl); gtk_container_set_border_width ((GtkContainer*) self, (guint) 10); gtk_window_set_default_size ((GtkWindow*) self, 640, 480); - (cs_list == NULL) ? NULL : (cs_list = (g_object_unref (cs_list), NULL)); - (ec_name == NULL) ? NULL : (ec_name = (g_object_unref (ec_name), NULL)); - (ec_value == NULL) ? NULL : (ec_value = (g_object_unref (ec_value), NULL)); - (ec_target == NULL) ? NULL : (ec_target = (g_object_unref (ec_target), NULL)); - (cs_sw == NULL) ? NULL : (cs_sw = (g_object_unref (cs_sw), NULL)); - (vbl == NULL) ? NULL : (vbl = (g_object_unref (vbl), NULL)); - (state_reg_list == NULL) ? NULL : (state_reg_list = (g_object_unref (state_reg_list), NULL)); - (sreg_sw == NULL) ? NULL : (sreg_sw = (g_object_unref (sreg_sw), NULL)); - (state_raw_list == NULL) ? NULL : (state_raw_list = (g_object_unref (state_raw_list), NULL)); - (sraw_sw == NULL) ? NULL : (sraw_sw = (g_object_unref (sraw_sw), NULL)); - (nb == NULL) ? NULL : (nb = (g_object_unref (nb), NULL)); - (paned == NULL) ? NULL : (paned = (g_object_unref (paned), NULL)); + _g_object_unref0 (cs_list); + _g_object_unref0 (ec_name); + _g_object_unref0 (ec_value); + _g_object_unref0 (ec_target); + _g_object_unref0 (cs_sw); + _g_object_unref0 (vbl); return self; } @@ -1699,21 +2122,10 @@ GUICSView* gui_cs_view_new (EmulationCS* cs, EmulationSpec* spec) { static void gui_cs_view_current_dword_renderer (GUICSView* self, GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter) { - GtkTreeModel* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (tree_column != NULL); g_return_if_fail (cell != NULL); g_return_if_fail (model != NULL); - _tmp0_ = NULL; - if (self->priv->m_pos == gui_cs_list_model_get_packet_num ((_tmp0_ = model, GUI_IS_CS_LIST_MODEL (_tmp0_) ? ((GUICSListModel*) _tmp0_) : NULL), &(*iter))) { - GtkCellRenderer* _tmp1_; - _tmp1_ = NULL; - g_object_set ((_tmp1_ = cell, GTK_IS_CELL_RENDERER_PIXBUF (_tmp1_) ? ((GtkCellRendererPixbuf*) _tmp1_) : NULL), "stock-id", "gtk-media-record", NULL); - } else { - GtkCellRenderer* _tmp2_; - _tmp2_ = NULL; - g_object_set ((_tmp2_ = cell, GTK_IS_CELL_RENDERER_PIXBUF (_tmp2_) ? ((GtkCellRendererPixbuf*) _tmp2_) : NULL), "stock-id", "", NULL); - } } @@ -1732,11 +2144,11 @@ static void gui_cs_view_instance_init (GUICSView * self) { static void gui_cs_view_finalize (GObject* obj) { GUICSView * self; self = GUI_CS_VIEW (obj); - (self->priv->m_pkgup == NULL) ? NULL : (self->priv->m_pkgup = (g_object_unref (self->priv->m_pkgup), NULL)); - (self->priv->m_pkgdown == NULL) ? NULL : (self->priv->m_pkgdown = (g_object_unref (self->priv->m_pkgdown), NULL)); - (self->priv->m_pkg_store == NULL) ? NULL : (self->priv->m_pkg_store = (g_object_unref (self->priv->m_pkg_store), NULL)); - (self->priv->m_reg_store == NULL) ? NULL : (self->priv->m_reg_store = (g_object_unref (self->priv->m_reg_store), NULL)); - (self->priv->m_raw_store == NULL) ? NULL : (self->priv->m_raw_store = (g_object_unref (self->priv->m_raw_store), NULL)); + _g_object_unref0 (self->priv->m_pkgup); + _g_object_unref0 (self->priv->m_pkgdown); + _g_object_unref0 (self->priv->m_pkg_store); + _g_object_unref0 (self->priv->m_reg_store); + _g_object_unref0 (self->priv->m_raw_store); G_OBJECT_CLASS (gui_cs_view_parent_class)->finalize (obj); } diff --git a/src/csview.vala b/src/csview.vala index 0a2cc24..0e07a1e 100644 --- a/src/csview.vala +++ b/src/csview.vala @@ -18,6 +18,7 @@ namespace GUI PACKET = 0, HEADER, DWORD, + VARIANT, BITFIELD, HEADER_BITFIELD } @@ -60,31 +61,125 @@ namespace GUI }; private static uint[] packet_headers_length = { 4, 3, 1, 3 }; - - public inline uint get_packet_num(TreeIter iter) { return *((uint*)(&iter.user_data)); } - private inline uint get_dword_num(TreeIter iter) { return *((uint*)(&iter.user_data2)); } - private inline uint get_bitfield_num(TreeIter iter) { return *((uint*)(&iter.user_data3)); } - - private inline void set_packet_num(ref TreeIter iter, uint n) { iter.user_data = *((void**)(&n)); } - private inline void set_dword_num(ref TreeIter iter, uint n) { iter.user_data2 = *((void**)(&n)); } - private inline void set_bitfield_num(ref TreeIter iter, uint n) { iter.user_data3 = *((void**)(&n)); } - - /* for dwords, 0 means no dwords, 1 means just the header, and 2+ means header and packets */ - /* for bitfields, 0 means no bitfields, 1+ means bitfields */ - private inline bool is_header(TreeIter iter) { return get_dword_num(iter) == 1; } - private inline bool has_dwords(TreeIter iter) { return get_dword_num(iter) >= 1; } - private inline bool has_bitfields(TreeIter iter) { return get_bitfield_num(iter) >= 1; } - - private inline uint dword_index(TreeIter iter) { return get_dword_num(iter) - 2; } - private inline uint bitfield_index(TreeIter iter) { return get_bitfield_num(iter) - 1; } - - private inline void set_iter(ref TreeIter iter, uint p, uint d, uint b, bool stamp = true) + public class CSIter { - set_packet_num(ref iter, p); - set_dword_num(ref iter, d); - set_bitfield_num(ref iter, b); - iter.stamp = (stamp) ? m_stamp : 0; + private TreeIter *m_iter; + + public CSIter(TreeIter? iter) + { + assert(iter != null); + m_iter = (TreeIter *)iter; + } + + /* TreeIters contain 3 void* fields, which means we can partition + * them into enough space to store our CS stuff. We need: + * iter.user_data iter.user_data2 iter.user_data3 + * |--------------------------------|--------------------------------|--------------------------------| + * |------------|x|-------------|x| -------------|x|---| + * packet (14) DWORD (15) Va riant (15) Bitfield (5) + * 14 + 1 + 15 + 1 + 15 + 1 + 5 = 53 + * Meaning we need 50 bits (and this will never run on something below 32bit addrs) + * X denotes a boolean to indicate whether or not a level is reached + * + * Packets [0;13]: + * We can have a max of 64KB in DWORDs, which equals 16384. We have a min index of 0 and a max of 16383. + * DWORDs [15;29]: + * Same limits as packets. However we have a header DWORD too so we need an extra bit. + * Variant [31;45]: + * Sometimes we need to display variations when we don't know with certainty what the register points to. + * We can have a ton of different variations, but we assume 15 bits is enough. + * Bitfields [47;51]: + * Each DWORD has a max of 32 bitfields, and a minimum of 1, so we need 5 bits. + */ + + /* we really never want to handle values larger than 32 bit */ + private inline uint32 get_iter_bits(uint low, uint high) + { + /* For now, we utilize assume only 32 bits per pointer and we + * need no more. We also don't need more than 64 bits, so ease + * up the whole ordeal */ + uint64 num = (uint64)(*((uint32*)(&m_iter->user_data))) | + ((uint64)(*((uint32*)(&m_iter->user_data2))) << 32); + //stdout.printf("get_iter_bits(%u, %u) = %u (%016llX)\n", low, high, (uint32)((num >> low) & (((uint64)1 << (high-low+1))-1)), num); + return (uint32)((num >> low) & (((uint64)1 << (high-low+1))-1)); + } + + private inline void set_iter_bits(uint low, uint high, uint32 val) + { + uint64 num = (uint64)(*((uint32*)(&m_iter->user_data))) | + ((uint64)(*((uint32*)(&m_iter->user_data2))) << 32); + + uint64 mask = (((uint64)1 << (high-low+1))-1) << low; + num &= ~mask; + num |= ((uint64)val << low) & mask; + + uint32 num32[2]; + num32[0] = (uint32)num; + num32[1] = (uint32)(num >> 32); + m_iter->user_data = *((void**)(&num32[0])); + m_iter->user_data2 = *((void**)(&num32[1])); + //stdout.printf("setting [%u;%u] = %u | got %u @ %016llX\n", low, high, val, get_iter_bits(low, high), mask); + } + + public uint32 packet { + get { return get_iter_bits(0, 13); } + set { set_iter_bits(0, 13, value); } + } + public uint32 dword { + get { return get_iter_bits(15, 29); } + set { set_iter_bits(15, 29, value); } + } + public uint32 variant { + get { return get_iter_bits(31, 45); } + set { set_iter_bits(31, 45, value); } + } + public uint32 bitfield { + get { return get_iter_bits(47, 51); } + set { set_iter_bits(47, 51, value); } + } + + public bool in_dwords { + get { return (get_iter_bits(14, 14) == 1) ? true : false; } + set { set_iter_bits(14, 14, value ? 1 : 0); } + } + public bool in_variants { + get { return (get_iter_bits(30, 30) == 1) ? true : false; } + set { set_iter_bits(30, 30, value ? 1 : 0); } + } + public bool in_bitfields { + get { return (get_iter_bits(46, 46) == 1) ? true : false; } + set { set_iter_bits(46, 46, value ? 1 : 0); } + } + public bool is_header { + get { return dword == 0 && in_dwords; } + } + + public RowType row_type { + get { + if (in_bitfields) { + return is_header ? RowType.HEADER_BITFIELD : RowType.BITFIELD; + } else if (in_variants) { + return RowType.VARIANT; + } else if (in_dwords) { + return is_header ? RowType.HEADER : RowType.DWORD; + } + + return RowType.PACKET; + } + } + + public void reset() + { + set_iter_bits(0, 31, 0); + set_iter_bits(32, 51, 0); + } + + public void copy(CSIter it) + { + set_iter_bits(0, 31, it.get_iter_bits(0, 31)); + set_iter_bits(32, 51, it.get_iter_bits(32, 51)); + } } private CS m_cs; @@ -97,127 +192,117 @@ namespace GUI m_spec = spec; m_stamp = 19449216; } - - public RowType get_row_type(TreeIter iter) - { - if (has_bitfields(iter)) { - return is_header(iter) ? RowType.HEADER_BITFIELD : RowType.BITFIELD; - } else if (has_dwords(iter)) { - return is_header(iter) ? RowType.HEADER : RowType.DWORD; - } - - return RowType.PACKET; - } - + public TreeModelFlags get_flags() { return TreeModelFlags.ITERS_PERSIST; } - + public int get_n_columns() { return Columns.COUNT; } - + public Type get_column_type(int i) { return typeof(string); } + + private uint get_variant_count(uint32 addr) + { + var regs = m_spec.translate_addr((uint)addr); + return regs == null ? 0 : regs.length; + } + private uint get_bitfield_count(uint32 addr, uint variant) + { + var regs = m_spec.translate_addr((uint)addr); + assert(regs != null); + assert(variant < regs.length); + return (regs[variant].info.length == 0) ? 1 : regs[variant].info.length; + } public bool get_iter(out TreeIter iter, TreePath path) { var depth = path.get_depth(); - assert(depth <= 3 && depth >= 1); + assert(depth <= 4 && depth >= 1); + + CSIter it = new CSIter(iter); + it.reset(); int *indices = path.get_indices(); - if (indices[0] >= m_cs.packets.length || indices[0] < 0) { return false; } - set_iter(ref iter, indices[0], 0, 0, false); + it.packet = indices[0]; if (depth >= 2) { - if (indices[1] > m_cs.packets[indices[0]].length || indices[1] < 0) { return false; } - set_dword_num(ref iter, indices[1]+1); + if (indices[1] > m_cs.packets[it.packet].length || indices[1] < 0) { return false; } + it.dword = indices[1]; + it.in_dwords = true; } if (depth >= 3) { if (indices[2] < 0) { return false; } - if (indices[1] == 0) { - /* Header */ - if (indices[2] >= packet_headers_length[m_cs.packets[indices[0]].type_id]) { return false; } + if (it.dword == 0) { + /* Header bitfield */ + if (indices[2] >= packet_headers_length[m_cs.packets[it.packet].type_id]) { return false; } + if (depth > 3) { return false; } + it.bitfield = indices[2]; + it.in_bitfields = true; } else { - /* XXX: DWORD */ - return false; + /* Variant */ + uint32 addr = 0; + switch (m_cs.packets[it.packet].type_id) { + case 0: + Packet0 p0 = m_cs.packets[it.packet] as Packet0; + addr = p0.addr; + break; + + case 1: + Packet1 p1 = m_cs.packets[it.packet] as Packet1; + addr = (it.dword == 1) ? p1.addr1 : p1.addr2; // 0 = header + break; + + case 2: + return false; + + case 3: /* TODO */ + return false; + } + + if (indices[2] < 0) { return false; } + if (indices[2] >= get_variant_count(addr)) { return false; } + it.variant = indices[2]; + it.in_variants = true; + + if (depth == 4) { + if (indices[3] < 0) { return false; } + if (indices[3] >= get_bitfield_count(addr, it.variant)) { return false; } + it.bitfield = indices[3]; + it.in_bitfields = true; + } } - set_bitfield_num(ref iter, indices[2]+1); } iter.stamp = m_stamp; - return true; } public TreePath get_path(TreeIter iter) { var path = new TreePath(); + CSIter it = new CSIter(iter); - path.append_index((int)get_packet_num(iter)); - if (has_dwords(iter)) { path.append_index((int)get_dword_num(iter) - 1); } - if (has_bitfields(iter)) { path.append_index((int)get_bitfield_num(iter) - 1); } + path.append_index((int)it.packet); + if (it.in_dwords) { path.append_index((int)it.dword); } + if (it.in_bitfields) { + if (it.in_variants) { path.append_index((int)it.variant); } + path.append_index((int)it.bitfield); + } return path; } public uint32 get_numeric_value(TreeIter iter) { - PacketBase p = m_cs.packets[get_packet_num(iter)]; - switch (get_row_type(iter)) { - case RowType.PACKET: return p.header; - case RowType.DWORD: return p[dword_index(iter)]; - case RowType.HEADER: return p.header; - - case RowType.BITFIELD: - /* TODO */ - break; - - case RowType.HEADER_BITFIELD: - switch (p.type_id) { - case 0: - Packet0 p0 = p as Packet0; - switch (bitfield_index(iter)) { - case 0: return p0._ADDR; - case 1: return p0._ONE_REG_WR; - case 2: return p0._COUNT; - case 3: return p.type_id; - } - break; - - case 1: - Packet1 p1 = p as Packet1; - switch (bitfield_index(iter)) { - case 0: return p1._ADDR1; - case 1: return p1._ADDR2; - case 2: return p.type_id; - } - break; - - case 2: - switch (bitfield_index(iter)) { - case 0: return p.type_id; - } - break; - - case 3: - Packet3 p3 = p as Packet3; - switch (bitfield_index(iter)) { - case 0: return p3._IT_OPCODE; - case 1: return p3._COUNT; - case 2: return p.type_id; - } - break; - } - break; - } - return 0; } @@ -225,23 +310,59 @@ namespace GUI { var regs = m_spec.translate_addr((uint)addr); if (regs == null) { return addr.to_string("0x%04X"); } - return regs[0].info.name; + return (regs.length > 1) ? "Multiple" : regs[0].info.name; + } + + private weak string variant_name(uint32 addr, uint variant) + { + var regs = m_spec.translate_addr((uint)addr); + assert(regs != null); + assert(variant < regs.length); + return regs[variant].info.name; + } + + private weak string bitfield_name(uint32 addr, uint variant, uint bitfield) + { + var regs = m_spec.translate_addr((uint)addr); + assert(regs != null); + assert(variant < regs.length); + if (regs[variant].info.length > 0) { + assert(bitfield < regs[variant].info.length); + return regs[variant].info[bitfield].name; + } + return "DATA_REGISTER"; + } + + private uint32 bitfield_value(uint32 addr, uint variant, uint bitfield, uint32 dword) + { + var regs = m_spec.translate_addr((uint)addr); + assert(regs != null); + assert(variant < regs.length); + uint high = 31, low = 0; + if (regs[variant].info.length > 0) { + assert(bitfield < regs[variant].info.length); + high = regs[variant].info[bitfield].high; + low = regs[variant].info[bitfield].low; + } + return (dword >> low) & ((1 << (high-low+1))-1); } public void get_value(TreeIter iter, int column, out Value val) { - PacketBase p = m_cs.packets[get_packet_num(iter)]; + if (iter.stamp != m_stamp) { return; } + CSIter it = new CSIter(iter); + PacketBase p = m_cs.packets[it.packet]; val.init(typeof(string)); - switch (get_row_type(iter)) { + switch (it.row_type) { case RowType.PACKET: switch (column) { case Columns.NAME: val.set_static_string(packet_strings[p.type_id]); break; case Columns.VALUE: val.set_string(p.header.to_string("0x%08X")); break; case Columns.TARGET: switch (p.type_id) { - case 0: val.set_string(translate_addr((p as Packet0).addr)); break; - case 1: val.set_string(translate_addr((p as Packet1).addr1) + " | " + translate_addr((p as Packet1).addr2)); break; + case 0: val.set_string(translate_addr(dword_addr(it.packet, 1))); break; + case 1: val.set_string(translate_addr(dword_addr(it.packet, 1)) + " | " + translate_addr(dword_addr(it.packet, 2))); break; case 2: val.set_static_string(""); break; case 3: val.set_static_string("TODO"); break; } @@ -251,12 +372,12 @@ namespace GUI case RowType.DWORD: switch (column) { - case Columns.NAME: val.set_string(dword_index(iter).to_string("DWORD%u")); break; - case Columns.VALUE: val.set_string(p[dword_index(iter)].to_string("0x%08X")); break; + case Columns.NAME: val.set_string((it.dword-1).to_string("DWORD%u")); break; + case Columns.VALUE: val.set_string(p[it.dword-1].to_string("0x%08X")); break; case Columns.TARGET: switch (p.type_id) { - case 0: val.set_string(translate_addr((p as Packet0).addr + 4*dword_index(iter)*((p as Packet0).one_reg_wr ? 0 : 1))); break; - case 1: val.set_string(translate_addr((dword_index(iter) == 0) ? (p as Packet1).addr1 : (p as Packet1).addr2)); break; + case 0: val.set_string(translate_addr(dword_addr(it.packet, it.dword))); break; + case 1: val.set_string(translate_addr(dword_addr(it.packet, it.dword))); break; case 2: val.set_static_string(""); break; case 3: val.set_static_string("TODO"); break; } @@ -271,20 +392,32 @@ namespace GUI case Columns.TARGET: val.set_static_string(""); break; } break; - + + case RowType.VARIANT: + switch (column) { + case Columns.NAME: val.set_static_string(variant_name(dword_addr(it.packet, it.dword), it.variant)); break; + case Columns.VALUE: val.set_static_string(""); break; + case Columns.TARGET: val.set_static_string(""); break; + } + break; + case RowType.BITFIELD: - /* TODO */ + switch (column) { + case Columns.NAME: val.set_static_string(bitfield_name(dword_addr(it.packet, it.dword), it.variant, it.bitfield)); break; + case Columns.VALUE: val.set_string(bitfield_value(dword_addr(it.packet, it.dword), it.variant, it.bitfield, p[it.dword-1]).to_string()); break; + case Columns.TARGET: val.set_static_string(""); break; + } break; case RowType.HEADER_BITFIELD: switch (column) { - case Columns.NAME: val.set_static_string(packet_headers[p.type_id][bitfield_index(iter)]); break; + case Columns.NAME: val.set_static_string(packet_headers[p.type_id][it.bitfield]); break; case Columns.TARGET: val.set_static_string(""); break; case Columns.VALUE: switch (p.type_id) { case 0: Packet0 p0 = p as Packet0; - switch (bitfield_index(iter)) { + switch (it.bitfield) { case 0: val.set_string(translate_addr(p0._ADDR)); break; case 1: val.set_string(p0._ONE_REG_WR.to_string()); break; case 2: val.set_string(p0._COUNT.to_string()); break; @@ -293,20 +426,20 @@ namespace GUI break; case 1: Packet1 p1 = p as Packet1; - switch (bitfield_index(iter)) { + switch (it.bitfield) { case 0: val.set_string(translate_addr(p1._ADDR1)); break; case 1: val.set_string(translate_addr(p1._ADDR2)); break; case 2: val.set_string(p.type_id.to_string()); break; } break; case 2: - switch (bitfield_index(iter)) { + switch (it.bitfield) { case 0: val.set_string(p.type_id.to_string()); break; } break; case 3: Packet3 p3 = p as Packet3; - switch (bitfield_index(iter)) { + switch (it.bitfield) { case 0: val.set_string(p3._IT_OPCODE.to_string("0x%02X")); break; /* TODO: resolve opcode */ case 1: val.set_string(p3._COUNT.to_string()); break; case 2: val.set_string(p.type_id.to_string()); break; @@ -319,68 +452,118 @@ namespace GUI } } + private uint32 dword_addr(uint p, uint d) + { + assert(p < m_cs.packets.length); + switch (m_cs.packets[p].type_id) { + case 0: + Packet0 p0 = m_cs.packets[p] as Packet0; + return p0.addr + ((p0.one_reg_wr) ? 0 : 4*(d-1)); + case 1: + Packet1 p1 = m_cs.packets[p] as Packet1; + return (d == 1) ? p1.addr1 : p1.addr2; + } + return 0; + } + public bool iter_next(ref TreeIter iter) { - var p = get_packet_num(iter); - switch (get_row_type(iter)) { + if (iter.stamp != m_stamp) { return false; } + iter.stamp = 0; + + CSIter it = new CSIter(iter); + var p = it.packet; + switch (it.row_type) { case RowType.PACKET: p++; if (p >= m_cs.packets.length) { return false; } - set_packet_num(ref iter, p); + it.packet = p; break; case RowType.HEADER: case RowType.DWORD: - var d = get_dword_num(iter)+1; - if (d > m_cs.packets[p].length+1) { return false; } - set_dword_num(ref iter, d); + var d = it.dword+1; + if (d >= m_cs.packets[p].length+1) { return false; } + it.dword = d; + break; + + case RowType.VARIANT: + var v = it.variant+1; + if (v >= get_variant_count(dword_addr(p, it.dword))) { return false; } + it.variant = v; break; case RowType.BITFIELD: - /* TODO */ - return false; + var b = it.bitfield+1; + if (b >= get_bitfield_count(dword_addr(p, it.dword), it.variant)) { return false; } + it.bitfield = b; + break; case RowType.HEADER_BITFIELD: - var b = get_bitfield_num(iter)+1; - if (b > packet_headers_length[m_cs.packets[p].type_id]) { return false; } - set_bitfield_num(ref iter, b); + var b = it.bitfield+1; + if (b >= packet_headers_length[m_cs.packets[p].type_id]) { return false; } + it.bitfield = b; break; } + iter.stamp = m_stamp; return true; } public bool iter_children(out TreeIter iter, TreeIter? parent) { + CSIter it = new CSIter(iter); + iter.stamp = 0; + if (parent == null) { if (m_cs.packets.length == 0) { return false; } - - set_iter(ref iter, 0, 0, 0); + it.reset(); + iter.stamp = m_stamp; return true; } - - switch (get_row_type(parent)) { - case RowType.PACKET: set_iter(ref iter, get_packet_num(parent), 1, 0); return true; - case RowType.HEADER: set_iter(ref iter, get_packet_num(parent), 1, 1); return true; + if (parent.stamp != m_stamp) { return false; } + + CSIter pa = new CSIter(parent); + it.copy(pa); + switch (pa.row_type) { + case RowType.PACKET: + it.dword = 0; + it.in_dwords = true; + break; + + case RowType.VARIANT: + case RowType.HEADER: + it.bitfield = 0; + it.in_bitfields = true; + break; + case RowType.DWORD: - /* TODO */ - return false; + if (get_variant_count(dword_addr(pa.packet, pa.dword)) == 0) { return false; } + it.variant = 0; + it.in_variants = true; + break; - case RowType.BITFIELD: return false; - case RowType.HEADER_BITFIELD: return false; + case RowType.BITFIELD: + case RowType.HEADER_BITFIELD: + default: + return false; } - return false; + iter.stamp = m_stamp; + return true; } public bool iter_has_child(TreeIter iter) { - switch (get_row_type(iter)) { + if (iter.stamp != m_stamp) { return false; } + CSIter it = new CSIter(iter); + switch (it.row_type) { case RowType.PACKET: return true; case RowType.HEADER: return true; - case RowType.DWORD: return false; /* TODO */ + case RowType.DWORD: return (get_variant_count(dword_addr(it.packet, it.dword)) == 0) ? false : true; + case RowType.VARIANT: return true; case RowType.BITFIELD: return false; case RowType.HEADER_BITFIELD: return false; } @@ -394,11 +577,13 @@ namespace GUI return m_cs.packets.length; } - var p = get_packet_num(iter); - switch (get_row_type(iter)) { - case RowType.PACKET: return (int)m_cs.packets[p].length+1; - case RowType.HEADER: return (int)packet_headers_length[m_cs.packets[p].type_id]; - case RowType.DWORD: return 0; /* TODO */ + if (iter.stamp != m_stamp) { return 0; } + CSIter it = new CSIter(iter); + switch (it.row_type) { + case RowType.PACKET: return (int)m_cs.packets[it.packet].length+1; + case RowType.HEADER: return (int)packet_headers_length[m_cs.packets[it.packet].type_id]; + case RowType.DWORD: return (int)get_variant_count(dword_addr(it.packet, it.dword)); + case RowType.VARIANT: return (int)get_bitfield_count(dword_addr(it.packet, it.dword), it.variant); case RowType.BITFIELD: return 0; case RowType.HEADER_BITFIELD: return 0; } @@ -408,46 +593,78 @@ namespace GUI public bool iter_nth_child(out TreeIter iter, TreeIter? parent, int n) { + CSIter it = new CSIter(iter); + iter.stamp = 0; + if (parent == null) { if (n >= m_cs.packets.length || n < 0) { return false; } - - set_iter(ref iter, n, 0, 0); + iter.stamp = m_stamp; + it.reset(); + it.packet = n; return true; } + if (parent.stamp != m_stamp) { return false; } + if (n < 0) { return false; } - var p = get_packet_num(parent); - switch (get_row_type(parent)) { + CSIter pa = new CSIter(parent); + it.copy(pa); + switch (pa.row_type) { case RowType.PACKET: - if (n > m_cs.packets[p].length || n < 0) { return false; } - set_iter(ref iter, p, n+1, 0); - return true; + if (n > m_cs.packets[pa.packet].length) { return false; } + it.in_dwords = true; + it.dword = n; + break; case RowType.HEADER: - if (n >= packet_headers_length[m_cs.packets[p].type_id] || n < 0) { return false; } - set_iter(ref iter, p, 1, n+1); - return true; + if (n >= packet_headers_length[m_cs.packets[pa.packet].type_id]) { return false; } + it.in_bitfields = true; + it.bitfield = n; + break; - case RowType.DWORD: return false; /* TODO */ - case RowType.BITFIELD: return false; - case RowType.HEADER_BITFIELD: return false; + case RowType.DWORD: + if (n >= get_variant_count(dword_addr(pa.packet, pa.dword))) { return false; } + it.in_variants = true; + it.variant = n; + break; + + case RowType.VARIANT: + if (n >= get_bitfield_count(dword_addr(pa.packet, pa.dword), pa.variant)) { return false; } + it.in_bitfields = true; + it.bitfield = n; + break; + + case RowType.BITFIELD: + case RowType.HEADER_BITFIELD: + default: + return false; } - return false; + iter.stamp = m_stamp; + return true; } public bool iter_parent(out TreeIter iter, TreeIter child) { - if (has_bitfields(child)) { - set_iter(ref iter, get_packet_num(child), get_dword_num(child), 0); - return true; - } else if (has_dwords(child)) { - set_iter(ref iter, get_packet_num(child), 0, 0); - return true; + iter.stamp = 0; + if (child.stamp != m_stamp) { return false; } + + CSIter it = new CSIter(iter); + CSIter ch = new CSIter(child); + it.copy(ch); + if (ch.in_bitfields) { + it.in_bitfields = false; + } else if (ch.in_variants) { + it.in_variants = false; + } else if (ch.in_dwords) { + it.in_dwords = false; + } else { + return false; } - return false; + iter.stamp = m_stamp; + return true; } public void ref_node(TreeIter iter) { return; } @@ -494,7 +711,7 @@ namespace GUI vbl.pack_start(cs_sw, true, true, 0); vbl.pack_start(m_pkgdown = new Button.from_stock("gtk-go-down"), false, true, 0); - var state_reg_list = new TreeView(); + /*var state_reg_list = new TreeView(); state_reg_list.set_model(m_reg_store = new ListStore(2, typeof(string), typeof(uint32))); var sreg_sw = new ScrolledWindow(null, null); @@ -520,20 +737,21 @@ namespace GUI var paned = new HPaned(); paned.add1(vbl); paned.add2(nb); - paned.position = 400; + paned.position = 400;*/ - this.add(paned); + //this.add(paned); + this.add(vbl); this.border_width = 10; this.set_default_size(640, 480); } private void current_dword_renderer(Gtk.TreeViewColumn tree_column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { - if (m_pos == (model as CSListModel).get_packet_num(iter)) { + /*if (m_pos == (model as CSListModel).get_packet_num(iter)) { (cell as Gtk.CellRendererPixbuf).stock_id = "gtk-media-record"; } else { (cell as Gtk.CellRendererPixbuf).stock_id = ""; - } + }*/ } } } diff --git a/src/main.c b/src/main.c index 786e593..422e3a8 100644 --- a/src/main.c +++ b/src/main.c @@ -1,3 +1,6 @@ +/* main.c generated by valac, the Vala compiler + * generated from main.vala, do not modify */ + #include #include @@ -17,6 +20,7 @@ typedef struct _GUICActions GUICActions; typedef struct _GUICActionsClass GUICActionsClass; typedef struct _GUICActionsPrivate GUICActionsPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define EMULATION_TYPE_CHIP (emulation_chip_get_type ()) @@ -52,6 +56,7 @@ typedef struct _GUIParamSpecCMenus GUIParamSpecCMenus; typedef struct _GUICMain GUICMain; typedef struct _GUICMainClass GUICMainClass; typedef struct _GUICMainPrivate GUICMainPrivate; +#define _gui_cmenus_unref0(var) ((var == NULL) ? NULL : (var = (gui_cmenus_unref (var), NULL))) #define EMULATION_TYPE_CS (emulation_cs_get_type ()) #define EMULATION_CS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_CS, EmulationCS)) @@ -73,6 +78,7 @@ typedef struct _EmulationCSPrivate EmulationCSPrivate; typedef struct _EmulationPacketBase EmulationPacketBase; typedef struct _EmulationPacketBaseClass EmulationPacketBaseClass; +#define _g_free0(var) (var = (g_free (var), NULL)) #define EMULATION_TYPE_SPEC (emulation_spec_get_type ()) #define EMULATION_SPEC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_SPEC, EmulationSpec)) @@ -213,11 +219,11 @@ GType emulation_spec_get_type (void); GUICSView* gui_cs_view_new (EmulationCS* cs, EmulationSpec* spec); GUICSView* gui_cs_view_construct (GType object_type, EmulationCS* cs, EmulationSpec* spec); GType gui_cs_view_get_type (void); -static void gui_cmain_open_csview (GUICMain* self, const GtkTreePath* path, GtkTreeViewColumn* column); +static void gui_cmain_open_csview (GUICMain* self, GtkTreePath* path, GtkTreeViewColumn* column); GUICMain* gui_cmain_new (void); GUICMain* gui_cmain_construct (GType object_type); static void _gui_cmain_dwords_cellrenderer_gtk_tree_cell_data_func (GtkTreeViewColumn* tree_column, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self); -static void _gui_cmain_open_csview_gtk_tree_view_row_activated (GtkTreeView* _sender, const GtkTreePath* path, GtkTreeViewColumn* column, gpointer self); +static void _gui_cmain_open_csview_gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self); static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self); static GObject * gui_cmain_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties); static void gui_cmain_finalize (GObject* obj); @@ -246,7 +252,7 @@ static void _lambda10_ (GtkAction* source, GUICActions* self) { g_return_if_fail (source != NULL); d = g_object_ref_sink (gui_cs_import_new ()); gtk_dialog_run ((GtkDialog*) d); - (d == NULL) ? NULL : (d = (g_object_unref (d), NULL)); + _g_object_unref0 (d); } @@ -257,11 +263,9 @@ static void __lambda10__gtk_action_activate (GtkAction* _sender, gpointer self) static GObject * gui_cactions_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { GObject * obj; - GUICActionsClass * klass; GObjectClass * parent_class; GUICActions * self; - klass = GUI_CACTIONS_CLASS (g_type_class_peek (GUI_TYPE_CACTIONS)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); + parent_class = G_OBJECT_CLASS (gui_cactions_parent_class); obj = parent_class->constructor (type, n_construct_properties, construct_properties); self = GUI_CACTIONS (obj); { @@ -275,29 +279,19 @@ static GObject * gui_cactions_constructor (GType type, guint n_construct_propert GtkAction* _tmp7_; GtkRadioAction* _tmp8_; GtkRadioAction* _tmp9_; - _tmp0_ = NULL; - self->New = (_tmp0_ = gtk_action_new ("New", NULL, NULL, "gtk-new"), (self->New == NULL) ? NULL : (self->New = (g_object_unref (self->New), NULL)), _tmp0_); - _tmp1_ = NULL; - self->Open = (_tmp1_ = gtk_action_new ("Open", NULL, NULL, "gtk-open"), (self->Open == NULL) ? NULL : (self->Open = (g_object_unref (self->Open), NULL)), _tmp1_); - _tmp2_ = NULL; - self->Save = (_tmp2_ = gtk_action_new ("Save", NULL, NULL, "gtk-save"), (self->Save == NULL) ? NULL : (self->Save = (g_object_unref (self->Save), NULL)), _tmp2_); - _tmp3_ = NULL; - self->SaveAs = (_tmp3_ = gtk_action_new ("SaveAs", NULL, NULL, "gtk-save-as"), (self->SaveAs == NULL) ? NULL : (self->SaveAs = (g_object_unref (self->SaveAs), NULL)), _tmp3_); - _tmp4_ = NULL; - self->RemoveCS = (_tmp4_ = gtk_action_new ("RemoveCS", "Remove", "Remove selected CS' from the list", "gtk-remove"), (self->RemoveCS == NULL) ? NULL : (self->RemoveCS = (g_object_unref (self->RemoveCS), NULL)), _tmp4_); - _tmp5_ = NULL; - self->ImportCS = (_tmp5_ = gtk_action_new ("ImportCS", "Import", "Import a command stream to the list", "gtk-add"), (self->ImportCS == NULL) ? NULL : (self->ImportCS = (g_object_unref (self->ImportCS), NULL)), _tmp5_); - _tmp6_ = NULL; - self->ExportCS = (_tmp6_ = gtk_action_new ("ExportCS", "Export", "Export a CS to a file", "gtk-convert"), (self->ExportCS == NULL) ? NULL : (self->ExportCS = (g_object_unref (self->ExportCS), NULL)), _tmp6_); - _tmp7_ = NULL; - self->Quit = (_tmp7_ = gtk_action_new ("Quit", NULL, NULL, "gtk-quit"), (self->Quit == NULL) ? NULL : (self->Quit = (g_object_unref (self->Quit), NULL)), _tmp7_); - _tmp8_ = NULL; - self->EmulateR300 = (_tmp8_ = gtk_radio_action_new ("EmulateR300", "R300", "Emulate the R300 register space", NULL, (gint) EMULATION_CHIP_R300), (self->EmulateR300 == NULL) ? NULL : (self->EmulateR300 = (g_object_unref (self->EmulateR300), NULL)), _tmp8_); - _tmp9_ = NULL; - self->EmulateR500 = (_tmp9_ = gtk_radio_action_new ("EmulateR500", "R500", "Emulate the R500 register space", NULL, (gint) EMULATION_CHIP_R500), (self->EmulateR500 == NULL) ? NULL : (self->EmulateR500 = (g_object_unref (self->EmulateR500), NULL)), _tmp9_); + self->New = (_tmp0_ = gtk_action_new ("New", NULL, NULL, "gtk-new"), _g_object_unref0 (self->New), _tmp0_); + self->Open = (_tmp1_ = gtk_action_new ("Open", NULL, NULL, "gtk-open"), _g_object_unref0 (self->Open), _tmp1_); + self->Save = (_tmp2_ = gtk_action_new ("Save", NULL, NULL, "gtk-save"), _g_object_unref0 (self->Save), _tmp2_); + self->SaveAs = (_tmp3_ = gtk_action_new ("SaveAs", NULL, NULL, "gtk-save-as"), _g_object_unref0 (self->SaveAs), _tmp3_); + self->RemoveCS = (_tmp4_ = gtk_action_new ("RemoveCS", "Remove", "Remove selected CS' from the list", "gtk-remove"), _g_object_unref0 (self->RemoveCS), _tmp4_); + self->ImportCS = (_tmp5_ = gtk_action_new ("ImportCS", "Import", "Import a command stream to the list", "gtk-add"), _g_object_unref0 (self->ImportCS), _tmp5_); + self->ExportCS = (_tmp6_ = gtk_action_new ("ExportCS", "Export", "Export a CS to a file", "gtk-convert"), _g_object_unref0 (self->ExportCS), _tmp6_); + self->Quit = (_tmp7_ = gtk_action_new ("Quit", NULL, NULL, "gtk-quit"), _g_object_unref0 (self->Quit), _tmp7_); + self->EmulateR300 = (_tmp8_ = gtk_radio_action_new ("EmulateR300", "R300", "Emulate the R300 register space", NULL, (gint) EMULATION_CHIP_R300), _g_object_unref0 (self->EmulateR300), _tmp8_); + self->EmulateR500 = (_tmp9_ = gtk_radio_action_new ("EmulateR500", "R500", "Emulate the R500 register space", NULL, (gint) EMULATION_CHIP_R500), _g_object_unref0 (self->EmulateR500), _tmp9_); gtk_radio_action_set_group (self->EmulateR500, gtk_radio_action_get_group (self->EmulateR300)); gtk_radio_action_set_current_value (self->EmulateR300, (gint) EMULATION_CHIP_R300); - g_signal_connect (self->ImportCS, "activate", (GCallback) __lambda10__gtk_action_activate, self); + g_signal_connect_object (self->ImportCS, "activate", (GCallback) __lambda10__gtk_action_activate, self, 0); } return obj; } @@ -317,16 +311,16 @@ static void gui_cactions_instance_init (GUICActions * self) { static void gui_cactions_finalize (GObject* obj) { GUICActions * self; self = GUI_CACTIONS (obj); - (self->New == NULL) ? NULL : (self->New = (g_object_unref (self->New), NULL)); - (self->Open == NULL) ? NULL : (self->Open = (g_object_unref (self->Open), NULL)); - (self->Save == NULL) ? NULL : (self->Save = (g_object_unref (self->Save), NULL)); - (self->SaveAs == NULL) ? NULL : (self->SaveAs = (g_object_unref (self->SaveAs), NULL)); - (self->RemoveCS == NULL) ? NULL : (self->RemoveCS = (g_object_unref (self->RemoveCS), NULL)); - (self->ImportCS == NULL) ? NULL : (self->ImportCS = (g_object_unref (self->ImportCS), NULL)); - (self->ExportCS == NULL) ? NULL : (self->ExportCS = (g_object_unref (self->ExportCS), NULL)); - (self->Quit == NULL) ? NULL : (self->Quit = (g_object_unref (self->Quit), NULL)); - (self->EmulateR300 == NULL) ? NULL : (self->EmulateR300 = (g_object_unref (self->EmulateR300), NULL)); - (self->EmulateR500 == NULL) ? NULL : (self->EmulateR500 = (g_object_unref (self->EmulateR500), NULL)); + _g_object_unref0 (self->New); + _g_object_unref0 (self->Open); + _g_object_unref0 (self->Save); + _g_object_unref0 (self->SaveAs); + _g_object_unref0 (self->RemoveCS); + _g_object_unref0 (self->ImportCS); + _g_object_unref0 (self->ExportCS); + _g_object_unref0 (self->Quit); + _g_object_unref0 (self->EmulateR300); + _g_object_unref0 (self->EmulateR500); G_OBJECT_CLASS (gui_cactions_parent_class)->finalize (obj); } @@ -460,9 +454,9 @@ static void gui_cmenus_instance_init (GUICMenus * self) { static void gui_cmenus_finalize (GUICMenus* obj) { GUICMenus * self; self = GUI_CMENUS (obj); - (self->file == NULL) ? NULL : (self->file = (g_object_unref (self->file), NULL)); - (self->edit == NULL) ? NULL : (self->edit = (g_object_unref (self->edit), NULL)); - (self->emulation == NULL) ? NULL : (self->emulation = (g_object_unref (self->emulation), NULL)); + _g_object_unref0 (self->file); + _g_object_unref0 (self->edit); + _g_object_unref0 (self->emulation); } @@ -496,18 +490,20 @@ void gui_cmenus_unref (gpointer instance) { } +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + static void gui_cmain_add_toolitem (GUICMain* self, GtkAction* action) { - GtkToolItem* _tmp1_; GtkWidget* _tmp0_; GtkToolItem* titem; g_return_if_fail (self != NULL); g_return_if_fail (action != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - titem = (_tmp1_ = (_tmp0_ = gtk_action_create_tool_item (action), GTK_IS_TOOL_ITEM (_tmp0_) ? ((GtkToolItem*) _tmp0_) : NULL), (_tmp1_ == NULL) ? NULL : g_object_ref (_tmp1_)); + titem = _g_object_ref0 ((_tmp0_ = gtk_action_create_tool_item (action), GTK_IS_TOOL_ITEM (_tmp0_) ? ((GtkToolItem*) _tmp0_) : NULL)); gtk_tool_item_set_homogeneous (titem, FALSE); gtk_toolbar_insert (self->toolbar, titem, -1); - (titem == NULL) ? NULL : (titem = (g_object_unref (titem), NULL)); + _g_object_unref0 (titem); } @@ -520,17 +516,15 @@ static void gui_cmain_dwords_cellrenderer (GUICMain* self, GtkTreeViewColumn* tr g_return_if_fail (cell != NULL); g_return_if_fail (model != NULL); cs = NULL; - gtk_tree_model_get (model, &(*iter), 1, &cs, -1, -1); + gtk_tree_model_get (model, iter, 1, &cs, -1, -1); g_assert (cs != NULL); - _tmp0_ = NULL; - _tmp1_ = NULL; g_object_set ((_tmp1_ = cell, GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL), "text", _tmp0_ = g_strdup_printf ("%i", cs->dwords_length1), NULL); - _tmp0_ = (g_free (_tmp0_), NULL); - (cs == NULL) ? NULL : (cs = (g_object_unref (cs), NULL)); + _g_free0 (_tmp0_); + _g_object_unref0 (cs); } -static void gui_cmain_open_csview (GUICMain* self, const GtkTreePath* path, GtkTreeViewColumn* column) { +static void gui_cmain_open_csview (GUICMain* self, GtkTreePath* path, GtkTreeViewColumn* column) { GtkTreeIter iter = {0}; EmulationCS* cs; GUICSView* csv; @@ -542,8 +536,8 @@ static void gui_cmain_open_csview (GUICMain* self, const GtkTreePath* path, GtkT gtk_tree_model_get ((GtkTreeModel*) self->cs_store, &iter, 1, &cs, -1, -1); csv = g_object_ref_sink (gui_cs_view_new (cs, r500_registers)); gtk_widget_show_all ((GtkWidget*) csv); - (cs == NULL) ? NULL : (cs = (g_object_unref (cs), NULL)); - (csv == NULL) ? NULL : (csv = (g_object_unref (csv), NULL)); + _g_object_unref0 (cs); + _g_object_unref0 (csv); } @@ -564,7 +558,7 @@ static void _gui_cmain_dwords_cellrenderer_gtk_tree_cell_data_func (GtkTreeViewC } -static void _gui_cmain_open_csview_gtk_tree_view_row_activated (GtkTreeView* _sender, const GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) { +static void _gui_cmain_open_csview_gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) { gui_cmain_open_csview (self, path, column); } @@ -576,12 +570,10 @@ static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self static GObject * gui_cmain_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { GObject * obj; - GUICMainClass * klass; GObjectClass * parent_class; GUICMain * self; GError * _inner_error_; - klass = GUI_CMAIN_CLASS (g_type_class_peek (GUI_TYPE_CMAIN)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); + parent_class = G_OBJECT_CLASS (gui_cmain_parent_class); obj = parent_class->constructor (type, n_construct_properties, construct_properties); self = GUI_CMAIN (obj); _inner_error_ = NULL; @@ -615,70 +607,47 @@ static GObject * gui_cmain_constructor (GType type, guint n_construct_properties GtkCellRendererText* _tmp32_; GtkScrolledWindow* sw; GtkVBox* mainbox; - _tmp10_ = NULL; - self->menu = (_tmp10_ = gui_cmenus_new (), (self->menu == NULL) ? NULL : (self->menu = (gui_cmenus_unref (self->menu), NULL)), _tmp10_); - _tmp11_ = NULL; - self->toolbar = (_tmp11_ = g_object_ref_sink ((GtkToolbar*) gtk_toolbar_new ()), (self->toolbar == NULL) ? NULL : (self->toolbar = (g_object_unref (self->toolbar), NULL)), _tmp11_); + self->menu = (_tmp10_ = gui_cmenus_new (), _gui_cmenus_unref0 (self->menu), _tmp10_); + self->toolbar = (_tmp11_ = g_object_ref_sink ((GtkToolbar*) gtk_toolbar_new ()), _g_object_unref0 (self->toolbar), _tmp11_); gui_cmain_add_toolitem (self, gui_actions->New); gui_cmain_add_toolitem (self, gui_actions->Open); gui_cmain_add_toolitem (self, gui_actions->Save); - _tmp13_ = NULL; - _tmp12_ = NULL; gtk_toolbar_insert (self->toolbar, _tmp13_ = (_tmp12_ = g_object_ref_sink ((GtkSeparatorToolItem*) gtk_separator_tool_item_new ()), GTK_IS_TOOL_ITEM (_tmp12_) ? ((GtkToolItem*) _tmp12_) : NULL), -1); - (_tmp13_ == NULL) ? NULL : (_tmp13_ = (g_object_unref (_tmp13_), NULL)); + _g_object_unref0 (_tmp13_); gui_cmain_add_toolitem (self, gui_actions->RemoveCS); gui_cmain_add_toolitem (self, gui_actions->ImportCS); gui_cmain_add_toolitem (self, gui_actions->ExportCS); - _tmp14_ = NULL; - self->menu->file = (_tmp14_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), (self->menu->file == NULL) ? NULL : (self->menu->file = (g_object_unref (self->menu->file), NULL)), _tmp14_); - _tmp15_ = NULL; + self->menu->file = (_tmp14_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), _g_object_unref0 (self->menu->file), _tmp14_); gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp15_ = gtk_action_create_menu_item (gui_actions->New), GTK_IS_MENU_ITEM (_tmp15_) ? ((GtkMenuItem*) _tmp15_) : NULL)); - _tmp16_ = NULL; gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp16_ = gtk_action_create_menu_item (gui_actions->Open), GTK_IS_MENU_ITEM (_tmp16_) ? ((GtkMenuItem*) _tmp16_) : NULL)); - _tmp17_ = NULL; gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp17_ = gtk_action_create_menu_item (gui_actions->Save), GTK_IS_MENU_ITEM (_tmp17_) ? ((GtkMenuItem*) _tmp17_) : NULL)); - _tmp18_ = NULL; gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp18_ = gtk_action_create_menu_item (gui_actions->SaveAs), GTK_IS_MENU_ITEM (_tmp18_) ? ((GtkMenuItem*) _tmp18_) : NULL)); - _tmp20_ = NULL; - _tmp19_ = NULL; gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp20_ = (_tmp19_ = g_object_ref_sink ((GtkSeparatorMenuItem*) gtk_separator_menu_item_new ()), GTK_IS_MENU_ITEM (_tmp19_) ? ((GtkMenuItem*) _tmp19_) : NULL))); - (_tmp20_ == NULL) ? NULL : (_tmp20_ = (g_object_unref (_tmp20_), NULL)); - _tmp21_ = NULL; + _g_object_unref0 (_tmp20_); gtk_menu_shell_append ((GtkMenuShell*) self->menu->file, (GtkWidget*) (_tmp21_ = gtk_action_create_menu_item (gui_actions->Quit), GTK_IS_MENU_ITEM (_tmp21_) ? ((GtkMenuItem*) _tmp21_) : NULL)); menu_file_item = g_object_ref_sink ((GtkMenuItem*) gtk_menu_item_new_with_label ("File")); gtk_menu_item_set_submenu (menu_file_item, self->menu->file); - _tmp22_ = NULL; - self->menu->edit = (_tmp22_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), (self->menu->edit == NULL) ? NULL : (self->menu->edit = (g_object_unref (self->menu->edit), NULL)), _tmp22_); - _tmp23_ = NULL; + self->menu->edit = (_tmp22_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), _g_object_unref0 (self->menu->edit), _tmp22_); gtk_menu_shell_append ((GtkMenuShell*) self->menu->edit, (GtkWidget*) (_tmp23_ = gtk_action_create_menu_item (gui_actions->RemoveCS), GTK_IS_MENU_ITEM (_tmp23_) ? ((GtkMenuItem*) _tmp23_) : NULL)); - _tmp24_ = NULL; gtk_menu_shell_append ((GtkMenuShell*) self->menu->edit, (GtkWidget*) (_tmp24_ = gtk_action_create_menu_item (gui_actions->ImportCS), GTK_IS_MENU_ITEM (_tmp24_) ? ((GtkMenuItem*) _tmp24_) : NULL)); - _tmp25_ = NULL; gtk_menu_shell_append ((GtkMenuShell*) self->menu->edit, (GtkWidget*) (_tmp25_ = gtk_action_create_menu_item (gui_actions->ExportCS), GTK_IS_MENU_ITEM (_tmp25_) ? ((GtkMenuItem*) _tmp25_) : NULL)); menu_edit_item = g_object_ref_sink ((GtkMenuItem*) gtk_menu_item_new_with_label ("Edit")); gtk_menu_item_set_submenu (menu_edit_item, self->menu->edit); - _tmp26_ = NULL; - self->menu->emulation = (_tmp26_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), (self->menu->emulation == NULL) ? NULL : (self->menu->emulation = (g_object_unref (self->menu->emulation), NULL)), _tmp26_); - _tmp27_ = NULL; + self->menu->emulation = (_tmp26_ = g_object_ref_sink ((GtkMenu*) gtk_menu_new ()), _g_object_unref0 (self->menu->emulation), _tmp26_); gtk_menu_shell_append ((GtkMenuShell*) self->menu->emulation, (GtkWidget*) (_tmp27_ = gtk_action_create_menu_item ((GtkAction*) gui_actions->EmulateR300), GTK_IS_MENU_ITEM (_tmp27_) ? ((GtkMenuItem*) _tmp27_) : NULL)); - _tmp28_ = NULL; gtk_menu_shell_append ((GtkMenuShell*) self->menu->emulation, (GtkWidget*) (_tmp28_ = gtk_action_create_menu_item ((GtkAction*) gui_actions->EmulateR500), GTK_IS_MENU_ITEM (_tmp28_) ? ((GtkMenuItem*) _tmp28_) : NULL)); menu_emulation_item = g_object_ref_sink ((GtkMenuItem*) gtk_menu_item_new_with_label ("Emulation")); gtk_menu_item_set_submenu (menu_emulation_item, self->menu->emulation); - _tmp29_ = NULL; - self->menubar = (_tmp29_ = g_object_ref_sink ((GtkMenuBar*) gtk_menu_bar_new ()), (self->menubar == NULL) ? NULL : (self->menubar = (g_object_unref (self->menubar), NULL)), _tmp29_); + self->menubar = (_tmp29_ = g_object_ref_sink ((GtkMenuBar*) gtk_menu_bar_new ()), _g_object_unref0 (self->menubar), _tmp29_); gtk_menu_shell_append ((GtkMenuShell*) self->menubar, (GtkWidget*) menu_file_item); gtk_menu_shell_append ((GtkMenuShell*) self->menubar, (GtkWidget*) menu_edit_item); gtk_menu_shell_append ((GtkMenuShell*) self->menubar, (GtkWidget*) menu_emulation_item); - _tmp30_ = NULL; - self->cs_store = (_tmp30_ = gtk_list_store_new (2, G_TYPE_STRING, EMULATION_TYPE_CS, NULL), (self->cs_store == NULL) ? NULL : (self->cs_store = (g_object_unref (self->cs_store), NULL)), _tmp30_); + self->cs_store = (_tmp30_ = gtk_list_store_new (2, G_TYPE_STRING, EMULATION_TYPE_CS, NULL), _g_object_unref0 (self->cs_store), _tmp30_); cslist = g_object_ref_sink ((GtkTreeView*) gtk_tree_view_new ()); - _tmp31_ = NULL; gtk_tree_view_insert_column_with_data_func (cslist, -1, "DWORDs", (GtkCellRenderer*) (_tmp31_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), _gui_cmain_dwords_cellrenderer_gtk_tree_cell_data_func, g_object_ref (self), g_object_unref); - (_tmp31_ == NULL) ? NULL : (_tmp31_ = (g_object_unref (_tmp31_), NULL)); - _tmp32_ = NULL; + _g_object_unref0 (_tmp31_); gtk_tree_view_insert_column_with_attributes (cslist, -1, "Name", (GtkCellRenderer*) (_tmp32_ = g_object_ref_sink ((GtkCellRendererText*) gtk_cell_renderer_text_new ())), "text", 0, NULL, NULL); - (_tmp32_ == NULL) ? NULL : (_tmp32_ = (g_object_unref (_tmp32_), NULL)); + _g_object_unref0 (_tmp32_); gtk_tree_view_set_model (cslist, (GtkTreeModel*) self->cs_store); g_signal_connect_object (cslist, "row-activated", (GCallback) _gui_cmain_open_csview_gtk_tree_view_row_activated, self, 0); sw = g_object_ref_sink ((GtkScrolledWindow*) gtk_scrolled_window_new (NULL, NULL)); @@ -693,25 +662,24 @@ static GObject * gui_cmain_constructor (GType type, guint n_construct_properties gtk_window_set_title ((GtkWindow*) self, "Radeon Simulator"); gtk_container_add ((GtkContainer*) self, (GtkWidget*) mainbox); g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL); - /* XXX This shouldn't be hardcoded */ gtk_window_set_icon_from_file ((GtkWindow*) self, "/usr/share/pixmaps/rsim.png", &_inner_error_); if (_inner_error_ != NULL) { - (menu_file_item == NULL) ? NULL : (menu_file_item = (g_object_unref (menu_file_item), NULL)); - (menu_edit_item == NULL) ? NULL : (menu_edit_item = (g_object_unref (menu_edit_item), NULL)); - (menu_emulation_item == NULL) ? NULL : (menu_emulation_item = (g_object_unref (menu_emulation_item), NULL)); - (cslist == NULL) ? NULL : (cslist = (g_object_unref (cslist), NULL)); - (sw == NULL) ? NULL : (sw = (g_object_unref (sw), NULL)); - (mainbox == NULL) ? NULL : (mainbox = (g_object_unref (mainbox), NULL)); + _g_object_unref0 (menu_file_item); + _g_object_unref0 (menu_edit_item); + _g_object_unref0 (menu_emulation_item); + _g_object_unref0 (cslist); + _g_object_unref0 (sw); + _g_object_unref0 (mainbox); g_critical ("file %s: line %d: uncaught error: %s", __FILE__, __LINE__, _inner_error_->message); g_clear_error (&_inner_error_); } gtk_widget_show_all ((GtkWidget*) self); - (menu_file_item == NULL) ? NULL : (menu_file_item = (g_object_unref (menu_file_item), NULL)); - (menu_edit_item == NULL) ? NULL : (menu_edit_item = (g_object_unref (menu_edit_item), NULL)); - (menu_emulation_item == NULL) ? NULL : (menu_emulation_item = (g_object_unref (menu_emulation_item), NULL)); - (cslist == NULL) ? NULL : (cslist = (g_object_unref (cslist), NULL)); - (sw == NULL) ? NULL : (sw = (g_object_unref (sw), NULL)); - (mainbox == NULL) ? NULL : (mainbox = (g_object_unref (mainbox), NULL)); + _g_object_unref0 (menu_file_item); + _g_object_unref0 (menu_edit_item); + _g_object_unref0 (menu_emulation_item); + _g_object_unref0 (cslist); + _g_object_unref0 (sw); + _g_object_unref0 (mainbox); } return obj; } @@ -731,10 +699,10 @@ static void gui_cmain_instance_init (GUICMain * self) { static void gui_cmain_finalize (GObject* obj) { GUICMain * self; self = GUI_CMAIN (obj); - (self->menu == NULL) ? NULL : (self->menu = (gui_cmenus_unref (self->menu), NULL)); - (self->menubar == NULL) ? NULL : (self->menubar = (g_object_unref (self->menubar), NULL)); - (self->toolbar == NULL) ? NULL : (self->toolbar = (g_object_unref (self->toolbar), NULL)); - (self->cs_store == NULL) ? NULL : (self->cs_store = (g_object_unref (self->cs_store), NULL)); + _gui_cmenus_unref0 (self->menu); + _g_object_unref0 (self->menubar); + _g_object_unref0 (self->toolbar); + _g_object_unref0 (self->cs_store); G_OBJECT_CLASS (gui_cmain_parent_class)->finalize (obj); } @@ -752,11 +720,9 @@ GType gui_cmain_get_type (void) { void gui_init (char*** args, int* args_length1) { GUICActions* _tmp0_; GUICMain* _tmp1_; - gtk_init (&(*args_length1), &(*args)); - _tmp0_ = NULL; - gui_actions = (_tmp0_ = gui_cactions_new (), (gui_actions == NULL) ? NULL : (gui_actions = (g_object_unref (gui_actions), NULL)), _tmp0_); - _tmp1_ = NULL; - gui_main = (_tmp1_ = g_object_ref_sink (gui_cmain_new ()), (gui_main == NULL) ? NULL : (gui_main = (g_object_unref (gui_main), NULL)), _tmp1_); + gtk_init (args_length1, args); + gui_actions = (_tmp0_ = gui_cactions_new (), _g_object_unref0 (gui_actions), _tmp0_); + gui_main = (_tmp1_ = g_object_ref_sink (gui_cmain_new ()), _g_object_unref0 (gui_main), _tmp1_); gtk_main (); } @@ -765,15 +731,11 @@ gint _main (char** args, int args_length1) { gint result; EmulationSpec* _tmp0_; EmulationSpec* _tmp1_; - _tmp0_ = NULL; - r300_registers = (_tmp0_ = emulation_spec_new (), (r300_registers == NULL) ? NULL : (r300_registers = (g_object_unref (r300_registers), NULL)), _tmp0_); - _tmp1_ = NULL; - r500_registers = (_tmp1_ = emulation_spec_new (), (r500_registers == NULL) ? NULL : (r500_registers = (g_object_unref (r500_registers), NULL)), _tmp1_); - /* XXX This shouldn't be hardcoded */ + r300_registers = (_tmp0_ = emulation_spec_new (), _g_object_unref0 (r300_registers), _tmp0_); + r500_registers = (_tmp1_ = emulation_spec_new (), _g_object_unref0 (r500_registers), _tmp1_); emulation_spec_load_xml (r300_registers, "/usr/share/rsim/r300reg.xml", "r300"); emulation_spec_load_xml (r500_registers, "/usr/share/rsim/r300reg.xml", "r500"); gui_init (&args, &args_length1); - /* vala doesn't unref globals */ g_object_unref ((GObject*) r300_registers); g_object_unref ((GObject*) r500_registers); g_object_unref ((GObject*) gui_actions); diff --git a/src/registers.c b/src/registers.c index 93db199..0cfc92e 100644 --- a/src/registers.c +++ b/src/registers.c @@ -1,3 +1,6 @@ +/* registers.c generated by valac, the Vala compiler + * generated from registers.vala, do not modify */ + #include #include @@ -21,6 +24,7 @@ typedef struct _EmulationBitfieldValue EmulationBitfieldValue; typedef struct _EmulationBitfieldValueClass EmulationBitfieldValueClass; typedef struct _EmulationBitfieldValuePrivate EmulationBitfieldValuePrivate; +#define _g_free0(var) (var = (g_free (var), NULL)) #define EMULATION_TYPE_BITFIELD_ENUM (emulation_bitfield_enum_get_type ()) #define EMULATION_BITFIELD_ENUM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_BITFIELD_ENUM, EmulationBitfieldEnum)) @@ -32,6 +36,7 @@ typedef struct _EmulationBitfieldValuePrivate EmulationBitfieldValuePrivate; typedef struct _EmulationBitfieldEnum EmulationBitfieldEnum; typedef struct _EmulationBitfieldEnumClass EmulationBitfieldEnumClass; typedef struct _EmulationBitfieldEnumPrivate EmulationBitfieldEnumPrivate; +#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL))) #define EMULATION_TYPE_BITFIELD (emulation_bitfield_get_type ()) #define EMULATION_BITFIELD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_BITFIELD, EmulationBitfield)) @@ -43,6 +48,7 @@ typedef struct _EmulationBitfieldEnumPrivate EmulationBitfieldEnumPrivate; typedef struct _EmulationBitfield EmulationBitfield; typedef struct _EmulationBitfieldClass EmulationBitfieldClass; typedef struct _EmulationBitfieldPrivate EmulationBitfieldPrivate; +#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL))) #define EMULATION_TYPE_BITFIELD_ITERATOR (emulation_bitfield_iterator_get_type ()) #define EMULATION_BITFIELD_ITERATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_BITFIELD_ITERATOR, EmulationBitfieldIterator)) @@ -66,6 +72,7 @@ typedef struct _EmulationParamSpecBitfieldIterator EmulationParamSpecBitfieldIte typedef struct _EmulationRegisterInfo EmulationRegisterInfo; typedef struct _EmulationRegisterInfoClass EmulationRegisterInfoClass; typedef struct _EmulationRegisterInfoPrivate EmulationRegisterInfoPrivate; +#define __g_list_free_g_object_unref0(var) ((var == NULL) ? NULL : (var = (_g_list_free_g_object_unref (var), NULL))) #define EMULATION_TYPE_REGISTER (emulation_register_get_type ()) #define EMULATION_REGISTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EMULATION_TYPE_REGISTER, EmulationRegister)) @@ -123,6 +130,7 @@ typedef struct _EmulationParamSpecSpecParser EmulationParamSpecSpecParser; typedef struct _EmulationSpec EmulationSpec; typedef struct _EmulationSpecClass EmulationSpecClass; typedef struct _EmulationSpecPrivate EmulationSpecPrivate; +#define _emulation_spec_parser_unref0(var) ((var == NULL) ? NULL : (var = (emulation_spec_parser_unref (var), NULL))) typedef enum { EMULATION_ACCESS_TYPE_READ = 1 << 0, @@ -549,7 +557,7 @@ GType emulation_access_type_get_type (void) { EmulationBitfieldValue* emulation_bitfield_value_construct (GType object_type) { EmulationBitfieldValue * self; - self = g_object_newv (object_type, 0, NULL); + self = (EmulationBitfieldValue*) g_object_new (object_type, NULL); return self; } @@ -568,12 +576,9 @@ const char* emulation_bitfield_value_get_name (EmulationBitfieldValue* self) { void emulation_bitfield_value_set_name (EmulationBitfieldValue* self, const char* value) { - char* _tmp1_; - const char* _tmp0_; + char* _tmp0_; g_return_if_fail (self != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->_name = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)), self->priv->_name = (g_free (self->priv->_name), NULL), _tmp1_); + self->priv->_name = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_name), _tmp0_); g_object_notify ((GObject *) self, "name"); } @@ -587,12 +592,9 @@ const char* emulation_bitfield_value_get_doc (EmulationBitfieldValue* self) { void emulation_bitfield_value_set_doc (EmulationBitfieldValue* self, const char* value) { - char* _tmp1_; - const char* _tmp0_; + char* _tmp0_; g_return_if_fail (self != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->_doc = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)), self->priv->_doc = (g_free (self->priv->_doc), NULL), _tmp1_); + self->priv->_doc = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_doc), _tmp0_); g_object_notify ((GObject *) self, "doc"); } @@ -632,8 +634,8 @@ static void emulation_bitfield_value_instance_init (EmulationBitfieldValue * sel static void emulation_bitfield_value_finalize (GObject* obj) { EmulationBitfieldValue * self; self = EMULATION_BITFIELD_VALUE (obj); - self->priv->_name = (g_free (self->priv->_name), NULL); - self->priv->_doc = (g_free (self->priv->_doc), NULL); + _g_free0 (self->priv->_name); + _g_free0 (self->priv->_doc); G_OBJECT_CLASS (emulation_bitfield_value_parent_class)->finalize (obj); } @@ -650,7 +652,6 @@ GType emulation_bitfield_value_get_type (void) { static void emulation_bitfield_value_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationBitfieldValue * self; - gpointer boxed; self = EMULATION_BITFIELD_VALUE (object); switch (property_id) { case EMULATION_BITFIELD_VALUE_NAME: @@ -705,15 +706,21 @@ static guint32* _uint32_dup (guint32* self) { } +static gpointer __uint32_dup0 (gpointer self) { + return self ? _uint32_dup (self) : NULL; +} + + +static gpointer _g_object_ref0 (gpointer self) { + return self ? g_object_ref (self) : NULL; +} + + void emulation_bitfield_enum_append (EmulationBitfieldEnum* self, EmulationBitfieldValue* v) { - EmulationBitfieldValue* _tmp2_; - guint32* _tmp1_; guint32 _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (v != NULL); - _tmp2_ = NULL; - _tmp1_ = NULL; - g_hash_table_insert (self->priv->vals, (_tmp1_ = (_tmp0_ = emulation_bitfield_value_get_val (v), &_tmp0_), (_tmp1_ == NULL) ? NULL : _uint32_dup (_tmp1_)), (_tmp2_ = v, (_tmp2_ == NULL) ? NULL : g_object_ref (_tmp2_))); + g_hash_table_insert (self->priv->vals, __uint32_dup0 ((_tmp0_ = emulation_bitfield_value_get_val (v), &_tmp0_)), _g_object_ref0 (v)); } @@ -741,7 +748,6 @@ static void __lambda0__gdestroy_notify (void* data) { static void _lambda1_ (void* ptr) { void* _tmp0_; - _tmp0_ = NULL; g_object_unref ((_tmp0_ = ptr, G_IS_OBJECT (_tmp0_) ? ((GObject*) _tmp0_) : NULL)); } @@ -753,17 +759,14 @@ static void __lambda1__gdestroy_notify (void* data) { static GObject * emulation_bitfield_enum_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { GObject * obj; - EmulationBitfieldEnumClass * klass; GObjectClass * parent_class; EmulationBitfieldEnum * self; - klass = EMULATION_BITFIELD_ENUM_CLASS (g_type_class_peek (EMULATION_TYPE_BITFIELD_ENUM)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); + parent_class = G_OBJECT_CLASS (emulation_bitfield_enum_parent_class); obj = parent_class->constructor (type, n_construct_properties, construct_properties); self = EMULATION_BITFIELD_ENUM (obj); { GHashTable* _tmp0_; - _tmp0_ = NULL; - self->priv->vals = (_tmp0_ = g_hash_table_new_full (g_int_hash, g_int_equal, __lambda0__gdestroy_notify, __lambda1__gdestroy_notify), (self->priv->vals == NULL) ? NULL : (self->priv->vals = (g_hash_table_unref (self->priv->vals), NULL)), _tmp0_); + self->priv->vals = (_tmp0_ = g_hash_table_new_full (g_int_hash, g_int_equal, __lambda0__gdestroy_notify, __lambda1__gdestroy_notify), _g_hash_table_unref0 (self->priv->vals), _tmp0_); } return obj; } @@ -785,7 +788,7 @@ static void emulation_bitfield_enum_instance_init (EmulationBitfieldEnum * self) static void emulation_bitfield_enum_finalize (GObject* obj) { EmulationBitfieldEnum * self; self = EMULATION_BITFIELD_ENUM (obj); - (self->priv->vals == NULL) ? NULL : (self->priv->vals = (g_hash_table_unref (self->priv->vals), NULL)); + _g_hash_table_unref0 (self->priv->vals); G_OBJECT_CLASS (emulation_bitfield_enum_parent_class)->finalize (obj); } @@ -802,7 +805,7 @@ GType emulation_bitfield_enum_get_type (void) { EmulationBitfield* emulation_bitfield_construct (GType object_type) { EmulationBitfield * self; - self = g_object_newv (object_type, 0, NULL); + self = (EmulationBitfield*) g_object_new (object_type, NULL); return self; } @@ -821,12 +824,9 @@ const char* emulation_bitfield_get_name (EmulationBitfield* self) { void emulation_bitfield_set_name (EmulationBitfield* self, const char* value) { - char* _tmp1_; - const char* _tmp0_; + char* _tmp0_; g_return_if_fail (self != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->_name = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)), self->priv->_name = (g_free (self->priv->_name), NULL), _tmp1_); + self->priv->_name = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_name), _tmp0_); g_object_notify ((GObject *) self, "name"); } @@ -840,12 +840,9 @@ const char* emulation_bitfield_get_doc (EmulationBitfield* self) { void emulation_bitfield_set_doc (EmulationBitfield* self, const char* value) { - char* _tmp1_; - const char* _tmp0_; + char* _tmp0_; g_return_if_fail (self != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->_doc = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)), self->priv->_doc = (g_free (self->priv->_doc), NULL), _tmp1_); + self->priv->_doc = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_doc), _tmp0_); g_object_notify ((GObject *) self, "doc"); } @@ -889,12 +886,9 @@ EmulationBitfieldEnum* emulation_bitfield_get_enu (EmulationBitfield* self) { void emulation_bitfield_set_enu (EmulationBitfield* self, EmulationBitfieldEnum* value) { - EmulationBitfieldEnum* _tmp1_; EmulationBitfieldEnum* _tmp0_; g_return_if_fail (self != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->_enu = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)), (self->priv->_enu == NULL) ? NULL : (self->priv->_enu = (g_object_unref (self->priv->_enu), NULL)), _tmp1_); + self->priv->_enu = (_tmp0_ = _g_object_ref0 (value), _g_object_unref0 (self->priv->_enu), _tmp0_); g_object_notify ((GObject *) self, "enu"); } @@ -926,9 +920,9 @@ static void emulation_bitfield_instance_init (EmulationBitfield * self) { static void emulation_bitfield_finalize (GObject* obj) { EmulationBitfield * self; self = EMULATION_BITFIELD (obj); - self->priv->_name = (g_free (self->priv->_name), NULL); - self->priv->_doc = (g_free (self->priv->_doc), NULL); - (self->priv->_enu == NULL) ? NULL : (self->priv->_enu = (g_object_unref (self->priv->_enu), NULL)); + _g_free0 (self->priv->_name); + _g_free0 (self->priv->_doc); + _g_object_unref0 (self->priv->_enu); G_OBJECT_CLASS (emulation_bitfield_parent_class)->finalize (obj); } @@ -945,7 +939,6 @@ GType emulation_bitfield_get_type (void) { static void emulation_bitfield_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationBitfield * self; - gpointer boxed; self = EMULATION_BITFIELD (object); switch (property_id) { case EMULATION_BITFIELD_NAME: @@ -1193,11 +1186,9 @@ EmulationBitfield* emulation_register_info_get (EmulationRegisterInfo* self, gui void emulation_register_info_append (EmulationRegisterInfo* self, EmulationBitfield* b) { - EmulationBitfield* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (b != NULL); - _tmp0_ = NULL; - self->priv->bitfields = g_list_append (self->priv->bitfields, (_tmp0_ = b, (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_))); + self->priv->bitfields = g_list_append (self->priv->bitfields, _g_object_ref0 (b)); } @@ -1222,12 +1213,9 @@ const char* emulation_register_info_get_name (EmulationRegisterInfo* self) { void emulation_register_info_set_name (EmulationRegisterInfo* self, const char* value) { - char* _tmp1_; - const char* _tmp0_; + char* _tmp0_; g_return_if_fail (self != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->_name = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)), self->priv->_name = (g_free (self->priv->_name), NULL), _tmp1_); + self->priv->_name = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_name), _tmp0_); g_object_notify ((GObject *) self, "name"); } @@ -1241,12 +1229,9 @@ const char* emulation_register_info_get_doc (EmulationRegisterInfo* self) { void emulation_register_info_set_doc (EmulationRegisterInfo* self, const char* value) { - char* _tmp1_; - const char* _tmp0_; + char* _tmp0_; g_return_if_fail (self != NULL); - _tmp1_ = NULL; - _tmp0_ = NULL; - self->priv->_doc = (_tmp1_ = (_tmp0_ = value, (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)), self->priv->_doc = (g_free (self->priv->_doc), NULL), _tmp1_); + self->priv->_doc = (_tmp0_ = g_strdup (value), _g_free0 (self->priv->_doc), _tmp0_); g_object_notify ((GObject *) self, "doc"); } @@ -1314,17 +1299,14 @@ GType emulation_register_info_get_extract_type (EmulationRegisterInfo* self) { static GObject * emulation_register_info_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { GObject * obj; - EmulationRegisterInfoClass * klass; GObjectClass * parent_class; EmulationRegisterInfo * self; - klass = EMULATION_REGISTER_INFO_CLASS (g_type_class_peek (EMULATION_TYPE_REGISTER_INFO)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); + parent_class = G_OBJECT_CLASS (emulation_register_info_parent_class); obj = parent_class->constructor (type, n_construct_properties, construct_properties); self = EMULATION_REGISTER_INFO (obj); { GList* _tmp1_; - _tmp1_ = NULL; - self->priv->bitfields = (_tmp1_ = NULL, (self->priv->bitfields == NULL) ? NULL : (self->priv->bitfields = (_g_list_free_g_object_unref (self->priv->bitfields), NULL)), _tmp1_); + self->priv->bitfields = (_tmp1_ = NULL, __g_list_free_g_object_unref0 (self->priv->bitfields), _tmp1_); } return obj; } @@ -1360,9 +1342,9 @@ static void emulation_register_info_instance_init (EmulationRegisterInfo * self) static void emulation_register_info_finalize (GObject* obj) { EmulationRegisterInfo * self; self = EMULATION_REGISTER_INFO (obj); - self->priv->_name = (g_free (self->priv->_name), NULL); - self->priv->_doc = (g_free (self->priv->_doc), NULL); - (self->priv->bitfields == NULL) ? NULL : (self->priv->bitfields = (_g_list_free_g_object_unref (self->priv->bitfields), NULL)); + _g_free0 (self->priv->_name); + _g_free0 (self->priv->_doc); + __g_list_free_g_object_unref0 (self->priv->bitfields); G_OBJECT_CLASS (emulation_register_info_parent_class)->finalize (obj); } @@ -1379,7 +1361,6 @@ GType emulation_register_info_get_type (void) { static void emulation_register_info_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationRegisterInfo * self; - gpointer boxed; self = EMULATION_REGISTER_INFO (object); switch (property_id) { case EMULATION_REGISTER_INFO_NAME: @@ -1438,7 +1419,7 @@ static void emulation_register_info_set_property (GObject * object, guint proper EmulationRegister* emulation_register_construct (GType object_type) { EmulationRegister * self; - self = g_object_newv (object_type, 0, NULL); + self = (EmulationRegister*) g_object_new (object_type, NULL); return self; } @@ -1561,7 +1542,6 @@ GType emulation_register_get_type (void) { static void emulation_register_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationRegister * self; - gpointer boxed; self = EMULATION_REGISTER (object); switch (property_id) { case EMULATION_REGISTER_ADDR: @@ -1803,11 +1783,9 @@ EmulationRegister* emulation_register_list_get (EmulationRegisterList* self, gui void emulation_register_list_append (EmulationRegisterList* self, EmulationRegister* reg) { - EmulationRegister* _tmp0_; g_return_if_fail (self != NULL); g_return_if_fail (reg != NULL); - _tmp0_ = NULL; - self->priv->regs = g_list_append (self->priv->regs, (_tmp0_ = reg, (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_))); + self->priv->regs = g_list_append (self->priv->regs, _g_object_ref0 (reg)); } @@ -1841,17 +1819,14 @@ GType emulation_register_list_get_extract_type (EmulationRegisterList* self) { static GObject * emulation_register_list_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) { GObject * obj; - EmulationRegisterListClass * klass; GObjectClass * parent_class; EmulationRegisterList * self; - klass = EMULATION_REGISTER_LIST_CLASS (g_type_class_peek (EMULATION_TYPE_REGISTER_LIST)); - parent_class = G_OBJECT_CLASS (g_type_class_peek_parent (klass)); + parent_class = G_OBJECT_CLASS (emulation_register_list_parent_class); obj = parent_class->constructor (type, n_construct_properties, construct_properties); self = EMULATION_REGISTER_LIST (obj); { GList* _tmp2_; - _tmp2_ = NULL; - self->priv->regs = (_tmp2_ = NULL, (self->priv->regs == NULL) ? NULL : (self->priv->regs = (_g_list_free_g_object_unref (self->priv->regs), NULL)), _tmp2_); + self->priv->regs = (_tmp2_ = NULL, __g_list_free_g_object_unref0 (self->priv->regs), _tmp2_); } return obj; } @@ -1876,7 +1851,7 @@ static void emulation_register_list_instance_init (EmulationRegisterList * self) static void emulation_register_list_finalize (GObject* obj) { EmulationRegisterList * self; self = EMULATION_REGISTER_LIST (obj); - (self->priv->regs == NULL) ? NULL : (self->priv->regs = (_g_list_free_g_object_unref (self->priv->regs), NULL)); + __g_list_free_g_object_unref0 (self->priv->regs); G_OBJECT_CLASS (emulation_register_list_parent_class)->finalize (obj); } @@ -1893,7 +1868,6 @@ GType emulation_register_list_get_type (void) { static void emulation_register_list_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) { EmulationRegisterList * self; - gpointer boxed; self = EMULATION_REGISTER_LIST (object); switch (property_id) { case EMULATION_REGISTER_LIST_LENGTH: @@ -1921,7 +1895,6 @@ static void __lambda2__gdestroy_notify (void* data) { static void _lambda3_ (void* ptr) { void* _tmp0_; - _tmp0_ = NULL; g_object_unref ((_tmp0_ = ptr, G_IS_OBJECT (_tmp0_) ? ((GObject*) _tmp0_) : NULL)); } @@ -1943,7 +1916,6 @@ static void __lambda4__gdestroy_notify (void* data) { static void _lambda5_ (void* ptr) { void* _tmp0_; - _tmp0_ = NULL; g_object_unref ((_tmp0_ = ptr, G_IS_OBJECT (_tmp0_) ? ((GObject*) _tmp0_) : NULL)); } @@ -1965,7 +1937,6 @@ static void __lambda6__gdestroy_notify (void* data) { static void _lambda7_ (void* ptr) { void* _tmp0_; - _tmp0_ = NULL; g_object_unref ((_tmp0_ = ptr, G_IS_OBJECT (_tmp0_) ? ((GObject*) _tmp0_) : NULL)); } @@ -1987,7 +1958,6 @@ static void __lambda8__gdestroy_notify (void* data) { static void _lambda9_ (void* ptr) { void* _tmp0_; - _tmp0_ = NULL; g_object_unref ((_tmp0_ = ptr, G_IS_OBJECT (_tmp0_) ? ((GObject*) _tmp0_) : NULL)); } @@ -2011,16 +1981,11 @@ EmulationSpecParser* emulation_spec_parser_construct (GType object_type, GHashTa *_regs = NULL; } self = (EmulationSpecParser*) g_type_create_instance (object_type); - _tmp0_ = NULL; - self->priv->info = (*_info) = (_tmp0_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda2__gdestroy_notify, __lambda3__gdestroy_notify), ((*_info) == NULL) ? NULL : ((*_info) = (g_hash_table_unref ((*_info)), NULL)), _tmp0_); - _tmp1_ = NULL; - self->priv->regs = (*_regs) = (_tmp1_ = g_hash_table_new_full (g_int_hash, g_int_equal, __lambda4__gdestroy_notify, __lambda5__gdestroy_notify), ((*_regs) == NULL) ? NULL : ((*_regs) = (g_hash_table_unref ((*_regs)), NULL)), _tmp1_); - _tmp2_ = NULL; - self->priv->groups_map = (_tmp2_ = g_hash_table_new (g_str_hash, g_str_equal), (self->priv->groups_map == NULL) ? NULL : (self->priv->groups_map = (g_hash_table_unref (self->priv->groups_map), NULL)), _tmp2_); - _tmp3_ = NULL; - self->priv->enums_map = (_tmp3_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda6__gdestroy_notify, __lambda7__gdestroy_notify), (self->priv->enums_map == NULL) ? NULL : (self->priv->enums_map = (g_hash_table_unref (self->priv->enums_map), NULL)), _tmp3_); - _tmp4_ = NULL; - self->priv->regs_last_map = (_tmp4_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda8__gdestroy_notify, __lambda9__gdestroy_notify), (self->priv->regs_last_map == NULL) ? NULL : (self->priv->regs_last_map = (g_hash_table_unref (self->priv->regs_last_map), NULL)), _tmp4_); + self->priv->info = *_info = (_tmp0_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda2__gdestroy_notify, __lambda3__gdestroy_notify), _g_hash_table_unref0 (*_info), _tmp0_); + self->priv->regs = *_regs = (_tmp1_ = g_hash_table_new_full (g_int_hash, g_int_equal, __lambda4__gdestroy_notify, __lambda5__gdestroy_notify), _g_hash_table_unref0 (*_regs), _tmp1_); + self->priv->groups_map = (_tmp2_ = g_hash_table_new (g_str_hash, g_str_equal), _g_hash_table_unref0 (self->priv->groups_map), _tmp2_); + self->priv->enums_map = (_tmp3_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda6__gdestroy_notify, __lambda7__gdestroy_notify), _g_hash_table_unref0 (self->priv->enums_map), _tmp3_); + self->priv->regs_last_map = (_tmp4_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda8__gdestroy_notify, __lambda9__gdestroy_notify), _g_hash_table_unref0 (self->priv->regs_last_map), _tmp4_); return self; } @@ -2095,9 +2060,7 @@ static inline void emulation_spec_parser_index_groups (EmulationSpecParser* self if (g_hash_table_lookup (self->priv->groups_map, name) != NULL) { fprintf (stdout, "Warning: Found more than one group by the name of '%s'.\n", name); } else { - const char* _tmp1_; - _tmp1_ = NULL; - g_hash_table_insert (self->priv->groups_map, (_tmp1_ = name, (_tmp1_ == NULL) ? NULL : g_strdup (_tmp1_)), iter); + g_hash_table_insert (self->priv->groups_map, g_strdup (name), iter); } } } @@ -2187,15 +2150,13 @@ static inline xmlNode* emulation_spec_parser_find_group (EmulationSpecParser* se static inline EmulationBitfieldEnum* emulation_spec_parser_find_enum (EmulationSpecParser* self, const char* name) { EmulationBitfieldEnum* result; EmulationBitfieldEnum* e; - EmulationBitfieldEnum* _tmp0_; g_return_val_if_fail (self != NULL, NULL); g_return_val_if_fail (name != NULL, NULL); e = (EmulationBitfieldEnum*) g_hash_table_lookup (self->priv->enums_map, name); if (e == NULL) { fprintf (stdout, "Warning: Trying to use non-existant enum '%s'\n", name); } - _tmp0_ = NULL; - result = (_tmp0_ = e, (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)); + result = _g_object_ref0 (e); return result; } @@ -2318,7 +2279,7 @@ static void emulation_spec_parser_xmlparse_group (EmulationSpecParser* self, xml } } } - name = (g_free (name), NULL); + _g_free0 (name); } @@ -2420,7 +2381,7 @@ static void emulation_spec_parser_xmlparse_stripe (EmulationSpecParser* self, xm } } } - name = (g_free (name), NULL); + _g_free0 (name); } @@ -2432,6 +2393,11 @@ static guint* _uint_dup (guint* self) { } +static gpointer __uint_dup0 (gpointer self) { + return self ? _uint_dup (self) : NULL; +} + + static glong string_get_length (const char* self) { glong result; g_return_val_if_fail (self != NULL, 0L); @@ -2442,56 +2408,41 @@ static glong string_get_length (const char* self) { static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xmlNode* node, guint offset, const char* _name) { char* name; - EmulationRegisterList* _tmp0_; EmulationRegisterList* regarr; - EmulationRegisterInfo* _tmp4_; EmulationRegisterInfo* reginfo; EmulationRegister* reg; - guint _tmp11_; - EmulationRegister* _tmp12_; + guint _tmp3_; EmulationRegister* last_reg; g_return_if_fail (self != NULL); g_return_if_fail (_name != NULL); name = g_strconcat (_name, emulation_spec_parser_get_single_attrib (self, node, "name"), NULL); offset = offset + ((guint) strtoul (emulation_spec_parser_get_single_attrib (self, node, "offset"), NULL, 0)); - _tmp0_ = NULL; - regarr = (_tmp0_ = (EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &offset), (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)); + regarr = _g_object_ref0 ((EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &offset)); if (regarr == NULL) { - guint* _tmp1_; - EmulationRegisterList* _tmp3_; - EmulationRegisterList* _tmp2_; - _tmp1_ = NULL; - g_hash_table_insert (self->priv->regs, (_tmp1_ = &offset, (_tmp1_ == NULL) ? NULL : _uint_dup (_tmp1_)), emulation_register_list_new ()); - _tmp3_ = NULL; - _tmp2_ = NULL; - regarr = (_tmp3_ = (_tmp2_ = (EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &offset), (_tmp2_ == NULL) ? NULL : g_object_ref (_tmp2_)), (regarr == NULL) ? NULL : (regarr = (g_object_unref (regarr), NULL)), _tmp3_); - } - _tmp4_ = NULL; - reginfo = (_tmp4_ = (EmulationRegisterInfo*) g_hash_table_lookup (self->priv->info, name), (_tmp4_ == NULL) ? NULL : g_object_ref (_tmp4_)); + EmulationRegisterList* _tmp0_; + g_hash_table_insert (self->priv->regs, __uint_dup0 (&offset), emulation_register_list_new ()); + regarr = (_tmp0_ = _g_object_ref0 ((EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &offset)), _g_object_unref0 (regarr), _tmp0_); + } + reginfo = _g_object_ref0 ((EmulationRegisterInfo*) g_hash_table_lookup (self->priv->info, name)); if (reginfo == NULL) { EmulationRegisterInfo* ri; - const char* _tmp5_; char* access; - EmulationRegisterInfo* _tmp8_; - const char* _tmp7_; - EmulationRegisterInfo* _tmp10_; - EmulationRegisterInfo* _tmp9_; + EmulationRegisterInfo* _tmp2_; ri = emulation_register_info_new (); emulation_register_info_set_name (ri, name); emulation_register_info_set_addr (ri, offset); - _tmp5_ = NULL; - access = (_tmp5_ = emulation_spec_parser_get_single_attrib (self, node, "access"), (_tmp5_ == NULL) ? NULL : g_strdup (_tmp5_)); + access = g_strdup (emulation_spec_parser_get_single_attrib (self, node, "access")); { gint i; i = 0; { - gboolean _tmp6_; - _tmp6_ = TRUE; + gboolean _tmp1_; + _tmp1_ = TRUE; while (TRUE) { - if (!_tmp6_) { + if (!_tmp1_) { i++; } - _tmp6_ = FALSE; + _tmp1_ = FALSE; if (!(i < string_get_length (access))) { break; } @@ -2512,50 +2463,37 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml } } } - _tmp8_ = NULL; - _tmp7_ = NULL; - g_hash_table_insert (self->priv->info, (_tmp7_ = name, (_tmp7_ == NULL) ? NULL : g_strdup (_tmp7_)), (_tmp8_ = ri, (_tmp8_ == NULL) ? NULL : g_object_ref (_tmp8_))); - _tmp10_ = NULL; - _tmp9_ = NULL; - reginfo = (_tmp10_ = (_tmp9_ = (EmulationRegisterInfo*) g_hash_table_lookup (self->priv->info, name), (_tmp9_ == NULL) ? NULL : g_object_ref (_tmp9_)), (reginfo == NULL) ? NULL : (reginfo = (g_object_unref (reginfo), NULL)), _tmp10_); - (ri == NULL) ? NULL : (ri = (g_object_unref (ri), NULL)); - access = (g_free (access), NULL); + g_hash_table_insert (self->priv->info, g_strdup (name), _g_object_ref0 (ri)); + reginfo = (_tmp2_ = _g_object_ref0 ((EmulationRegisterInfo*) g_hash_table_lookup (self->priv->info, name)), _g_object_unref0 (reginfo), _tmp2_); + _g_object_unref0 (ri); + _g_free0 (access); } reg = emulation_register_new (); emulation_register_set_addr (reg, offset); - emulation_register_set_num (reg, (_tmp11_ = emulation_register_info_get_count (reginfo), emulation_register_info_set_count (reginfo, _tmp11_ + 1), _tmp11_)); + emulation_register_set_num (reg, (_tmp3_ = emulation_register_info_get_count (reginfo), emulation_register_info_set_count (reginfo, _tmp3_ + 1), _tmp3_)); emulation_register_set_info (reg, reginfo); emulation_register_set_prev (reg, NULL); emulation_register_set_next (reg, NULL); emulation_register_list_append (regarr, reg); - _tmp12_ = NULL; - last_reg = (_tmp12_ = (EmulationRegister*) g_hash_table_lookup (self->priv->regs_last_map, name), (_tmp12_ == NULL) ? NULL : g_object_ref (_tmp12_)); + last_reg = _g_object_ref0 ((EmulationRegister*) g_hash_table_lookup (self->priv->regs_last_map, name)); if (last_reg == NULL) { - EmulationRegister* _tmp14_; - const char* _tmp13_; - _tmp14_ = NULL; - _tmp13_ = NULL; - g_hash_table_insert (self->priv->regs_last_map, (_tmp13_ = name, (_tmp13_ == NULL) ? NULL : g_strdup (_tmp13_)), (_tmp14_ = reg, (_tmp14_ == NULL) ? NULL : g_object_ref (_tmp14_))); + g_hash_table_insert (self->priv->regs_last_map, g_strdup (name), _g_object_ref0 (reg)); } else { - EmulationRegister* _tmp16_; - const char* _tmp15_; emulation_register_set_next (last_reg, reg); emulation_register_set_prev (reg, last_reg); - _tmp16_ = NULL; - _tmp15_ = NULL; - g_hash_table_replace (self->priv->regs_last_map, (_tmp15_ = name, (_tmp15_ == NULL) ? NULL : g_strdup (_tmp15_)), (_tmp16_ = reg, (_tmp16_ == NULL) ? NULL : g_object_ref (_tmp16_))); + g_hash_table_replace (self->priv->regs_last_map, g_strdup (name), _g_object_ref0 (reg)); } { xmlNode* iter; iter = node->children; { - gboolean _tmp17_; - _tmp17_ = TRUE; + gboolean _tmp4_; + _tmp4_ = TRUE; while (TRUE) { - if (!_tmp17_) { + if (!_tmp4_) { iter = iter->next; } - _tmp17_ = FALSE; + _tmp4_ = FALSE; if (!(iter != NULL)) { break; } @@ -2567,10 +2505,9 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml } else { if (_vala_strcmp0 (iter->name, "doc") == 0) { if (emulation_register_info_get_doc (reginfo) == NULL) { - char* _tmp18_; - _tmp18_ = NULL; - emulation_register_info_set_doc (reginfo, _tmp18_ = xmlNodeGetContent (iter)); - _tmp18_ = (g_free (_tmp18_), NULL); + char* _tmp5_; + emulation_register_info_set_doc (reginfo, _tmp5_ = xmlNodeGetContent (iter)); + _g_free0 (_tmp5_); } } else { fprintf (stdout, "Warning: Unknown rules-ng tag '%s' in reg32.\n", iter->name); @@ -2579,36 +2516,33 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml } } } - name = (g_free (name), NULL); - (regarr == NULL) ? NULL : (regarr = (g_object_unref (regarr), NULL)); - (reginfo == NULL) ? NULL : (reginfo = (g_object_unref (reginfo), NULL)); - (reg == NULL) ? NULL : (reg = (g_object_unref (reg), NULL)); - (last_reg == NULL) ? NULL : (last_reg = (g_object_unref (last_reg), NULL)); + _g_free0 (name); + _g_object_unref0 (regarr); + _g_object_unref0 (reginfo); + _g_object_unref0 (reg); + _g_object_unref0 (last_reg); } static void emulation_spec_parser_xmlparse_enum (EmulationSpecParser* self, xmlNode* node) { const char* name; - const char* _tmp0_; - EmulationBitfieldEnum* _tmp1_; + EmulationBitfieldEnum* _tmp0_; EmulationBitfieldEnum* enu; g_return_if_fail (self != NULL); name = emulation_spec_parser_get_single_attrib (self, node, "name"); - _tmp0_ = NULL; - g_hash_table_insert (self->priv->enums_map, (_tmp0_ = name, (_tmp0_ == NULL) ? NULL : g_strdup (_tmp0_)), emulation_bitfield_enum_new ()); - _tmp1_ = NULL; - enu = (_tmp1_ = (EmulationBitfieldEnum*) g_hash_table_lookup (self->priv->enums_map, name), EMULATION_IS_BITFIELD_ENUM (_tmp1_) ? ((EmulationBitfieldEnum*) _tmp1_) : NULL); + g_hash_table_insert (self->priv->enums_map, g_strdup (name), emulation_bitfield_enum_new ()); + enu = (_tmp0_ = (EmulationBitfieldEnum*) g_hash_table_lookup (self->priv->enums_map, name), EMULATION_IS_BITFIELD_ENUM (_tmp0_) ? ((EmulationBitfieldEnum*) _tmp0_) : NULL); { xmlNode* iter; iter = node->children; { - gboolean _tmp2_; - _tmp2_ = TRUE; + gboolean _tmp1_; + _tmp1_ = TRUE; while (TRUE) { - if (!_tmp2_) { + if (!_tmp1_) { iter = iter->next; } - _tmp2_ = FALSE; + _tmp1_ = FALSE; if (!(iter != NULL)) { break; } @@ -2655,24 +2589,21 @@ static void emulation_spec_parser_xmlparse_bitfield (EmulationSpecParser* self, if (_vala_strcmp0 (iter->name, "value") == 0) { if (emulation_bitfield_get_enu (b) == NULL) { EmulationBitfieldEnum* _tmp1_; - _tmp1_ = NULL; emulation_bitfield_set_enu (b, _tmp1_ = emulation_bitfield_enum_new ()); - (_tmp1_ == NULL) ? NULL : (_tmp1_ = (g_object_unref (_tmp1_), NULL)); + _g_object_unref0 (_tmp1_); } emulation_spec_parser_xmlparse_value (self, iter, emulation_bitfield_get_enu (b)); } else { if (_vala_strcmp0 (iter->name, "use-enum") == 0) { EmulationBitfieldEnum* _tmp2_; - _tmp2_ = NULL; emulation_bitfield_set_enu (b, _tmp2_ = emulation_spec_parser_find_enum (self, emulation_spec_parser_get_single_attrib (self, iter, "ref"))); - (_tmp2_ == NULL) ? NULL : (_tmp2_ = (g_object_unref (_tmp2_), NULL)); + _g_object_unref0 (_tmp2_); } else { if (_vala_strcmp0 (iter->name, "doc") == 0) { if (emulation_bitfield_get_doc (b) == NULL) { char* _tmp3_; - _tmp3_ = NULL; emulation_bitfield_set_doc (b, _tmp3_ = xmlNodeGetContent (iter)); - _tmp3_ = (g_free (_tmp3_), NULL); + _g_free0 (_tmp3_); } } else { fprintf (stdout, "Warning: Unknown rules-ng tag '%s' in bitfield.\n", iter->name); @@ -2683,7 +2614,7 @@ static void emulation_spec_parser_xmlparse_bitfield (EmulationSpecParser* self, } } emulation_register_info_append (reginfo, b); - (b == NULL) ? NULL : (b = (g_object_unref (b), NULL)); + _g_object_unref0 (b); } @@ -2711,9 +2642,8 @@ static void emulation_spec_parser_xmlparse_value (EmulationSpecParser* self, xml } if (_vala_strcmp0 (iter->name, "doc") == 0) { char* _tmp1_; - _tmp1_ = NULL; emulation_bitfield_value_set_doc (v, _tmp1_ = xmlNodeGetContent (iter)); - _tmp1_ = (g_free (_tmp1_), NULL); + _g_free0 (_tmp1_); } else { fprintf (stdout, "Warning: Unknown rules-ng tag '%s' in value.\n", iter->name); } @@ -2721,7 +2651,7 @@ static void emulation_spec_parser_xmlparse_value (EmulationSpecParser* self, xml } } emulation_bitfield_enum_append (enu, v); - (v == NULL) ? NULL : (v = (g_object_unref (v), NULL)); + _g_object_unref0 (v); } @@ -2834,9 +2764,9 @@ static void emulation_spec_parser_instance_init (EmulationSpecParser * self) { static void emulation_spec_parser_finalize (EmulationSpecParser* obj) { EmulationSpecParser * self; self = EMULATION_SPEC_PARSER (obj); - (self->priv->groups_map == NULL) ? NULL : (self->priv->groups_map = (g_hash_table_unref (self->priv->groups_map), NULL)); - (self->priv->enums_map == NULL) ? NULL : (self->priv->enums_map = (g_hash_table_unref (self->priv->enums_map), NULL)); - (self->priv->regs_last_map == NULL) ? NULL : (self->priv->regs_last_map = (g_hash_table_unref (self->priv->regs_last_map), NULL)); + _g_hash_table_unref0 (self->priv->groups_map); + _g_hash_table_unref0 (self->priv->enums_map); + _g_hash_table_unref0 (self->priv->regs_last_map); } @@ -2878,24 +2808,22 @@ gboolean emulation_spec_load_xml (EmulationSpec* self, const char* filename, con g_return_val_if_fail (variant != NULL, FALSE); xml = emulation_spec_parser_new (&self->priv->info, &self->priv->regs); result = emulation_spec_parser_parse (xml, filename, variant); - (xml == NULL) ? NULL : (xml = (emulation_spec_parser_unref (xml), NULL)); + _emulation_spec_parser_unref0 (xml); return result; } EmulationRegisterList* emulation_spec_translate_addr (EmulationSpec* self, guint addr) { EmulationRegisterList* result; - EmulationRegisterList* _tmp0_; g_return_val_if_fail (self != NULL, NULL); - _tmp0_ = NULL; - result = (_tmp0_ = (EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &addr), (_tmp0_ == NULL) ? NULL : g_object_ref (_tmp0_)); + result = _g_object_ref0 ((EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &addr)); return result; } EmulationSpec* emulation_spec_construct (GType object_type) { EmulationSpec * self; - self = g_object_newv (object_type, 0, NULL); + self = (EmulationSpec*) g_object_new (object_type, NULL); return self; } @@ -2920,8 +2848,8 @@ static void emulation_spec_instance_init (EmulationSpec * self) { static void emulation_spec_finalize (GObject* obj) { EmulationSpec * self; self = EMULATION_SPEC (obj); - (self->priv->info == NULL) ? NULL : (self->priv->info = (g_hash_table_unref (self->priv->info), NULL)); - (self->priv->regs == NULL) ? NULL : (self->priv->regs = (g_hash_table_unref (self->priv->regs), NULL)); + _g_hash_table_unref0 (self->priv->info); + _g_hash_table_unref0 (self->priv->regs); G_OBJECT_CLASS (emulation_spec_parent_class)->finalize (obj); } -- cgit v1.2.3