summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Sindholt <opensource@zhasha.com>2010-04-09 03:51:13 +0200
committerJoakim Sindholt <opensource@zhasha.com>2010-04-09 03:51:13 +0200
commit59bc73420093f4d6e220b2a429b995417c051bdc (patch)
treefe80ebd61cb3c271082cb9a99c9b25a1e69201eb
parentf506bc267fdedc4880f5d1283084a9e5c9243788 (diff)
registers: attempt to not leak memory
So far it seems ineffective. I have confirmed every object gets destroyed, but it doesn't change the memory statistics at all
-rw-r--r--src/csexport.c71
-rw-r--r--src/csimport.c36
-rw-r--r--src/csview.c24
-rw-r--r--src/main.c108
-rw-r--r--src/main.vala4
-rw-r--r--src/registers.c323
-rw-r--r--src/registers.vala32
7 files changed, 395 insertions, 203 deletions
diff --git a/src/csexport.c b/src/csexport.c
index 986b7d4..43e6e0b 100644
--- a/src/csexport.c
+++ b/src/csexport.c
@@ -170,6 +170,7 @@ typedef struct _EmulationRegisterIteratorClass EmulationRegisterIteratorClass;
typedef struct _EmulationRegister EmulationRegister;
typedef struct _EmulationRegisterClass EmulationRegisterClass;
+#define _emulation_register_iterator_unref0(var) ((var == NULL) ? NULL : (var = (emulation_register_iterator_unref (var), NULL)))
#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))
@@ -249,8 +250,8 @@ enum {
GUI_CS_EXPORT_DUMMY_PROPERTY
};
GType gui_main_window_get_type (void);
-static void _lambda9_ (GtkToggleButton* source, GUICSExport* self);
-static void __lambda9__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
+static void _lambda10_ (GtkToggleButton* source, GUICSExport* self);
+static void __lambda10__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self);
GType emulation_spec_entry_get_type (void);
GType emulation_spec_get_type (void);
EmulationSpecEntry* emulation_spec_entry_dup (const EmulationSpecEntry* self);
@@ -298,6 +299,11 @@ EmulationRegisterList* emulation_spec_translate_addr (EmulationSpec* self, guint
guint emulation_cs_get_length (EmulationCS* self);
guint32 emulation_packet_get (EmulationPacket* self, guint index);
guint emulation_register_list_get_length (EmulationRegisterList* self);
+gpointer emulation_register_iterator_ref (gpointer instance);
+void emulation_register_iterator_unref (gpointer instance);
+GParamSpec* emulation_param_spec_register_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void emulation_value_set_register_iterator (GValue* value, gpointer v_object);
+gpointer emulation_value_get_register_iterator (const GValue* value);
GType emulation_register_iterator_get_type (void);
EmulationRegisterIterator* emulation_register_list_iterator (EmulationRegisterList* self);
gboolean emulation_register_iterator_next (EmulationRegisterIterator* self);
@@ -340,14 +346,14 @@ static gpointer _g_object_ref0 (gpointer self) {
}
-static void _lambda9_ (GtkToggleButton* source, GUICSExport* self) {
+static void _lambda10_ (GtkToggleButton* source, GUICSExport* self) {
g_return_if_fail (source != NULL);
gtk_widget_set_sensitive ((GtkWidget*) self->priv->info_frame, gtk_toggle_button_get_active ((GtkToggleButton*) self->priv->tree_radio));
}
-static void __lambda9__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
- _lambda9_ (_sender, self);
+static void __lambda10__gtk_toggle_button_toggled (GtkToggleButton* _sender, gpointer self) {
+ _lambda10_ (_sender, self);
}
@@ -438,7 +444,7 @@ GUICSExport* gui_cs_export_construct (GType object_type, EmulationCS* cs) {
self->priv->check_pkt3_opcode = (_tmp20_ = _g_object_ref0 ((_tmp19_ = gtk_builder_get_object (builder, "check_pkt3_opcode"), GTK_IS_CHECK_BUTTON (_tmp19_) ? ((GtkCheckButton*) _tmp19_) : NULL)), _g_object_unref0 (self->priv->check_pkt3_opcode), _tmp20_);
self->priv->check_pkt3_opcode_text = (_tmp22_ = _g_object_ref0 ((_tmp21_ = gtk_builder_get_object (builder, "check_pkt3_opcode_text"), GTK_IS_CHECK_BUTTON (_tmp21_) ? ((GtkCheckButton*) _tmp21_) : NULL)), _g_object_unref0 (self->priv->check_pkt3_opcode_text), _tmp22_);
self->priv->check_pkt3_count = (_tmp24_ = _g_object_ref0 ((_tmp23_ = gtk_builder_get_object (builder, "check_pkt3_count"), GTK_IS_CHECK_BUTTON (_tmp23_) ? ((GtkCheckButton*) _tmp23_) : NULL)), _g_object_unref0 (self->priv->check_pkt3_count), _tmp24_);
- g_signal_connect_object ((GtkToggleButton*) self->priv->plain_radio, "toggled", (GCallback) __lambda9__gtk_toggle_button_toggled, self, 0);
+ g_signal_connect_object ((GtkToggleButton*) self->priv->plain_radio, "toggled", (GCallback) __lambda10__gtk_toggle_button_toggled, self, 0);
chip_combo_align = _g_object_ref0 ((_tmp25_ = gtk_builder_get_object (builder, "chip_combo_align"), GTK_IS_ALIGNMENT (_tmp25_) ? ((GtkAlignment*) _tmp25_) : NULL));
gtk_container_add ((GtkContainer*) chip_combo_align, (GtkWidget*) (self->priv->chip_combo = (_tmp26_ = g_object_ref_sink ((GtkComboBox*) gtk_combo_box_new_text ()), _g_object_unref0 (self->priv->chip_combo), _tmp26_)));
{
@@ -664,12 +670,12 @@ static void gui_cs_export_export_tree (GUICSExport* self, FILE* fs) {
guint32 addr;
EmulationRegisterList* _tmp5_;
EmulationRegisterList* list;
- gchar _tmp8_ = '\0';
+ gchar _tmp6_ = '\0';
gchar nextpkg;
+ gchar _tmp7_ = '\0';
+ gboolean _tmp8_ = FALSE;
gchar _tmp9_ = '\0';
- gboolean _tmp10_ = FALSE;
- gchar _tmp11_ = '\0';
- gchar _tmp12_ = '\0';
+ gchar _tmp10_ = '\0';
gchar nextdw;
if (!_tmp4_) {
i++;
@@ -681,46 +687,44 @@ static void gui_cs_export_export_tree (GUICSExport* self, FILE* fs) {
addr = emulation_packet_target_addr (p, i);
_tmp5_ = NULL;
if (addr != 0) {
- EmulationRegisterList* _tmp6_;
- _tmp5_ = (_tmp6_ = emulation_spec_translate_addr (spec, (guint) addr), _g_object_unref0 (_tmp5_), _tmp6_);
+ _tmp5_ = emulation_spec_translate_addr (spec, (guint) addr);
} else {
- EmulationRegisterList* _tmp7_;
- _tmp5_ = (_tmp7_ = NULL, _g_object_unref0 (_tmp5_), _tmp7_);
+ _tmp5_ = NULL;
}
list = _g_object_ref0 (_tmp5_);
if (pkgn != (emulation_cs_get_length (self->priv->cs) - 1)) {
- _tmp8_ = '|';
+ _tmp6_ = '|';
} else {
- _tmp8_ = ' ';
+ _tmp6_ = ' ';
}
- nextpkg = _tmp8_;
+ nextpkg = _tmp6_;
if (list == NULL) {
- _tmp10_ = i != (emulation_packet_get_length (p) - 1);
+ _tmp8_ = i != (emulation_packet_get_length (p) - 1);
} else {
- _tmp10_ = FALSE;
+ _tmp8_ = FALSE;
}
- if (_tmp10_) {
- _tmp9_ = '|';
+ if (_tmp8_) {
+ _tmp7_ = '|';
} else {
- _tmp9_ = '+';
+ _tmp7_ = '+';
}
if (list == NULL) {
- _tmp11_ = '-';
+ _tmp9_ = '-';
} else {
- _tmp11_ = '+';
+ _tmp9_ = '+';
}
- fprintf (fs, "%c %c-%c- 0x%08X", (gint) nextpkg, (gint) _tmp9_, (gint) _tmp11_, (guint) emulation_packet_get (p, i));
+ fprintf (fs, "%c %c-%c- 0x%08X", (gint) nextpkg, (gint) _tmp7_, (gint) _tmp9_, (guint) emulation_packet_get (p, i));
if (addr != 0) {
fprintf (fs, " -> 0x%04X\n", (guint) addr);
} else {
fprintf (fs, "\n");
}
if (i != (emulation_packet_get_length (p) - 1)) {
- _tmp12_ = '|';
+ _tmp10_ = '|';
} else {
- _tmp12_ = ' ';
+ _tmp10_ = ' ';
}
- nextdw = _tmp12_;
+ nextdw = _tmp10_;
if (list != NULL) {
guint length;
guint j;
@@ -731,24 +735,23 @@ static void gui_cs_export_export_tree (GUICSExport* self, FILE* fs) {
_reg_it = emulation_register_list_iterator (list);
while (TRUE) {
EmulationRegister* reg;
- gchar _tmp13_ = '\0';
+ gchar _tmp11_ = '\0';
gchar nextreg;
if (!emulation_register_iterator_next (_reg_it)) {
break;
}
reg = emulation_register_iterator_get (_reg_it);
if ((j++) != (length - 1)) {
- _tmp13_ = '|';
+ _tmp11_ = '|';
} else {
- _tmp13_ = ' ';
+ _tmp11_ = ' ';
}
- nextreg = _tmp13_;
+ nextreg = _tmp11_;
gui_cs_export_print_dest_reg (self, fs, nextpkg, nextdw, nextreg, reg, emulation_packet_get (p, i));
}
- _g_object_unref0 (_reg_it);
+ _emulation_register_iterator_unref0 (_reg_it);
}
}
- _g_object_unref0 (_tmp5_);
_g_object_unref0 (list);
}
}
diff --git a/src/csimport.c b/src/csimport.c
index ae2f422..aff2663 100644
--- a/src/csimport.c
+++ b/src/csimport.c
@@ -114,19 +114,19 @@ enum {
GUI_CS_IMPORT_DUMMY_PROPERTY
};
GType gui_main_window_get_type (void);
-static void _lambda19_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self);
-static void __lambda19__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self);
+static void _lambda20_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self);
+static void __lambda20__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self);
static void gui_cs_import_open_cs (GUICSImport* self, const char* filename);
-static void _lambda20_ (GtkButton* source, GUICSImport* self);
-static void __lambda20__gtk_button_clicked (GtkButton* _sender, gpointer self);
+static void _lambda21_ (GtkButton* source, GUICSImport* self);
+static void __lambda21__gtk_button_clicked (GtkButton* _sender, gpointer self);
static void gui_cs_import_update_ok_button (GUICSImport* self);
static void _gui_cs_import_update_ok_button_gtk_editable_changed (GtkEditable* _sender, gpointer self);
GType emulation_cs_get_type (void);
void gui_main_window_add_cs (GUIMainWindow* self, const char* name, EmulationCS* cs);
EmulationCS* emulation_cs_new (guint32* dwords, guint len);
EmulationCS* emulation_cs_construct (GType object_type, guint32* dwords, guint len);
-static void _lambda21_ (GtkDialog* source, gint id, GUICSImport* self);
-static void __lambda21__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
+static void _lambda22_ (GtkDialog* source, gint id, GUICSImport* self);
+static void __lambda22__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self);
GUICSImport* gui_cs_import_new (void);
GUICSImport* gui_cs_import_construct (GType object_type);
GType emulation_packet_get_type (void);
@@ -150,7 +150,7 @@ static gpointer _g_object_ref0 (gpointer self) {
}
-static void _lambda19_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) {
+static void _lambda20_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeModel* model, GtkTreeIter* iter, GUICSImport* self) {
GtkTreePath* path;
gint* indices;
char* _tmp0_;
@@ -168,12 +168,12 @@ static void _lambda19_ (GtkCellLayout* coll, GtkCellRenderer* celll, GtkTreeMode
}
-static void __lambda19__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) {
- _lambda19_ (cell_layout, cell, tree_model, iter, self);
+static void __lambda20__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) {
+ _lambda20_ (cell_layout, cell, tree_model, iter, self);
}
-static void _lambda20_ (GtkButton* source, GUICSImport* self) {
+static void _lambda21_ (GtkButton* source, GUICSImport* self) {
GtkFileChooserDialog* fc;
g_return_if_fail (source != NULL);
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_OK, NULL, NULL));
@@ -187,8 +187,8 @@ static void _lambda20_ (GtkButton* source, GUICSImport* self) {
}
-static void __lambda20__gtk_button_clicked (GtkButton* _sender, gpointer self) {
- _lambda20_ (_sender, self);
+static void __lambda21__gtk_button_clicked (GtkButton* _sender, gpointer self) {
+ _lambda21_ (_sender, self);
}
@@ -197,7 +197,7 @@ static void _gui_cs_import_update_ok_button_gtk_editable_changed (GtkEditable* _
}
-static void _lambda21_ (GtkDialog* source, gint id, GUICSImport* self) {
+static void _lambda22_ (GtkDialog* source, gint id, GUICSImport* self) {
g_return_if_fail (source != NULL);
if (id == GTK_RESPONSE_OK) {
EmulationCS* _tmp0_;
@@ -208,8 +208,8 @@ static void _lambda21_ (GtkDialog* source, gint id, GUICSImport* self) {
}
-static void __lambda21__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
- _lambda21_ (_sender, response_id, self);
+static void __lambda22__gtk_dialog_response (GtkDialog* _sender, gint response_id, gpointer self) {
+ _lambda22_ (_sender, response_id, self);
}
@@ -268,13 +268,13 @@ GUICSImport* gui_cs_import_construct (GType object_type) {
gtk_window_set_title ((GtkWindow*) self, "Import CS");
col = _g_object_ref0 ((_tmp0_ = gtk_builder_get_object (builder, "value_column"), GTK_IS_TREE_VIEW_COLUMN (_tmp0_) ? ((GtkTreeViewColumn*) _tmp0_) : NULL));
cell = _g_object_ref0 ((_tmp1_ = gtk_builder_get_object (builder, "value_cell"), GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL));
- gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda19__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref);
+ gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda20__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref);
self->priv->meta_store = (_tmp3_ = _g_object_ref0 ((_tmp2_ = gtk_builder_get_object (builder, "meta_store"), GTK_IS_LIST_STORE (_tmp2_) ? ((GtkListStore*) _tmp2_) : NULL)), _g_object_unref0 (self->priv->meta_store), _tmp3_);
gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_CANCEL, (gint) GTK_RESPONSE_CANCEL);
self->priv->ok_button = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_dialog_add_button ((GtkDialog*) self, GTK_STOCK_OK, (gint) GTK_RESPONSE_OK), GTK_IS_BUTTON (_tmp4_) ? ((GtkButton*) _tmp4_) : NULL)), _g_object_unref0 (self->priv->ok_button), _tmp5_);
gtk_widget_set_sensitive ((GtkWidget*) self->priv->ok_button, FALSE);
load_button = _g_object_ref0 ((_tmp6_ = gtk_builder_get_object (builder, "load_button"), GTK_IS_BUTTON (_tmp6_) ? ((GtkButton*) _tmp6_) : NULL));
- g_signal_connect_object (load_button, "clicked", (GCallback) __lambda20__gtk_button_clicked, self, 0);
+ g_signal_connect_object (load_button, "clicked", (GCallback) __lambda21__gtk_button_clicked, self, 0);
self->priv->validcs = FALSE;
self->priv->dwords = (_tmp7_ = g_array_new (FALSE, FALSE, (guint) sizeof (guint32)), _g_array_free0 (self->priv->dwords), _tmp7_);
self->priv->name_entry = (_tmp9_ = _g_object_ref0 ((_tmp8_ = gtk_builder_get_object (builder, "name_entry"), GTK_IS_ENTRY (_tmp8_) ? ((GtkEntry*) _tmp8_) : NULL)), _g_object_unref0 (self->priv->name_entry), _tmp9_);
@@ -286,7 +286,7 @@ GUICSImport* gui_cs_import_construct (GType object_type) {
self->priv->status_label = (_tmp12_ = _g_object_ref0 ((_tmp11_ = gtk_builder_get_object (builder, "status_label"), GTK_IS_LABEL (_tmp11_) ? ((GtkLabel*) _tmp11_) : NULL)), _g_object_unref0 (self->priv->status_label), _tmp12_);
gtk_widget_modify_fg ((GtkWidget*) self->priv->status_label, GTK_STATE_NORMAL, &color);
gtk_box_pack_start ((GtkBox*) ((GtkDialog*) self)->vbox, (GtkWidget*) (_tmp13_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_VBOX (_tmp13_) ? ((GtkVBox*) _tmp13_) : NULL), TRUE, TRUE, (guint) 0);
- g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) __lambda21__gtk_dialog_response, self, 0);
+ g_signal_connect_object ((GtkDialog*) self, "response", (GCallback) __lambda22__gtk_dialog_response, self, 0);
gtk_window_set_default_size ((GtkWindow*) self, 300, 400);
_g_object_unref0 (builder);
_g_object_unref0 (col);
diff --git a/src/csview.c b/src/csview.c
index 27a6709..9660801 100644
--- a/src/csview.c
+++ b/src/csview.c
@@ -414,8 +414,8 @@ EmulationSpecEntry* emulation_spec_entry_dup (const EmulationSpecEntry* self);
void emulation_spec_entry_free (EmulationSpecEntry* self);
void emulation_spec_entry_copy (const EmulationSpecEntry* self, EmulationSpecEntry* dest);
void emulation_spec_entry_destroy (EmulationSpecEntry* self);
-static void _lambda8_ (GtkComboBox* combo, GUICSView* self);
-static void __lambda8__gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
+static void _lambda9_ (GtkComboBox* combo, GUICSView* self);
+static void __lambda9__gtk_combo_box_changed (GtkComboBox* _sender, gpointer self);
GUICSView* gui_cs_view_new (EmulationCS* cs);
GUICSView* gui_cs_view_construct (GType object_type, EmulationCS* cs);
static void gui_cs_view_finalize (GObject* obj);
@@ -552,7 +552,7 @@ static guint gui_cs_list_model_get_variant_count (GUICSListModel* self, guint32
EmulationRegisterList* regs;
guint _tmp0_ = 0U;
g_return_val_if_fail (self != NULL, 0U);
- regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr);
+ regs = _g_object_ref0 (emulation_spec_translate_addr (self->priv->m_spec, (guint) addr));
if (regs == NULL) {
_tmp0_ = (guint) 0;
} else {
@@ -569,7 +569,7 @@ static guint gui_cs_list_model_get_bitfield_count (GUICSListModel* self, guint32
EmulationRegisterList* regs;
guint _tmp0_ = 0U;
g_return_val_if_fail (self != NULL, 0U);
- regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr);
+ regs = _g_object_ref0 (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) {
@@ -760,7 +760,7 @@ static char* gui_cs_list_model_translate_addr (GUICSListModel* self, guint32 add
result = g_strdup ("");
return result;
}
- regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr);
+ regs = _g_object_ref0 (emulation_spec_translate_addr (self->priv->m_spec, (guint) addr));
if (regs == NULL) {
result = g_strdup_printf ("0x%04X", addr);
_g_object_unref0 (regs);
@@ -789,7 +789,7 @@ static const char* gui_cs_list_model_variant_name (GUICSListModel* self, guint32
const char* result;
EmulationRegisterList* regs;
g_return_val_if_fail (self != NULL, NULL);
- regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr);
+ regs = _g_object_ref0 (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)));
@@ -802,7 +802,7 @@ static const char* gui_cs_list_model_bitfield_name (GUICSListModel* self, guint3
const char* result;
EmulationRegisterList* regs;
g_return_val_if_fail (self != NULL, NULL);
- regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr);
+ regs = _g_object_ref0 (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) {
@@ -823,7 +823,7 @@ static guint32 gui_cs_list_model_bitfield_value (GUICSListModel* self, guint32 a
guint high;
guint low;
g_return_val_if_fail (self != NULL, 0U);
- regs = emulation_spec_translate_addr (self->priv->m_spec, (guint) addr);
+ regs = _g_object_ref0 (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;
@@ -2058,14 +2058,14 @@ static glong string_get_length (const char* self) {
}
-static void _lambda8_ (GtkComboBox* combo, GUICSView* self) {
+static void _lambda9_ (GtkComboBox* combo, GUICSView* self) {
g_return_if_fail (combo != NULL);
gtk_tree_view_set_model (self->priv->cs_view, (GtkTreeModel*) self->priv->models[gtk_combo_box_get_active (combo)]);
}
-static void __lambda8__gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
- _lambda8_ (_sender, self);
+static void __lambda9__gtk_combo_box_changed (GtkComboBox* _sender, gpointer self) {
+ _lambda9_ (_sender, self);
}
@@ -2146,7 +2146,7 @@ GUICSView* gui_cs_view_construct (GType object_type, EmulationCS* cs) {
}
}
gtk_combo_box_set_active (chips, (gint) emulation_spec_default);
- g_signal_connect_object (chips, "changed", (GCallback) __lambda8__gtk_combo_box_changed, self, 0);
+ g_signal_connect_object (chips, "changed", (GCallback) __lambda9__gtk_combo_box_changed, self, 0);
chips_box = _g_object_ref0 ((_tmp3_ = gtk_builder_get_object (builder, "chips_box"), GTK_IS_HBOX (_tmp3_) ? ((GtkHBox*) _tmp3_) : NULL));
gtk_box_pack_start ((GtkBox*) chips_box, (GtkWidget*) chips, FALSE, FALSE, (guint) 0);
self->priv->cs_view = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_builder_get_object (builder, "packet_tree"), GTK_IS_TREE_VIEW (_tmp4_) ? ((GtkTreeView*) _tmp4_) : NULL)), _g_object_unref0 (self->priv->cs_view), _tmp5_);
diff --git a/src/main.c b/src/main.c
index e5fa868..59afad0 100644
--- a/src/main.c
+++ b/src/main.c
@@ -123,10 +123,6 @@ struct _EmulationSpecEntry {
};
-static char* gui_main_window_xml_ui;
-static char* gui_main_window_xml_ui = NULL;
-static char* gui_main_window_about_xml_ui;
-static char* gui_main_window_about_xml_ui = NULL;
static gpointer gui_main_window_parent_class = NULL;
extern GUIMainWindow* gui_main;
GUIMainWindow* gui_main = NULL;
@@ -142,6 +138,8 @@ GType gui_main_window_get_type (void);
enum {
GUI_MAIN_WINDOW_DUMMY_PROPERTY
};
+#define GUI_MAIN_WINDOW_xml_ui "\n <?xml version=\"1.0\"?>\n <interface>\n <requires lib=\"gtk+\" version=\"2.16\"/>\n <!-- interface-naming-policy project-wide -->\n <object class=\"GtkUIManager\" id=\"uimanager1\">\n <child>\n <object class=\"GtkActionGroup\" id=\"actiongroup1\">\n <child>\n <object class=\"GtkAction\" id=\"New\">\n <property name=\"name\">New</property>\n <property name=\"stock_id\">gtk-new</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Open\">\n <property name=\"name\">Open</property>\n <property name=\"stock_id\">gtk-open</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Save\">\n <property name=\"name\">Save</property>\n <property name=\"stock_id\">gtk-save</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"SaveAs\">\n <property name=\"name\">SaveAs</property>\n <property name=\"stock_id\">gtk-save-as</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Quit\">\n <property name=\"name\">Quit</property>\n <property name=\"stock_id\">gtk-quit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ViewCS\">\n <property name=\"name\">ViewCS</property>\n <property name=\"label\">_View CS</property>\n <property name=\"tooltip\">View the selected command stream.</property>\n <property name=\"icon_name\">gtk-open</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"RemoveCS\">\n <property name=\"name\">RemoveCS</property>\n <property name=\"label\">_Remove CS</property>\n <property name=\"tooltip\">Remove the selected command stream from the current project.</property>\n <property name=\"icon_name\">gtk-delete</property>\n </object>\n <accelerator key=\"Delete\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ImportCS\">\n <property name=\"name\">ImportCS</property>\n <property name=\"label\">_Import CS</property>\n <property name=\"tooltip\">Import a new command stream to the current project.</property>\n <property name=\"icon_name\">gtk-add</property>\n </object>\n <accelerator key=\"i\" modifiers=\"GDK_CONTROL_MASK\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ExportCS\">\n <property name=\"name\">ExportCS</property>\n <property name=\"label\">_Export CS</property>\n <property name=\"tooltip\">Export the selected command stream to a file.</property>\n <property name=\"icon_name\">gtk-convert</property>\n </object>\n <accelerator key=\"e\" modifiers=\"GDK_CONTROL_MASK\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"About\">\n <property name=\"name\">About</property>\n <property name=\"stock_id\">gtk-about</property>\n </object>\n <accelerator key=\"F1\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"FileMenu\">\n <property name=\"name\">FileMenu</property>\n <property name=\"label\" translatable=\"yes\">_File</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"EditMenu\">\n <property name=\"name\">EditMenu</property>\n <property name=\"label\" translatable=\"yes\">_Edit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"HelpMenu\">\n <property name=\"name\">HelpMenu</property>\n <property name=\"label\" translatable=\"yes\">_Help</property>\n </object>\n </child>\n </object>\n </child>\n <ui>\n <menubar name=\"menubar1\">\n <menu action=\"FileMenu\" name=\"FileMenu\">\n <menuitem action=\"New\" name=\"New\"/>\n <menuitem action=\"Open\" name=\"Open\"/>\n <menuitem action=\"Save\" name=\"Save\"/>\n <menuitem action=\"SaveAs\" name=\"SaveAs\"/>\n <separator/>\n <menuitem action=\"Quit\" name=\"Quit\"/>\n </menu>\n <menu action=\"EditMenu\" name=\"EditMenu\">\n <menuitem action=\"ViewCS\" name=\"ViewCS\"/>\n <menuitem action=\"ImportCS\" name=\"ImportCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </menu>\n <menu action=\"HelpMenu\" name=\"HelpMenu\">\n <menuitem action=\"About\" name=\"About\"/>\n </menu>\n </menubar>\n <toolbar name=\"toolbar1\">\n <toolitem action=\"New\" name=\"New\"/>\n <toolitem action=\"Open\" name=\"Open\"/>\n <toolitem action=\"Save\" name=\"Save\"/>\n <separator/>\n <toolitem action=\"ImportCS\" name=\"ImportCS\"/>\n <toolitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <toolitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </toolbar>\n <popup name=\"popup1\">\n <menuitem action=\"ViewCS\" name=\"ViewCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </popup>\n </ui>\n </object>\n <object class=\"GtkVBox\" id=\"mainbox\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkMenuBar\" id=\"menubar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-menubar\">\n <property name=\"AtkObject::accessible-name\">The menubar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n </packing>\n </child>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkToolbar\" id=\"toolbar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-toolbar\">\n <property name=\"AtkObject::accessible-name\">The toolbar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">1</property>\n </packing>\n </child>\n <child>\n <object class=\"GtkScrolledWindow\" id=\"scrolledwindow1\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"hscrollbar_policy\">automatic</property>\n <property name=\"vscrollbar_policy\">automatic</property>\n <child>\n <object class=\"GtkTreeView\" id=\"cs_list\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"reorderable\">True</property>\n <property name=\"model\">cs_store</property>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"pkts_column\">\n <property name=\"title\">Packets</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"pkts_cell\"/>\n </child>\n </object>\n </child>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"treeviewcolumn1\">\n <property name=\"title\">Name</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"cellrenderertext1\"/>\n <attributes>\n <attribute name=\"text\">0</attribute>\n </attributes>\n </child>\n </object>\n </child>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"position\">2</property>\n </packing>\n </child>\n </object>\n <object class=\"GtkListStore\" id=\"cs_store\">\n <columns>\n <!-- column-name Name -->\n <column type=\"gchararray\"/>\n <!-- column-name CS -->\n <column type=\"GObject\"/>\n </columns>\n </object>\n <object constructor=\"uimanager1\" class=\"GtkMenu\" id=\"popup1\">\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-popup\">\n <property name=\"AtkObject::accessible-name\">The popup menu</property>\n </object>\n </child>\n </object>\n </interface>\n "
+#define GUI_MAIN_WINDOW_about_xml_ui "\n <?xml version=\"1.0\"?>\n <interface>\n <requires lib=\"gtk+\" version=\"2.16\"/>\n <!-- interface-naming-policy project-wide -->\n <object class=\"GtkAboutDialog\" id=\"about_dialog\">\n <property name=\"border_width\">5</property>\n <property name=\"type_hint\">normal</property>\n <property name=\"skip_taskbar_hint\">True</property>\n <property name=\"has_separator\">False</property>\n <property name=\"program_name\">Radeon Simulator</property>\n <property name=\"copyright\" translatable=\"yes\">Copyright &#xA9; 2010 Joakim Sindholt</property>\n <property name=\"comments\" translatable=\"yes\">A simulator for Radeon GPUs</property>\n <property name=\"website\">http://cgit.freedesktop.org/~jsindholt/rsim</property>\n <property name=\"license\" translatable=\"yes\">This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</property>\n <property name=\"authors\">Joakim Sindholt &lt;opensource@zhasha.com&gt;</property>\n <property name=\"logo\">/usr/share/pixmaps/rsim.png</property>\n <property name=\"wrap_license\">True</property>\n <child internal-child=\"vbox\">\n <object class=\"GtkVBox\" id=\"dialog-vbox1\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <property name=\"spacing\">2</property>\n <child internal-child=\"action_area\">\n <object class=\"GtkHButtonBox\" id=\"dialog-action_area1\">\n <property name=\"visible\">True</property>\n <property name=\"layout_style\">end</property>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"pack_type\">end</property>\n <property name=\"position\">0</property>\n </packing>\n </child>\n </object>\n </child>\n </object>\n </interface>\n "
static void gui_main_window_edit_set_sensitive (GUIMainWindow* self, gboolean setting);
GType emulation_cs_get_type (void);
static EmulationCS* gui_main_window_get_selected_cs (GUIMainWindow* self);
@@ -158,27 +156,27 @@ static void gui_main_window_open_csexport (GUIMainWindow* self);
GUIMainWindow* gui_main_window_new (void);
GUIMainWindow* gui_main_window_construct (GType object_type);
guint emulation_cs_get_length (EmulationCS* self);
-static void _lambda10_ (GtkCellLayout* col, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter, GUIMainWindow* self);
-static void __lambda10__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self);
-static void _lambda11_ (GtkAction* source, GUIMainWindow* self);
-static void __lambda11__gtk_action_activate (GtkAction* _sender, gpointer self);
+static void _lambda11_ (GtkCellLayout* col, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter, GUIMainWindow* self);
+static void __lambda11__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self);
+static void _lambda12_ (GtkAction* source, GUIMainWindow* self);
+static void __lambda12__gtk_action_activate (GtkAction* _sender, gpointer self);
GUICSImport* gui_cs_import_new (void);
GUICSImport* gui_cs_import_construct (GType object_type);
GType gui_cs_import_get_type (void);
-static void _lambda12_ (GtkAction* source, GUIMainWindow* self);
-static void __lambda12__gtk_action_activate (GtkAction* _sender, gpointer self);
static void _lambda13_ (GtkAction* source, GUIMainWindow* self);
static void __lambda13__gtk_action_activate (GtkAction* _sender, gpointer self);
static void _lambda14_ (GtkAction* source, GUIMainWindow* self);
static void __lambda14__gtk_action_activate (GtkAction* _sender, gpointer self);
static void _lambda15_ (GtkAction* source, GUIMainWindow* self);
static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self);
-static void _lambda16_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self);
-static void __lambda16__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self);
-static gboolean _lambda17_ (GdkEventButton* event, GUIMainWindow* self);
-static gboolean __lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
-static void _lambda18_ (GtkTreeView* source, GUIMainWindow* self);
-static void __lambda18__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self);
+static void _lambda16_ (GtkAction* source, GUIMainWindow* self);
+static void __lambda16__gtk_action_activate (GtkAction* _sender, gpointer self);
+static void _lambda17_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self);
+static void __lambda17__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self);
+static gboolean _lambda18_ (GdkEventButton* event, GUIMainWindow* self);
+static gboolean __lambda18__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self);
+static void _lambda19_ (GtkTreeView* source, GUIMainWindow* self);
+static void __lambda19__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self);
static void _gtk_main_quit_gtk_object_destroy (GtkObject* _sender, gpointer self);
static GObject * gui_main_window_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void gui_main_window_finalize (GObject* obj);
@@ -302,7 +300,7 @@ static glong string_get_length (const char* self) {
}
-static void _lambda10_ (GtkCellLayout* col, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter, GUIMainWindow* self) {
+static void _lambda11_ (GtkCellLayout* col, GtkCellRenderer* cell, GtkTreeModel* model, GtkTreeIter* iter, GUIMainWindow* self) {
EmulationCS* cs;
char* _tmp0_;
GtkCellRenderer* _tmp1_;
@@ -318,23 +316,23 @@ static void _lambda10_ (GtkCellLayout* col, GtkCellRenderer* cell, GtkTreeModel*
}
-static void __lambda10__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) {
- _lambda10_ (cell_layout, cell, tree_model, iter, self);
+static void __lambda11__gtk_cell_layout_data_func (GtkCellLayout* cell_layout, GtkCellRenderer* cell, GtkTreeModel* tree_model, GtkTreeIter* iter, gpointer self) {
+ _lambda11_ (cell_layout, cell, tree_model, iter, self);
}
-static void _lambda11_ (GtkAction* source, GUIMainWindow* self) {
+static void _lambda12_ (GtkAction* source, GUIMainWindow* self) {
g_return_if_fail (source != NULL);
gui_main_window_open_csview (self);
}
-static void __lambda11__gtk_action_activate (GtkAction* _sender, gpointer self) {
- _lambda11_ (_sender, self);
+static void __lambda12__gtk_action_activate (GtkAction* _sender, gpointer self) {
+ _lambda12_ (_sender, self);
}
-static void _lambda12_ (GtkAction* source, GUIMainWindow* self) {
+static void _lambda13_ (GtkAction* source, GUIMainWindow* self) {
GUICSImport* d;
g_return_if_fail (source != NULL);
d = g_object_ref_sink (gui_cs_import_new ());
@@ -343,34 +341,34 @@ static void _lambda12_ (GtkAction* source, GUIMainWindow* self) {
}
-static void __lambda12__gtk_action_activate (GtkAction* _sender, gpointer self) {
- _lambda12_ (_sender, self);
+static void __lambda13__gtk_action_activate (GtkAction* _sender, gpointer self) {
+ _lambda13_ (_sender, self);
}
-static void _lambda13_ (GtkAction* source, GUIMainWindow* self) {
+static void _lambda14_ (GtkAction* source, GUIMainWindow* self) {
g_return_if_fail (source != NULL);
gui_main_window_open_csexport (self);
}
-static void __lambda13__gtk_action_activate (GtkAction* _sender, gpointer self) {
- _lambda13_ (_sender, self);
+static void __lambda14__gtk_action_activate (GtkAction* _sender, gpointer self) {
+ _lambda14_ (_sender, self);
}
-static void _lambda14_ (GtkAction* source, GUIMainWindow* self) {
+static void _lambda15_ (GtkAction* source, GUIMainWindow* self) {
g_return_if_fail (source != NULL);
gui_main_window_remove_cs (self);
}
-static void __lambda14__gtk_action_activate (GtkAction* _sender, gpointer self) {
- _lambda14_ (_sender, self);
+static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self) {
+ _lambda15_ (_sender, self);
}
-static void _lambda15_ (GtkAction* source, GUIMainWindow* self) {
+static void _lambda16_ (GtkAction* source, GUIMainWindow* self) {
GError * _inner_error_;
GtkBuilder* about;
g_return_if_fail (source != NULL);
@@ -379,7 +377,7 @@ static void _lambda15_ (GtkAction* source, GUIMainWindow* self) {
{
GObject* _tmp0_;
GtkAboutDialog* dlg;
- gtk_builder_add_from_string (about, gui_main_window_about_xml_ui, (gsize) string_get_length (gui_main_window_about_xml_ui), &_inner_error_);
+ gtk_builder_add_from_string (about, GUI_MAIN_WINDOW_about_xml_ui, (gsize) string_get_length (GUI_MAIN_WINDOW_about_xml_ui), &_inner_error_);
if (_inner_error_ != NULL) {
goto __catch4_g_error;
}
@@ -409,24 +407,24 @@ static void _lambda15_ (GtkAction* source, GUIMainWindow* self) {
}
-static void __lambda15__gtk_action_activate (GtkAction* _sender, gpointer self) {
- _lambda15_ (_sender, self);
+static void __lambda16__gtk_action_activate (GtkAction* _sender, gpointer self) {
+ _lambda16_ (_sender, self);
}
-static void _lambda16_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self) {
+static void _lambda17_ (GtkTreePath* path, GtkTreeViewColumn* column, GUIMainWindow* self) {
g_return_if_fail (path != NULL);
g_return_if_fail (column != NULL);
gui_main_window_open_csview (self);
}
-static void __lambda16__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) {
- _lambda16_ (path, column, self);
+static void __lambda17__gtk_tree_view_row_activated (GtkTreeView* _sender, GtkTreePath* path, GtkTreeViewColumn* column, gpointer self) {
+ _lambda17_ (path, column, self);
}
-static gboolean _lambda17_ (GdkEventButton* event, GUIMainWindow* self) {
+static gboolean _lambda18_ (GdkEventButton* event, GUIMainWindow* self) {
gboolean result;
EmulationCS* cs;
gboolean _tmp0_ = FALSE;
@@ -449,19 +447,19 @@ static gboolean _lambda17_ (GdkEventButton* event, GUIMainWindow* self) {
}
-static gboolean __lambda17__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
- return _lambda17_ (event, self);
+static gboolean __lambda18__gtk_widget_button_press_event (GtkWidget* _sender, GdkEventButton* event, gpointer self) {
+ return _lambda18_ (event, self);
}
-static void _lambda18_ (GtkTreeView* source, GUIMainWindow* self) {
+static void _lambda19_ (GtkTreeView* source, GUIMainWindow* self) {
g_return_if_fail (source != NULL);
gui_main_window_edit_set_sensitive (self, gtk_tree_selection_get_selected (gtk_tree_view_get_selection (self->priv->cs_list), NULL, NULL));
}
-static void __lambda18__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) {
- _lambda18_ (_sender, self);
+static void __lambda19__gtk_tree_view_cursor_changed (GtkTreeView* _sender, gpointer self) {
+ _lambda19_ (_sender, self);
}
@@ -503,7 +501,7 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop
GObject* _tmp16_;
builder = gtk_builder_new ();
{
- gtk_builder_add_from_string (builder, gui_main_window_xml_ui, (gsize) string_get_length (gui_main_window_xml_ui), &_inner_error_);
+ gtk_builder_add_from_string (builder, GUI_MAIN_WINDOW_xml_ui, (gsize) string_get_length (GUI_MAIN_WINDOW_xml_ui), &_inner_error_);
if (_inner_error_ != NULL) {
goto __catch3_g_error;
}
@@ -530,22 +528,22 @@ static GObject * gui_main_window_constructor (GType type, guint n_construct_prop
gtk_window_set_title ((GtkWindow*) self, "Radeon Simulator");
col = _g_object_ref0 ((_tmp0_ = gtk_builder_get_object (builder, "pkts_column"), GTK_IS_TREE_VIEW_COLUMN (_tmp0_) ? ((GtkTreeViewColumn*) _tmp0_) : NULL));
cell = _g_object_ref0 ((_tmp1_ = gtk_builder_get_object (builder, "pkts_cell"), GTK_IS_CELL_RENDERER_TEXT (_tmp1_) ? ((GtkCellRendererText*) _tmp1_) : NULL));
- gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda10__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref);
+ gtk_cell_layout_set_cell_data_func ((GtkCellLayout*) col, (GtkCellRenderer*) cell, __lambda11__gtk_cell_layout_data_func, g_object_ref (self), g_object_unref);
self->priv->action_viewcs = (_tmp3_ = _g_object_ref0 ((_tmp2_ = gtk_builder_get_object (builder, "ViewCS"), GTK_IS_ACTION (_tmp2_) ? ((GtkAction*) _tmp2_) : NULL)), _g_object_unref0 (self->priv->action_viewcs), _tmp3_);
self->priv->action_exportcs = (_tmp5_ = _g_object_ref0 ((_tmp4_ = gtk_builder_get_object (builder, "ExportCS"), GTK_IS_ACTION (_tmp4_) ? ((GtkAction*) _tmp4_) : NULL)), _g_object_unref0 (self->priv->action_exportcs), _tmp5_);
self->priv->action_removecs = (_tmp7_ = _g_object_ref0 ((_tmp6_ = gtk_builder_get_object (builder, "RemoveCS"), GTK_IS_ACTION (_tmp6_) ? ((GtkAction*) _tmp6_) : NULL)), _g_object_unref0 (self->priv->action_removecs), _tmp7_);
action_importcs = _g_object_ref0 ((_tmp8_ = gtk_builder_get_object (builder, "ImportCS"), GTK_IS_ACTION (_tmp8_) ? ((GtkAction*) _tmp8_) : NULL));
- g_signal_connect_object (self->priv->action_viewcs, "activate", (GCallback) __lambda11__gtk_action_activate, self, 0);
- g_signal_connect_object (action_importcs, "activate", (GCallback) __lambda12__gtk_action_activate, self, 0);
- g_signal_connect_object (self->priv->action_exportcs, "activate", (GCallback) __lambda13__gtk_action_activate, self, 0);
- g_signal_connect_object (self->priv->action_removecs, "activate", (GCallback) __lambda14__gtk_action_activate, self, 0);
- g_signal_connect_object ((_tmp9_ = gtk_builder_get_object (builder, "About"), GTK_IS_ACTION (_tmp9_) ? ((GtkAction*) _tmp9_) : NULL), "activate", (GCallback) __lambda15__gtk_action_activate, self, 0);
+ g_signal_connect_object (self->priv->action_viewcs, "activate", (GCallback) __lambda12__gtk_action_activate, self, 0);
+ g_signal_connect_object (action_importcs, "activate", (GCallback) __lambda13__gtk_action_activate, self, 0);
+ g_signal_connect_object (self->priv->action_exportcs, "activate", (GCallback) __lambda14__gtk_action_activate, self, 0);
+ g_signal_connect_object (self->priv->action_removecs, "activate", (GCallback) __lambda15__gtk_action_activate, self, 0);
+ g_signal_connect_object ((_tmp9_ = gtk_builder_get_object (builder, "About"), GTK_IS_ACTION (_tmp9_) ? ((GtkAction*) _tmp9_) : NULL), "activate", (GCallback) __lambda16__gtk_action_activate, self, 0);
self->priv->cs_store = (_tmp11_ = _g_object_ref0 ((_tmp10_ = gtk_builder_get_object (builder, "cs_store"), GTK_IS_LIST_STORE (_tmp10_) ? ((GtkListStore*) _tmp10_) : NULL)), _g_object_unref0 (self->priv->cs_store), _tmp11_);
self->priv->cs_list = (_tmp13_ = _g_object_ref0 ((_tmp12_ = gtk_builder_get_object (builder, "cs_list"), GTK_IS_TREE_VIEW (_tmp12_) ? ((GtkTreeView*) _tmp12_) : NULL)), _g_object_unref0 (self->priv->cs_list), _tmp13_);
self->priv->edit_menu = (_tmp15_ = _g_object_ref0 ((_tmp14_ = gtk_builder_get_object (builder, "popup1"), GTK_IS_MENU (_tmp14_) ? ((GtkMenu*) _tmp14_) : NULL)), _g_object_unref0 (self->priv->edit_menu), _tmp15_);
- g_signal_connect_object (self->priv->cs_list, "row-activated", (GCallback) __lambda16__gtk_tree_view_row_activated, self, 0);
- g_signal_connect_object ((GtkWidget*) self->priv->cs_list, "button-press-event", (GCallback) __lambda17__gtk_widget_button_press_event, self, 0);
- g_signal_connect_object (self->priv->cs_list, "cursor-changed", (GCallback) __lambda18__gtk_tree_view_cursor_changed, self, 0);
+ g_signal_connect_object (self->priv->cs_list, "row-activated", (GCallback) __lambda17__gtk_tree_view_row_activated, self, 0);
+ g_signal_connect_object ((GtkWidget*) self->priv->cs_list, "button-press-event", (GCallback) __lambda18__gtk_widget_button_press_event, self, 0);
+ g_signal_connect_object (self->priv->cs_list, "cursor-changed", (GCallback) __lambda19__gtk_tree_view_cursor_changed, self, 0);
gui_main_window_edit_set_sensitive (self, FALSE);
gtk_container_add ((GtkContainer*) self, (_tmp16_ = gtk_builder_get_object (builder, "mainbox"), GTK_IS_WIDGET (_tmp16_) ? ((GtkWidget*) _tmp16_) : NULL));
g_signal_connect ((GtkObject*) self, "destroy", (GCallback) _gtk_main_quit_gtk_object_destroy, NULL);
@@ -588,8 +586,6 @@ static void gui_main_window_class_init (GUIMainWindowClass * klass) {
g_type_class_add_private (klass, sizeof (GUIMainWindowPrivate));
G_OBJECT_CLASS (klass)->constructor = gui_main_window_constructor;
G_OBJECT_CLASS (klass)->finalize = gui_main_window_finalize;
- gui_main_window_xml_ui = g_strdup ("\n <?xml version=\"1.0\"?>\n <interface>\n <requires lib=\"gtk+\" version=\"2.16\"/>\n <!-- interface-naming-policy project-wide -->\n <object class=\"GtkUIManager\" id=\"uimanager1\">\n <child>\n <object class=\"GtkActionGroup\" id=\"actiongroup1\">\n <child>\n <object class=\"GtkAction\" id=\"New\">\n <property name=\"name\">New</property>\n <property name=\"stock_id\">gtk-new</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Open\">\n <property name=\"name\">Open</property>\n <property name=\"stock_id\">gtk-open</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Save\">\n <property name=\"name\">Save</property>\n <property name=\"stock_id\">gtk-save</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"SaveAs\">\n <property name=\"name\">SaveAs</property>\n <property name=\"stock_id\">gtk-save-as</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"Quit\">\n <property name=\"name\">Quit</property>\n <property name=\"stock_id\">gtk-quit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ViewCS\">\n <property name=\"name\">ViewCS</property>\n <property name=\"label\">_View CS</property>\n <property name=\"tooltip\">View the selected command stream.</property>\n <property name=\"icon_name\">gtk-open</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"RemoveCS\">\n <property name=\"name\">RemoveCS</property>\n <property name=\"label\">_Remove CS</property>\n <property name=\"tooltip\">Remove the selected command stream from the current project.</property>\n <property name=\"icon_name\">gtk-delete</property>\n </object>\n <accelerator key=\"Delete\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ImportCS\">\n <property name=\"name\">ImportCS</property>\n <property name=\"label\">_Import CS</property>\n <property name=\"tooltip\">Import a new command stream to the current project.</property>\n <property name=\"icon_name\">gtk-add</property>\n </object>\n <accelerator key=\"i\" modifiers=\"GDK_CONTROL_MASK\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"ExportCS\">\n <property name=\"name\">ExportCS</property>\n <property name=\"label\">_Export CS</property>\n <property name=\"tooltip\">Export the selected command stream to a file.</property>\n <property name=\"icon_name\">gtk-convert</property>\n </object>\n <accelerator key=\"e\" modifiers=\"GDK_CONTROL_MASK\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"About\">\n <property name=\"name\">About</property>\n <property name=\"stock_id\">gtk-about</property>\n </object>\n <accelerator key=\"F1\"/>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"FileMenu\">\n <property name=\"name\">FileMenu</property>\n <property name=\"label\" translatable=\"yes\">_File</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"EditMenu\">\n <property name=\"name\">EditMenu</property>\n <property name=\"label\" translatable=\"yes\">_Edit</property>\n </object>\n </child>\n <child>\n <object class=\"GtkAction\" id=\"HelpMenu\">\n <property name=\"name\">HelpMenu</property>\n <property name=\"label\" translatable=\"yes\">_Help</property>\n </object>\n </child>\n </object>\n </child>\n <ui>\n <menubar name=\"menubar1\">\n <menu action=\"FileMenu\" name=\"FileMenu\">\n <menuitem action=\"New\" name=\"New\"/>\n <menuitem action=\"Open\" name=\"Open\"/>\n <menuitem action=\"Save\" name=\"Save\"/>\n <menuitem action=\"SaveAs\" name=\"SaveAs\"/>\n <separator/>\n <menuitem action=\"Quit\" name=\"Quit\"/>\n </menu>\n <menu action=\"EditMenu\" name=\"EditMenu\">\n <menuitem action=\"ViewCS\" name=\"ViewCS\"/>\n <menuitem action=\"ImportCS\" name=\"ImportCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </menu>\n <menu action=\"HelpMenu\" name=\"HelpMenu\">\n <menuitem action=\"About\" name=\"About\"/>\n </menu>\n </menubar>\n <toolbar name=\"toolbar1\">\n <toolitem action=\"New\" name=\"New\"/>\n <toolitem action=\"Open\" name=\"Open\"/>\n <toolitem action=\"Save\" name=\"Save\"/>\n <separator/>\n <toolitem action=\"ImportCS\" name=\"ImportCS\"/>\n <toolitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <toolitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </toolbar>\n <popup name=\"popup1\">\n <menuitem action=\"ViewCS\" name=\"ViewCS\"/>\n <menuitem action=\"ExportCS\" name=\"ExportCS\"/>\n <separator/>\n <menuitem action=\"RemoveCS\" name=\"RemoveCS\"/>\n </popup>\n </ui>\n </object>\n <object class=\"GtkVBox\" id=\"mainbox\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkMenuBar\" id=\"menubar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-menubar\">\n <property name=\"AtkObject::accessible-name\">The menubar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n </packing>\n </child>\n <child>\n <object constructor=\"uimanager1\" class=\"GtkToolbar\" id=\"toolbar1\">\n <property name=\"visible\">True</property>\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-toolbar\">\n <property name=\"AtkObject::accessible-name\">The toolbar</property>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"position\">1</property>\n </packing>\n </child>\n <child>\n <object class=\"GtkScrolledWindow\" id=\"scrolledwindow1\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"hscrollbar_policy\">automatic</property>\n <property name=\"vscrollbar_policy\">automatic</property>\n <child>\n <object class=\"GtkTreeView\" id=\"cs_list\">\n <property name=\"visible\">True</property>\n <property name=\"can_focus\">True</property>\n <property name=\"reorderable\">True</property>\n <property name=\"model\">cs_store</property>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"pkts_column\">\n <property name=\"title\">Packets</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"pkts_cell\"/>\n </child>\n </object>\n </child>\n <child>\n <object class=\"GtkTreeViewColumn\" id=\"treeviewcolumn1\">\n <property name=\"title\">Name</property>\n <child>\n <object class=\"GtkCellRendererText\" id=\"cellrenderertext1\"/>\n <attributes>\n <attribute name=\"text\">0</attribute>\n </attributes>\n </child>\n </object>\n </child>\n </object>\n </child>\n </object>\n <packing>\n <property name=\"position\">2</property>\n </packing>\n </child>\n </object>\n <object class=\"GtkListStore\" id=\"cs_store\">\n <columns>\n <!-- column-name Name -->\n <column type=\"gchararray\"/>\n <!-- column-name CS -->\n <column type=\"GObject\"/>\n </columns>\n </object>\n <object constructor=\"uimanager1\" class=\"GtkMenu\" id=\"popup1\">\n <child internal-child=\"accessible\">\n <object class=\"AtkObject\" id=\"a11y-popup\">\n <property name=\"AtkObject::accessible-name\">The popup menu</property>\n </object>\n </child>\n </object>\n </interface>\n ");
- gui_main_window_about_xml_ui = g_strdup ("\n <?xml version=\"1.0\"?>\n <interface>\n <requires lib=\"gtk+\" version=\"2.16\"/>\n <!-- interface-naming-policy project-wide -->\n <object class=\"GtkAboutDialog\" id=\"about_dialog\">\n <property name=\"border_width\">5</property>\n <property name=\"type_hint\">normal</property>\n <property name=\"skip_taskbar_hint\">True</property>\n <property name=\"has_separator\">False</property>\n <property name=\"program_name\">Radeon Simulator</property>\n <property name=\"copyright\" translatable=\"yes\">Copyright &#xA9; 2010 Joakim Sindholt</property>\n <property name=\"comments\" translatable=\"yes\">A simulator for Radeon GPUs</property>\n <property name=\"website\">http://cgit.freedesktop.org/~jsindholt/rsim</property>\n <property name=\"license\" translatable=\"yes\">This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program. If not, see &lt;http://www.gnu.org/licenses/&gt;.</property>\n <property name=\"authors\">Joakim Sindholt &lt;opensource@zhasha.com&gt;</property>\n <property name=\"logo\">/usr/share/pixmaps/rsim.png</property>\n <property name=\"wrap_license\">True</property>\n <child internal-child=\"vbox\">\n <object class=\"GtkVBox\" id=\"dialog-vbox1\">\n <property name=\"visible\">True</property>\n <property name=\"orientation\">vertical</property>\n <property name=\"spacing\">2</property>\n <child internal-child=\"action_area\">\n <object class=\"GtkHButtonBox\" id=\"dialog-action_area1\">\n <property name=\"visible\">True</property>\n <property name=\"layout_style\">end</property>\n </object>\n <packing>\n <property name=\"expand\">False</property>\n <property name=\"pack_type\">end</property>\n <property name=\"position\">0</property>\n </packing>\n </child>\n </object>\n </child>\n </object>\n </interface>\n ");
}
diff --git a/src/main.vala b/src/main.vala
index 35bf7af..55b42db 100644
--- a/src/main.vala
+++ b/src/main.vala
@@ -27,7 +27,7 @@ namespace GUI
{
public class MainWindow : Window
{
- private static string xml_ui = """
+ private static const string xml_ui = """
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
@@ -253,7 +253,7 @@ namespace GUI
</interface>
""";
- private static string about_xml_ui = """
+ private static const string about_xml_ui = """
<?xml version="1.0"?>
<interface>
<requires lib="gtk+" version="2.16"/>
diff --git a/src/registers.c b/src/registers.c
index 13bd69b..94711aa 100644
--- a/src/registers.c
+++ b/src/registers.c
@@ -116,6 +116,7 @@ typedef struct _EmulationRegisterPrivate EmulationRegisterPrivate;
typedef struct _EmulationRegisterIterator EmulationRegisterIterator;
typedef struct _EmulationRegisterIteratorClass EmulationRegisterIteratorClass;
typedef struct _EmulationRegisterIteratorPrivate EmulationRegisterIteratorPrivate;
+typedef struct _EmulationParamSpecRegisterIterator EmulationParamSpecRegisterIterator;
#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))
@@ -158,12 +159,12 @@ typedef enum {
} EmulationAccessType;
struct _EmulationBitfieldValue {
- GObject parent_instance;
+ GInitiallyUnowned parent_instance;
EmulationBitfieldValuePrivate * priv;
};
struct _EmulationBitfieldValueClass {
- GObjectClass parent_class;
+ GInitiallyUnownedClass parent_class;
};
struct _EmulationBitfieldValuePrivate {
@@ -173,12 +174,12 @@ struct _EmulationBitfieldValuePrivate {
};
struct _EmulationBitfieldEnum {
- GObject parent_instance;
+ GInitiallyUnowned parent_instance;
EmulationBitfieldEnumPrivate * priv;
};
struct _EmulationBitfieldEnumClass {
- GObjectClass parent_class;
+ GInitiallyUnownedClass parent_class;
};
struct _EmulationBitfieldEnumPrivate {
@@ -186,12 +187,12 @@ struct _EmulationBitfieldEnumPrivate {
};
struct _EmulationBitfield {
- GObject parent_instance;
+ GInitiallyUnowned parent_instance;
EmulationBitfieldPrivate * priv;
};
struct _EmulationBitfieldClass {
- GObjectClass parent_class;
+ GInitiallyUnownedClass parent_class;
};
struct _EmulationBitfieldPrivate {
@@ -222,12 +223,12 @@ struct _EmulationParamSpecBitfieldIterator {
};
struct _EmulationRegisterInfo {
- GObject parent_instance;
+ GInitiallyUnowned parent_instance;
EmulationRegisterInfoPrivate * priv;
};
struct _EmulationRegisterInfoClass {
- GObjectClass parent_class;
+ GInitiallyUnownedClass parent_class;
};
struct _EmulationRegisterInfoPrivate {
@@ -240,12 +241,12 @@ struct _EmulationRegisterInfoPrivate {
};
struct _EmulationRegister {
- GObject parent_instance;
+ GInitiallyUnowned parent_instance;
EmulationRegisterPrivate * priv;
};
struct _EmulationRegisterClass {
- GObjectClass parent_class;
+ GInitiallyUnownedClass parent_class;
};
struct _EmulationRegisterPrivate {
@@ -255,25 +256,31 @@ struct _EmulationRegisterPrivate {
};
struct _EmulationRegisterIterator {
- GObject parent_instance;
+ GTypeInstance parent_instance;
+ volatile int ref_count;
EmulationRegisterIteratorPrivate * priv;
};
struct _EmulationRegisterIteratorClass {
- GObjectClass parent_class;
+ GTypeClass parent_class;
+ void (*finalize) (EmulationRegisterIterator *self);
};
struct _EmulationRegisterIteratorPrivate {
GList* m_list;
};
+struct _EmulationParamSpecRegisterIterator {
+ GParamSpec parent_instance;
+};
+
struct _EmulationRegisterList {
- GObject parent_instance;
+ GInitiallyUnowned parent_instance;
EmulationRegisterListPrivate * priv;
};
struct _EmulationRegisterListClass {
- GObjectClass parent_class;
+ GInitiallyUnownedClass parent_class;
};
struct _EmulationRegisterListPrivate {
@@ -347,6 +354,7 @@ const char* emulation_bitfield_value_get_doc (EmulationBitfieldValue* self);
void emulation_bitfield_value_set_doc (EmulationBitfieldValue* self, const char* value);
guint32 emulation_bitfield_value_get_val (EmulationBitfieldValue* self);
void emulation_bitfield_value_set_val (EmulationBitfieldValue* self, guint32 value);
+static GObject * emulation_bitfield_value_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void emulation_bitfield_value_finalize (GObject* obj);
static void emulation_bitfield_value_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void emulation_bitfield_value_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
@@ -388,6 +396,7 @@ guint8 emulation_bitfield_get_low (EmulationBitfield* self);
void emulation_bitfield_set_low (EmulationBitfield* self, guint8 value);
EmulationBitfieldEnum* emulation_bitfield_get_enu (EmulationBitfield* self);
void emulation_bitfield_set_enu (EmulationBitfield* self, EmulationBitfieldEnum* value);
+static GObject * emulation_bitfield_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void emulation_bitfield_finalize (GObject* obj);
static void emulation_bitfield_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void emulation_bitfield_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
@@ -456,9 +465,15 @@ guint emulation_register_get_num (EmulationRegister* self);
void emulation_register_set_num (EmulationRegister* self, guint value);
EmulationRegisterInfo* emulation_register_get_info (EmulationRegister* self);
void emulation_register_set_info (EmulationRegister* self, EmulationRegisterInfo* value);
+static GObject * emulation_register_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void emulation_register_finalize (GObject* obj);
static void emulation_register_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void emulation_register_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
+gpointer emulation_register_iterator_ref (gpointer instance);
+void emulation_register_iterator_unref (gpointer instance);
+GParamSpec* emulation_param_spec_register_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
+void emulation_value_set_register_iterator (GValue* value, gpointer v_object);
+gpointer emulation_value_get_register_iterator (const GValue* value);
GType emulation_register_iterator_get_type (void);
#define EMULATION_REGISTER_ITERATOR_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), EMULATION_TYPE_REGISTER_ITERATOR, EmulationRegisterIteratorPrivate))
enum {
@@ -468,7 +483,7 @@ EmulationRegisterIterator* emulation_register_iterator_new (GList* l);
EmulationRegisterIterator* emulation_register_iterator_construct (GType object_type, GList* l);
gboolean emulation_register_iterator_next (EmulationRegisterIterator* self);
EmulationRegister* emulation_register_iterator_get (EmulationRegisterIterator* self);
-static void emulation_register_iterator_finalize (GObject* obj);
+static void emulation_register_iterator_finalize (EmulationRegisterIterator* obj);
GType emulation_register_list_get_type (void);
#define EMULATION_REGISTER_LIST_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), EMULATION_TYPE_REGISTER_LIST, EmulationRegisterListPrivate))
enum {
@@ -508,6 +523,8 @@ static void _lambda6_ (void* ptr);
static void __lambda6__gdestroy_notify (void* data);
static void _lambda7_ (void* ptr);
static void __lambda7__gdestroy_notify (void* data);
+static void _lambda8_ (void* ptr);
+static void __lambda8__gdestroy_notify (void* data);
EmulationSpecParser* emulation_spec_parser_new (GHashTable** _info, GHashTable** _regs);
EmulationSpecParser* emulation_spec_parser_construct (GType object_type, GHashTable** _info, GHashTable** _regs);
static inline xmlNode* emulation_spec_parser_find_variant (EmulationSpecParser* self, const char* name);
@@ -552,7 +569,7 @@ GType emulation_access_type_get_type (void) {
EmulationBitfieldValue* emulation_bitfield_value_construct (GType object_type) {
EmulationBitfieldValue * self;
- self = (EmulationBitfieldValue*) g_object_new (object_type, NULL);
+ self = g_object_newv (object_type, 0, NULL);
return self;
}
@@ -609,11 +626,25 @@ void emulation_bitfield_value_set_val (EmulationBitfieldValue* self, guint32 val
}
+static GObject * emulation_bitfield_value_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+ GObject * obj;
+ GObjectClass * parent_class;
+ EmulationBitfieldValue * self;
+ parent_class = G_OBJECT_CLASS (emulation_bitfield_value_parent_class);
+ obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+ self = EMULATION_BITFIELD_VALUE (obj);
+ {
+ }
+ return obj;
+}
+
+
static void emulation_bitfield_value_class_init (EmulationBitfieldValueClass * klass) {
emulation_bitfield_value_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (EmulationBitfieldValuePrivate));
G_OBJECT_CLASS (klass)->get_property = emulation_bitfield_value_get_property;
G_OBJECT_CLASS (klass)->set_property = emulation_bitfield_value_set_property;
+ G_OBJECT_CLASS (klass)->constructor = emulation_bitfield_value_constructor;
G_OBJECT_CLASS (klass)->finalize = emulation_bitfield_value_finalize;
g_object_class_install_property (G_OBJECT_CLASS (klass), EMULATION_BITFIELD_VALUE_NAME, g_param_spec_string ("name", "name", "name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), EMULATION_BITFIELD_VALUE_DOC, g_param_spec_string ("doc", "doc", "doc", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
@@ -639,7 +670,7 @@ GType emulation_bitfield_value_get_type (void) {
static GType emulation_bitfield_value_type_id = 0;
if (emulation_bitfield_value_type_id == 0) {
static const GTypeInfo g_define_type_info = { sizeof (EmulationBitfieldValueClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_bitfield_value_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationBitfieldValue), 0, (GInstanceInitFunc) emulation_bitfield_value_instance_init, NULL };
- emulation_bitfield_value_type_id = g_type_register_static (G_TYPE_OBJECT, "EmulationBitfieldValue", &g_define_type_info, 0);
+ emulation_bitfield_value_type_id = g_type_register_static (G_TYPE_INITIALLY_UNOWNED, "EmulationBitfieldValue", &g_define_type_info, 0);
}
return emulation_bitfield_value_type_id;
}
@@ -792,7 +823,7 @@ GType emulation_bitfield_enum_get_type (void) {
static GType emulation_bitfield_enum_type_id = 0;
if (emulation_bitfield_enum_type_id == 0) {
static const GTypeInfo g_define_type_info = { sizeof (EmulationBitfieldEnumClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_bitfield_enum_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationBitfieldEnum), 0, (GInstanceInitFunc) emulation_bitfield_enum_instance_init, NULL };
- emulation_bitfield_enum_type_id = g_type_register_static (G_TYPE_OBJECT, "EmulationBitfieldEnum", &g_define_type_info, 0);
+ emulation_bitfield_enum_type_id = g_type_register_static (G_TYPE_INITIALLY_UNOWNED, "EmulationBitfieldEnum", &g_define_type_info, 0);
}
return emulation_bitfield_enum_type_id;
}
@@ -800,7 +831,7 @@ GType emulation_bitfield_enum_get_type (void) {
EmulationBitfield* emulation_bitfield_construct (GType object_type) {
EmulationBitfield * self;
- self = (EmulationBitfield*) g_object_new (object_type, NULL);
+ self = g_object_newv (object_type, 0, NULL);
return self;
}
@@ -888,11 +919,25 @@ void emulation_bitfield_set_enu (EmulationBitfield* self, EmulationBitfieldEnum*
}
+static GObject * emulation_bitfield_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+ GObject * obj;
+ GObjectClass * parent_class;
+ EmulationBitfield * self;
+ parent_class = G_OBJECT_CLASS (emulation_bitfield_parent_class);
+ obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+ self = EMULATION_BITFIELD (obj);
+ {
+ }
+ return obj;
+}
+
+
static void emulation_bitfield_class_init (EmulationBitfieldClass * klass) {
emulation_bitfield_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (EmulationBitfieldPrivate));
G_OBJECT_CLASS (klass)->get_property = emulation_bitfield_get_property;
G_OBJECT_CLASS (klass)->set_property = emulation_bitfield_set_property;
+ G_OBJECT_CLASS (klass)->constructor = emulation_bitfield_constructor;
G_OBJECT_CLASS (klass)->finalize = emulation_bitfield_finalize;
g_object_class_install_property (G_OBJECT_CLASS (klass), EMULATION_BITFIELD_NAME, g_param_spec_string ("name", "name", "name", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), EMULATION_BITFIELD_DOC, g_param_spec_string ("doc", "doc", "doc", NULL, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
@@ -926,7 +971,7 @@ GType emulation_bitfield_get_type (void) {
static GType emulation_bitfield_type_id = 0;
if (emulation_bitfield_type_id == 0) {
static const GTypeInfo g_define_type_info = { sizeof (EmulationBitfieldClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_bitfield_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationBitfield), 0, (GInstanceInitFunc) emulation_bitfield_instance_init, NULL };
- emulation_bitfield_type_id = g_type_register_static (G_TYPE_OBJECT, "EmulationBitfield", &g_define_type_info, 0);
+ emulation_bitfield_type_id = g_type_register_static (G_TYPE_INITIALLY_UNOWNED, "EmulationBitfield", &g_define_type_info, 0);
}
return emulation_bitfield_type_id;
}
@@ -1348,7 +1393,7 @@ GType emulation_register_info_get_type (void) {
static GType emulation_register_info_type_id = 0;
if (emulation_register_info_type_id == 0) {
static const GTypeInfo g_define_type_info = { sizeof (EmulationRegisterInfoClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_register_info_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationRegisterInfo), 0, (GInstanceInitFunc) emulation_register_info_instance_init, NULL };
- emulation_register_info_type_id = g_type_register_static (G_TYPE_OBJECT, "EmulationRegisterInfo", &g_define_type_info, 0);
+ emulation_register_info_type_id = g_type_register_static (G_TYPE_INITIALLY_UNOWNED, "EmulationRegisterInfo", &g_define_type_info, 0);
}
return emulation_register_info_type_id;
}
@@ -1414,7 +1459,7 @@ static void emulation_register_info_set_property (GObject * object, guint proper
EmulationRegister* emulation_register_construct (GType object_type) {
EmulationRegister * self;
- self = (EmulationRegister*) g_object_new (object_type, NULL);
+ self = g_object_newv (object_type, 0, NULL);
return self;
}
@@ -1469,11 +1514,25 @@ void emulation_register_set_info (EmulationRegister* self, EmulationRegisterInfo
}
+static GObject * emulation_register_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+ GObject * obj;
+ GObjectClass * parent_class;
+ EmulationRegister * self;
+ parent_class = G_OBJECT_CLASS (emulation_register_parent_class);
+ obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+ self = EMULATION_REGISTER (obj);
+ {
+ }
+ return obj;
+}
+
+
static void emulation_register_class_init (EmulationRegisterClass * klass) {
emulation_register_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (EmulationRegisterPrivate));
G_OBJECT_CLASS (klass)->get_property = emulation_register_get_property;
G_OBJECT_CLASS (klass)->set_property = emulation_register_set_property;
+ G_OBJECT_CLASS (klass)->constructor = emulation_register_constructor;
G_OBJECT_CLASS (klass)->finalize = emulation_register_finalize;
g_object_class_install_property (G_OBJECT_CLASS (klass), EMULATION_REGISTER_ADDR, g_param_spec_uint ("addr", "addr", "addr", 0, G_MAXUINT, 0U, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
g_object_class_install_property (G_OBJECT_CLASS (klass), EMULATION_REGISTER_NUM, g_param_spec_uint ("num", "num", "num", 0, G_MAXUINT, 0U, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
@@ -1497,7 +1556,7 @@ GType emulation_register_get_type (void) {
static GType emulation_register_type_id = 0;
if (emulation_register_type_id == 0) {
static const GTypeInfo g_define_type_info = { sizeof (EmulationRegisterClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_register_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationRegister), 0, (GInstanceInitFunc) emulation_register_instance_init, NULL };
- emulation_register_type_id = g_type_register_static (G_TYPE_OBJECT, "EmulationRegister", &g_define_type_info, 0);
+ emulation_register_type_id = g_type_register_static (G_TYPE_INITIALLY_UNOWNED, "EmulationRegister", &g_define_type_info, 0);
}
return emulation_register_type_id;
}
@@ -1544,8 +1603,8 @@ static void emulation_register_set_property (GObject * object, guint property_id
EmulationRegisterIterator* emulation_register_iterator_construct (GType object_type, GList* l) {
- EmulationRegisterIterator * self;
- self = (EmulationRegisterIterator*) g_object_new (object_type, NULL);
+ EmulationRegisterIterator* self;
+ self = (EmulationRegisterIterator*) g_type_create_instance (object_type);
self->priv->m_list = g_list_first (l);
return self;
}
@@ -1575,35 +1634,148 @@ EmulationRegister* emulation_register_iterator_get (EmulationRegisterIterator* s
}
+static void emulation_value_register_iterator_init (GValue* value) {
+ value->data[0].v_pointer = NULL;
+}
+
+
+static void emulation_value_register_iterator_free_value (GValue* value) {
+ if (value->data[0].v_pointer) {
+ emulation_register_iterator_unref (value->data[0].v_pointer);
+ }
+}
+
+
+static void emulation_value_register_iterator_copy_value (const GValue* src_value, GValue* dest_value) {
+ if (src_value->data[0].v_pointer) {
+ dest_value->data[0].v_pointer = emulation_register_iterator_ref (src_value->data[0].v_pointer);
+ } else {
+ dest_value->data[0].v_pointer = NULL;
+ }
+}
+
+
+static gpointer emulation_value_register_iterator_peek_pointer (const GValue* value) {
+ return value->data[0].v_pointer;
+}
+
+
+static gchar* emulation_value_register_iterator_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+ if (collect_values[0].v_pointer) {
+ EmulationRegisterIterator* 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 = emulation_register_iterator_ref (object);
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ return NULL;
+}
+
+
+static gchar* emulation_value_register_iterator_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
+ EmulationRegisterIterator** 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 = emulation_register_iterator_ref (value->data[0].v_pointer);
+ }
+ return NULL;
+}
+
+
+GParamSpec* emulation_param_spec_register_iterator (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
+ EmulationParamSpecRegisterIterator* spec;
+ g_return_val_if_fail (g_type_is_a (object_type, EMULATION_TYPE_REGISTER_ITERATOR), 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 emulation_value_get_register_iterator (const GValue* value) {
+ g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, EMULATION_TYPE_REGISTER_ITERATOR), NULL);
+ return value->data[0].v_pointer;
+}
+
+
+void emulation_value_set_register_iterator (GValue* value, gpointer v_object) {
+ EmulationRegisterIterator* old;
+ g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, EMULATION_TYPE_REGISTER_ITERATOR));
+ old = value->data[0].v_pointer;
+ if (v_object) {
+ g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, EMULATION_TYPE_REGISTER_ITERATOR));
+ 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;
+ emulation_register_iterator_ref (value->data[0].v_pointer);
+ } else {
+ value->data[0].v_pointer = NULL;
+ }
+ if (old) {
+ emulation_register_iterator_unref (old);
+ }
+}
+
+
static void emulation_register_iterator_class_init (EmulationRegisterIteratorClass * klass) {
emulation_register_iterator_parent_class = g_type_class_peek_parent (klass);
+ EMULATION_REGISTER_ITERATOR_CLASS (klass)->finalize = emulation_register_iterator_finalize;
g_type_class_add_private (klass, sizeof (EmulationRegisterIteratorPrivate));
- G_OBJECT_CLASS (klass)->finalize = emulation_register_iterator_finalize;
}
static void emulation_register_iterator_instance_init (EmulationRegisterIterator * self) {
self->priv = EMULATION_REGISTER_ITERATOR_GET_PRIVATE (self);
+ self->ref_count = 1;
}
-static void emulation_register_iterator_finalize (GObject* obj) {
+static void emulation_register_iterator_finalize (EmulationRegisterIterator* obj) {
EmulationRegisterIterator * self;
self = EMULATION_REGISTER_ITERATOR (obj);
- G_OBJECT_CLASS (emulation_register_iterator_parent_class)->finalize (obj);
}
GType emulation_register_iterator_get_type (void) {
static GType emulation_register_iterator_type_id = 0;
if (emulation_register_iterator_type_id == 0) {
- static const GTypeInfo g_define_type_info = { sizeof (EmulationRegisterIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_register_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationRegisterIterator), 0, (GInstanceInitFunc) emulation_register_iterator_instance_init, NULL };
- emulation_register_iterator_type_id = g_type_register_static (G_TYPE_OBJECT, "EmulationRegisterIterator", &g_define_type_info, 0);
+ static const GTypeValueTable g_define_type_value_table = { emulation_value_register_iterator_init, emulation_value_register_iterator_free_value, emulation_value_register_iterator_copy_value, emulation_value_register_iterator_peek_pointer, "p", emulation_value_register_iterator_collect_value, "p", emulation_value_register_iterator_lcopy_value };
+ static const GTypeInfo g_define_type_info = { sizeof (EmulationRegisterIteratorClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_register_iterator_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationRegisterIterator), 0, (GInstanceInitFunc) emulation_register_iterator_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) };
+ emulation_register_iterator_type_id = g_type_register_fundamental (g_type_fundamental_next (), "EmulationRegisterIterator", &g_define_type_info, &g_define_type_fundamental_info, 0);
}
return emulation_register_iterator_type_id;
}
+gpointer emulation_register_iterator_ref (gpointer instance) {
+ EmulationRegisterIterator* self;
+ self = instance;
+ g_atomic_int_inc (&self->ref_count);
+ return instance;
+}
+
+
+void emulation_register_iterator_unref (gpointer instance) {
+ EmulationRegisterIterator* self;
+ self = instance;
+ if (g_atomic_int_dec_and_test (&self->ref_count)) {
+ EMULATION_REGISTER_ITERATOR_GET_CLASS (self)->finalize (self);
+ g_type_free_instance ((GTypeInstance *) self);
+ }
+}
+
+
EmulationRegisterIterator* emulation_register_list_iterator (EmulationRegisterList* self) {
EmulationRegisterIterator* result;
g_return_val_if_fail (self != NULL, NULL);
@@ -1698,7 +1870,7 @@ GType emulation_register_list_get_type (void) {
static GType emulation_register_list_type_id = 0;
if (emulation_register_list_type_id == 0) {
static const GTypeInfo g_define_type_info = { sizeof (EmulationRegisterListClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) emulation_register_list_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (EmulationRegisterList), 0, (GInstanceInitFunc) emulation_register_list_instance_init, NULL };
- emulation_register_list_type_id = g_type_register_static (G_TYPE_OBJECT, "EmulationRegisterList", &g_define_type_info, 0);
+ emulation_register_list_type_id = g_type_register_static (G_TYPE_INITIALLY_UNOWNED, "EmulationRegisterList", &g_define_type_info, 0);
}
return emulation_register_list_type_id;
}
@@ -1742,6 +1914,11 @@ static void __lambda3__gdestroy_notify (void* data) {
}
+static gpointer _g_hash_table_ref0 (gpointer self) {
+ return self ? g_hash_table_ref (self) : NULL;
+}
+
+
static void _lambda4_ (void* ptr) {
g_free (ptr);
}
@@ -1774,8 +1951,7 @@ static void __lambda6__gdestroy_notify (void* data) {
static void _lambda7_ (void* ptr) {
- void* _tmp0_;
- g_object_unref ((_tmp0_ = ptr, G_IS_OBJECT (_tmp0_) ? ((GObject*) _tmp0_) : NULL));
+ g_free (ptr);
}
@@ -1784,12 +1960,25 @@ static void __lambda7__gdestroy_notify (void* data) {
}
+static void _lambda8_ (void* ptr) {
+ void* _tmp0_;
+ g_object_unref ((_tmp0_ = ptr, G_IS_OBJECT (_tmp0_) ? ((GObject*) _tmp0_) : NULL));
+}
+
+
+static void __lambda8__gdestroy_notify (void* data) {
+ _lambda8_ (data);
+}
+
+
EmulationSpecParser* emulation_spec_parser_construct (GType object_type, GHashTable** _info, GHashTable** _regs) {
EmulationSpecParser* self;
- GHashTable* _tmp0_;
GHashTable* _tmp1_;
- GHashTable* _tmp2_;
+ GHashTable* _tmp0_;
GHashTable* _tmp3_;
+ GHashTable* _tmp2_;
+ GHashTable* _tmp4_;
+ GHashTable* _tmp5_;
if (_info != NULL) {
*_info = NULL;
}
@@ -1797,10 +1986,10 @@ EmulationSpecParser* emulation_spec_parser_construct (GType object_type, GHashTa
*_regs = NULL;
}
self = (EmulationSpecParser*) g_type_create_instance (object_type);
- 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->info = (_tmp1_ = _g_hash_table_ref0 (*_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_)), _g_hash_table_unref0 (self->priv->info), _tmp1_);
+ self->priv->regs = (_tmp3_ = _g_hash_table_ref0 (*_regs = (_tmp2_ = g_hash_table_new_full (g_int_hash, g_int_equal, __lambda4__gdestroy_notify, __lambda5__gdestroy_notify), _g_hash_table_unref0 (*_regs), _tmp2_)), _g_hash_table_unref0 (self->priv->regs), _tmp3_);
+ self->priv->groups_map = (_tmp4_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda6__gdestroy_notify, NULL), _g_hash_table_unref0 (self->priv->groups_map), _tmp4_);
+ self->priv->enums_map = (_tmp5_ = g_hash_table_new_full (g_str_hash, g_str_equal, __lambda7__gdestroy_notify, __lambda8__gdestroy_notify), _g_hash_table_unref0 (self->priv->enums_map), _tmp5_);
return self;
}
@@ -2227,24 +2416,22 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml
gboolean prefound;
EmulationRegisterInfo* reginfo;
EmulationRegister* reg;
- guint _tmp3_;
+ guint _tmp1_;
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));
- regarr = _g_object_ref0 ((EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &offset));
+ regarr = (EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &offset);
if (regarr == NULL) {
- 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_);
+ g_hash_table_insert (self->priv->regs, __uint_dup0 (&offset), g_object_ref_sink (emulation_register_list_new ()));
+ regarr = (EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &offset);
}
prefound = TRUE;
- reginfo = _g_object_ref0 ((EmulationRegisterInfo*) g_hash_table_lookup (self->priv->info, name));
+ reginfo = (EmulationRegisterInfo*) g_hash_table_lookup (self->priv->info, name);
if (reginfo == NULL) {
EmulationRegisterInfo* ri;
char* access;
- EmulationRegisterInfo* _tmp2_;
- ri = emulation_register_info_new ();
+ ri = g_object_ref_sink (emulation_register_info_new ());
emulation_register_info_set_name (ri, name);
emulation_register_info_set_addr (ri, offset);
access = g_strdup (emulation_spec_parser_get_single_attrib (self, node, "access"));
@@ -2252,13 +2439,13 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml
gint i;
i = 0;
{
- gboolean _tmp1_;
- _tmp1_ = TRUE;
+ gboolean _tmp0_;
+ _tmp0_ = TRUE;
while (TRUE) {
- if (!_tmp1_) {
+ if (!_tmp0_) {
i++;
}
- _tmp1_ = FALSE;
+ _tmp0_ = FALSE;
if (!(i < string_get_length (access))) {
break;
}
@@ -2280,14 +2467,14 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml
}
}
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_);
+ reginfo = (EmulationRegisterInfo*) g_hash_table_lookup (self->priv->info, name);
prefound = FALSE;
_g_object_unref0 (ri);
_g_free0 (access);
}
- reg = emulation_register_new ();
+ reg = g_object_ref_sink (emulation_register_new ());
emulation_register_set_addr (reg, offset);
- emulation_register_set_num (reg, (_tmp3_ = emulation_register_info_get_count (reginfo), emulation_register_info_set_count (reginfo, _tmp3_ + 1), _tmp3_));
+ emulation_register_set_num (reg, (_tmp1_ = emulation_register_info_get_count (reginfo), emulation_register_info_set_count (reginfo, _tmp1_ + 1), _tmp1_));
emulation_register_set_info (reg, reginfo);
emulation_register_list_append (regarr, reg);
if (!prefound) {
@@ -2295,13 +2482,13 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml
xmlNode* iter;
iter = node->children;
{
- gboolean _tmp4_;
- _tmp4_ = TRUE;
+ gboolean _tmp2_;
+ _tmp2_ = TRUE;
while (TRUE) {
- if (!_tmp4_) {
+ if (!_tmp2_) {
iter = iter->next;
}
- _tmp4_ = FALSE;
+ _tmp2_ = FALSE;
if (!(iter != NULL)) {
break;
}
@@ -2313,9 +2500,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* _tmp5_;
- emulation_register_info_set_doc (reginfo, _tmp5_ = xmlNodeGetContent (iter));
- _g_free0 (_tmp5_);
+ char* _tmp3_;
+ emulation_register_info_set_doc (reginfo, _tmp3_ = xmlNodeGetContent (iter));
+ _g_free0 (_tmp3_);
}
} else {
fprintf (stdout, "Warning: Unknown rules-ng tag '%s' in reg32.\n", iter->name);
@@ -2326,8 +2513,6 @@ static void emulation_spec_parser_xmlparse_reg32 (EmulationSpecParser* self, xml
}
}
_g_free0 (name);
- _g_object_unref0 (regarr);
- _g_object_unref0 (reginfo);
_g_object_unref0 (reg);
}
@@ -2338,7 +2523,7 @@ static void emulation_spec_parser_xmlparse_enum (EmulationSpecParser* self, xmlN
EmulationBitfieldEnum* enu;
g_return_if_fail (self != NULL);
name = emulation_spec_parser_get_single_attrib (self, node, "name");
- g_hash_table_insert (self->priv->enums_map, g_strdup (name), emulation_bitfield_enum_new ());
+ g_hash_table_insert (self->priv->enums_map, g_strdup (name), g_object_ref_sink (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;
@@ -2372,7 +2557,7 @@ static void emulation_spec_parser_xmlparse_bitfield (EmulationSpecParser* self,
EmulationBitfield* b;
g_return_if_fail (self != NULL);
g_return_if_fail (reginfo != NULL);
- b = emulation_bitfield_new ();
+ b = g_object_ref_sink (emulation_bitfield_new ());
emulation_bitfield_set_name (b, emulation_spec_parser_get_single_attrib (self, node, "name"));
emulation_bitfield_set_high (b, (guint8) strtoul (emulation_spec_parser_get_single_attrib (self, node, "high"), NULL, 0));
emulation_bitfield_set_low (b, (guint8) strtoul (emulation_spec_parser_get_single_attrib (self, node, "low"), NULL, 0));
@@ -2397,7 +2582,7 @@ 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_;
- emulation_bitfield_set_enu (b, _tmp1_ = emulation_bitfield_enum_new ());
+ emulation_bitfield_set_enu (b, _tmp1_ = g_object_ref_sink (emulation_bitfield_enum_new ()));
_g_object_unref0 (_tmp1_);
}
emulation_spec_parser_xmlparse_value (self, iter, emulation_bitfield_get_enu (b));
@@ -2430,7 +2615,7 @@ static void emulation_spec_parser_xmlparse_value (EmulationSpecParser* self, xml
EmulationBitfieldValue* v;
g_return_if_fail (self != NULL);
g_return_if_fail (enu != NULL);
- v = emulation_bitfield_value_new ();
+ v = g_object_ref_sink (emulation_bitfield_value_new ());
emulation_bitfield_value_set_val (v, (guint32) strtoul (emulation_spec_parser_get_single_attrib (self, node, "value"), NULL, 0));
emulation_bitfield_value_set_name (v, emulation_spec_parser_get_single_attrib (self, node, "name"));
emulation_bitfield_value_set_doc (v, "");
@@ -2572,6 +2757,8 @@ static void emulation_spec_parser_instance_init (EmulationSpecParser * self) {
static void emulation_spec_parser_finalize (EmulationSpecParser* obj) {
EmulationSpecParser * self;
self = EMULATION_SPEC_PARSER (obj);
+ _g_hash_table_unref0 (self->priv->info);
+ _g_hash_table_unref0 (self->priv->regs);
_g_hash_table_unref0 (self->priv->groups_map);
_g_hash_table_unref0 (self->priv->enums_map);
}
@@ -2628,7 +2815,7 @@ EmulationSpec* emulation_spec_new (const char* filename, const char* variant) {
EmulationRegisterList* emulation_spec_translate_addr (EmulationSpec* self, guint addr) {
EmulationRegisterList* result;
g_return_val_if_fail (self != NULL, NULL);
- result = _g_object_ref0 ((EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &addr));
+ result = (EmulationRegisterList*) g_hash_table_lookup (self->priv->regs, &addr);
return result;
}
diff --git a/src/registers.vala b/src/registers.vala
index 03a9af5..85a71cd 100644
--- a/src/registers.vala
+++ b/src/registers.vala
@@ -27,14 +27,16 @@ namespace Emulation
WRITE = 1<<1
}
- public class BitfieldValue : Object
+ public class BitfieldValue : InitiallyUnowned
{
public string name { get; internal set; }
public string doc { get; internal set; }
public uint32 val { get; internal set; }
+
+ construct { /* silence compiler warning */ }
}
- public class BitfieldEnum : Object
+ public class BitfieldEnum : InitiallyUnowned
{
private HashTable<uint32?, BitfieldValue> vals;
@@ -46,13 +48,15 @@ namespace Emulation
internal void append(BitfieldValue v) { vals.insert(v.val, v); }
}
- public class Bitfield : Object
+ public class Bitfield : InitiallyUnowned
{
public string name { get; internal set; default = null; }
public string doc { get; internal set; default = null; }
public uint8 high { get; internal set; default = 0; }
public uint8 low { get; internal set; default = 0; }
public BitfieldEnum? enu { get; internal set; default = null; }
+
+ construct { /* silence compiler warning */ }
}
public class BitfieldIterator
@@ -73,7 +77,7 @@ namespace Emulation
}
}
- public class RegisterInfo : Object
+ public class RegisterInfo : InitiallyUnowned
{
public string name { get; internal set; default = null; }
public string doc { get; internal set; default = null; }
@@ -94,14 +98,16 @@ namespace Emulation
internal void append(Bitfield b) { bitfields.append(b); }
}
- public class Register : Object
+ public class Register : InitiallyUnowned
{
public uint addr { get; internal set; }
public uint num { get; internal set; }
public weak RegisterInfo info { get; internal set; }
+
+ construct { /* silence compiler warning */ }
}
- public class RegisterIterator : Object
+ public class RegisterIterator
{
private weak List<Register> m_list;
@@ -119,7 +125,7 @@ namespace Emulation
}
}
- public class RegisterList : Object
+ public class RegisterList : InitiallyUnowned
{
private List<Register> regs;
@@ -137,8 +143,8 @@ namespace Emulation
private class SpecParser
{
- private weak HashTable<string, RegisterInfo> info;
- private weak HashTable<uint?, RegisterList> regs;
+ private HashTable<string, RegisterInfo> info;
+ private HashTable<uint?, RegisterList> regs;
private HashTable<string, Xml.Node *> groups_map;
private HashTable<string, BitfieldEnum> enums_map;
@@ -149,7 +155,7 @@ namespace Emulation
{
info = (_info = new HashTable<string, RegisterInfo>.full(str_hash, str_equal, (ptr) => { delete ptr; }, (ptr) => { (ptr as Object).unref(); }));
regs = (_regs = new HashTable<uint?, RegisterList>.full(int_hash, int_equal, (ptr) => { delete ptr; }, (ptr) => { (ptr as Object).unref(); }));
- groups_map = new HashTable<string, Xml.Node *>(str_hash, str_equal);
+ groups_map = new HashTable<string, Xml.Node *>.full(str_hash, str_equal, (ptr) => { delete ptr; }, null);
enums_map = new HashTable<string, BitfieldEnum>.full(str_hash, str_equal, (ptr) => { delete ptr; }, (ptr) => { (ptr as Object).unref(); });
}
@@ -331,14 +337,14 @@ namespace Emulation
string name = _name + get_single_attrib(node, "name");
offset += (uint)get_single_attrib(node, "offset").to_ulong();
- var regarr = regs.lookup(offset);
+ weak RegisterList regarr = regs.lookup(offset);
if (regarr == null) {
regs.insert(offset, new RegisterList());
regarr = regs.lookup(offset);
}
bool prefound = true;
- RegisterInfo reginfo = info.lookup(name);
+ weak RegisterInfo reginfo = info.lookup(name);
if (reginfo == null) {
var ri = new RegisterInfo();
ri.name = name;
@@ -452,7 +458,7 @@ namespace Emulation
xml.parse(filename, variant);
}
- public RegisterList? translate_addr(uint addr)
+ public weak RegisterList? translate_addr(uint addr)
{
return regs.lookup(addr);
}