#include "php_gtk.h"

#if HAVE_PHP_GTK
#include "php_gtk_api.h"
#include "ext/standard/file.h"
#include "ext/gtk+/phpg_custom_tree_model.h"

static void phpg_about_dialog_activate_link_func_marshal (GtkAboutDialog *about, const gchar *link, gpointer data);
static gboolean phpg_entry_completion_match_func_marshal (GtkEntryCompletion *completion, const gchar *key, GtkTreeIter *iter, gpointer data);
static void phpg_file_filter_add_custom_marshal_add_file(const gchar *filename, int flags, int flag, zval *php_filter_info);
static gboolean phpg_file_filter_add_custom_marshal(GtkFileFilterInfo *filter_info, gpointer data);
static gboolean phpg_tree_view_row_separator_func_marshal (GtkTreeModel *model, GtkTreeIter *iter, gpointer data);
static void phpg_icon_view_foreach_func_marshal (GtkIconView *icon_view, GtkTreePath *path, gpointer data);
static gboolean phpg_toolbar_signal_func_marshal(GtkWidget *widget, gpointer data);
static void phpg_color_selection_change_palette_with_screen_func_marshal(GdkScreen *screen, const GdkColor *colors, gint n_colors);

/* forward declaration */
static PHP_METHOD(GtkImage, get_image);

#undef GDK_DISPLAY
#define GDK_DISPLAY(object) (GDK_DISPLAY_OBJECT(object))

static ZEND_METHOD(GtkContainer, get_children);

extern PHP_GTK_EXPORT_CE(gdkdragcontext_ce);
static GtkTargetEntry* phpg_parse_target_entries(zval *php_targets, int *n_targets TSRMLS_DC);


static void phpg_text_tag_table_foreach_func_marshal (GtkTextTagTable *table, gpointer data);
static gboolean phpg_text_iter_char_predicate_func_marshal (gunichar ch, gpointer data);


#include "zend_interfaces.h"

static void phpg_cell_data_func_marshal(GtkCellLayout *cell_layout, GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer data);
static void phpg_store_set_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_tree);
static gint phpg_tree_iter_compare_func_marshal(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data);
static gboolean phpg_tree_model_filter_visible_func_marshal(GtkTreeModel *model, GtkTreeIter *iter, gpointer data);
static gboolean phpg_tree_view_row_separator_func_marshal (GtkTreeModel *model, GtkTreeIter *iter, gpointer data);
static gboolean phpg_tree_view_column_drop_func_marshal (GtkTreeView *tree_view, GtkTreeViewColumn *column, GtkTreeViewColumn *prev_column, GtkTreeViewColumn *next_column, gpointer data);
static gboolean phpg_tree_view_search_equal_func_marshal (GtkTreeModel *model, gint column, const gchar *key, GtkTreeIter *iter, gpointer data);
static void phpg_tree_selection_foreach_func_marshal (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data);
static gboolean phpg_tree_selection_func_marshal (GtkTreeSelection *selection, GtkTreeModel *model, GtkTreePath *path, gboolean path_currently_selected, gpointer data);


PHP_GTK_EXPORT_CE(gtkcelleditable_ce);
PHP_GTK_EXPORT_CE(gtkcelllayout_ce);
PHP_GTK_EXPORT_CE(gtkeditable_ce);
PHP_GTK_EXPORT_CE(gtkfilechooser_ce);
PHP_GTK_EXPORT_CE(gtktreedragdest_ce);
PHP_GTK_EXPORT_CE(gtktreedragsource_ce);
PHP_GTK_EXPORT_CE(gtktreemodel_ce);
PHP_GTK_EXPORT_CE(gtktreesortable_ce);
PHP_GTK_EXPORT_CE(phpgtkcustomtreemodel_ce);
PHP_GTK_EXPORT_CE(gtkaccelgroup_ce);
PHP_GTK_EXPORT_CE(gtkaccelmap_ce);
PHP_GTK_EXPORT_CE(gtkaccessible_ce);
PHP_GTK_EXPORT_CE(gtkaction_ce);
PHP_GTK_EXPORT_CE(gtkactiongroup_ce);
PHP_GTK_EXPORT_CE(gtkclipboard_ce);
PHP_GTK_EXPORT_CE(gtkentrycompletion_ce);
PHP_GTK_EXPORT_CE(gtkiconfactory_ce);
PHP_GTK_EXPORT_CE(gtkicontheme_ce);
PHP_GTK_EXPORT_CE(gtkliststore_ce);
PHP_GTK_EXPORT_CE(gtkobject_ce);
PHP_GTK_EXPORT_CE(gtkitemfactory_ce);
PHP_GTK_EXPORT_CE(gtkimcontext_ce);
PHP_GTK_EXPORT_CE(gtkfilefilter_ce);
PHP_GTK_EXPORT_CE(gtkimmulticontext_ce);
PHP_GTK_EXPORT_CE(gtkimcontextsimple_ce);
PHP_GTK_EXPORT_CE(gtkcellrenderer_ce);
PHP_GTK_EXPORT_CE(gtkadjustment_ce);
PHP_GTK_EXPORT_CE(gtkcellrenderertoggle_ce);
PHP_GTK_EXPORT_CE(gtkcellrenderertext_ce);
PHP_GTK_EXPORT_CE(gtkcellrendererprogress_ce);
PHP_GTK_EXPORT_CE(gtkcellrenderercombo_ce);
PHP_GTK_EXPORT_CE(gtkcellrendererpixbuf_ce);
PHP_GTK_EXPORT_CE(gtkrcstyle_ce);
PHP_GTK_EXPORT_CE(gtksettings_ce);
PHP_GTK_EXPORT_CE(gtksizegroup_ce);
PHP_GTK_EXPORT_CE(gtkstyle_ce);
PHP_GTK_EXPORT_CE(gtktextbuffer_ce);
PHP_GTK_EXPORT_CE(gtktextchildanchor_ce);
PHP_GTK_EXPORT_CE(gtktextmark_ce);
PHP_GTK_EXPORT_CE(gtktexttag_ce);
PHP_GTK_EXPORT_CE(gtktexttagtable_ce);
PHP_GTK_EXPORT_CE(gtktoggleaction_ce);
PHP_GTK_EXPORT_CE(gtkradioaction_ce);
PHP_GTK_EXPORT_CE(gtktooltips_ce);
PHP_GTK_EXPORT_CE(gtktreemodelfilter_ce);
PHP_GTK_EXPORT_CE(gtktreemodelsort_ce);
PHP_GTK_EXPORT_CE(gtktreeselection_ce);
PHP_GTK_EXPORT_CE(gtktreestore_ce);
PHP_GTK_EXPORT_CE(gtktreeviewcolumn_ce);
PHP_GTK_EXPORT_CE(gtkuimanager_ce);
PHP_GTK_EXPORT_CE(gtkwidget_ce);
PHP_GTK_EXPORT_CE(gtkseparator_ce);
PHP_GTK_EXPORT_CE(gtkruler_ce);
PHP_GTK_EXPORT_CE(gtkvseparator_ce);
PHP_GTK_EXPORT_CE(gtkhseparator_ce);
PHP_GTK_EXPORT_CE(gtkvruler_ce);
PHP_GTK_EXPORT_CE(gtkrange_ce);
PHP_GTK_EXPORT_CE(gtkhruler_ce);
PHP_GTK_EXPORT_CE(gtkscrollbar_ce);
PHP_GTK_EXPORT_CE(gtkprogress_ce);
PHP_GTK_EXPORT_CE(gtkvscrollbar_ce);
PHP_GTK_EXPORT_CE(gtkhscrollbar_ce);
PHP_GTK_EXPORT_CE(gtkscale_ce);
PHP_GTK_EXPORT_CE(gtkpreview_ce);
PHP_GTK_EXPORT_CE(gtkvscale_ce);
PHP_GTK_EXPORT_CE(gtkhscale_ce);
PHP_GTK_EXPORT_CE(gtkprogressbar_ce);
PHP_GTK_EXPORT_CE(gtkoldeditable_ce);
PHP_GTK_EXPORT_CE(gtkmisc_ce);
PHP_GTK_EXPORT_CE(gtkinvisible_ce);
PHP_GTK_EXPORT_CE(gtkpixmap_ce);
PHP_GTK_EXPORT_CE(gtkarrow_ce);
PHP_GTK_EXPORT_CE(gtkimage_ce);
PHP_GTK_EXPORT_CE(gtklabel_ce);
PHP_GTK_EXPORT_CE(gtkentry_ce);
PHP_GTK_EXPORT_CE(gtktipsquery_ce);
PHP_GTK_EXPORT_CE(gtkaccellabel_ce);
PHP_GTK_EXPORT_CE(gtkspinbutton_ce);
PHP_GTK_EXPORT_CE(gtkdrawingarea_ce);
PHP_GTK_EXPORT_CE(gtkcontainer_ce);
PHP_GTK_EXPORT_CE(gtkcurve_ce);
PHP_GTK_EXPORT_CE(gtktreeview_ce);
PHP_GTK_EXPORT_CE(gtktoolbar_ce);
PHP_GTK_EXPORT_CE(gtktextview_ce);
PHP_GTK_EXPORT_CE(gtktable_ce);
PHP_GTK_EXPORT_CE(gtksocket_ce);
PHP_GTK_EXPORT_CE(gtkpaned_ce);
PHP_GTK_EXPORT_CE(gtknotebook_ce);
PHP_GTK_EXPORT_CE(gtkvpaned_ce);
PHP_GTK_EXPORT_CE(gtkhpaned_ce);
PHP_GTK_EXPORT_CE(gtkmenushell_ce);
PHP_GTK_EXPORT_CE(gtklist_ce);
PHP_GTK_EXPORT_CE(gtkmenu_ce);
PHP_GTK_EXPORT_CE(gtkmenubar_ce);
PHP_GTK_EXPORT_CE(gtklayout_ce);
PHP_GTK_EXPORT_CE(gtkiconview_ce);
PHP_GTK_EXPORT_CE(gtkfixed_ce);
PHP_GTK_EXPORT_CE(gtkcellview_ce);
PHP_GTK_EXPORT_CE(gtkbin_ce);
PHP_GTK_EXPORT_CE(gtkbox_ce);
PHP_GTK_EXPORT_CE(gtkwindow_ce);
PHP_GTK_EXPORT_CE(gtkviewport_ce);
PHP_GTK_EXPORT_CE(gtkdialog_ce);
PHP_GTK_EXPORT_CE(gtkplug_ce);
PHP_GTK_EXPORT_CE(gtkcolorselectiondialog_ce);
PHP_GTK_EXPORT_CE(gtkaboutdialog_ce);
PHP_GTK_EXPORT_CE(gtkfilechooserdialog_ce);
PHP_GTK_EXPORT_CE(gtkfileselection_ce);
PHP_GTK_EXPORT_CE(gtkfontselectiondialog_ce);
PHP_GTK_EXPORT_CE(gtkinputdialog_ce);
PHP_GTK_EXPORT_CE(gtkmessagedialog_ce);
PHP_GTK_EXPORT_CE(gtktoolitem_ce);
PHP_GTK_EXPORT_CE(gtkvbox_ce);
PHP_GTK_EXPORT_CE(gtkscrolledwindow_ce);
PHP_GTK_EXPORT_CE(gtkcolorselection_ce);
PHP_GTK_EXPORT_CE(gtkfilechooserwidget_ce);
PHP_GTK_EXPORT_CE(gtkfontselection_ce);
PHP_GTK_EXPORT_CE(gtkgammacurve_ce);
PHP_GTK_EXPORT_CE(gtkseparatortoolitem_ce);
PHP_GTK_EXPORT_CE(gtktoolbutton_ce);
PHP_GTK_EXPORT_CE(gtkitem_ce);
PHP_GTK_EXPORT_CE(gtktoggletoolbutton_ce);
PHP_GTK_EXPORT_CE(gtkmenutoolbutton_ce);
PHP_GTK_EXPORT_CE(gtkradiotoolbutton_ce);
PHP_GTK_EXPORT_CE(gtkhandlebox_ce);
PHP_GTK_EXPORT_CE(gtkmenuitem_ce);
PHP_GTK_EXPORT_CE(gtklistitem_ce);
PHP_GTK_EXPORT_CE(gtktearoffmenuitem_ce);
PHP_GTK_EXPORT_CE(gtkseparatormenuitem_ce);
PHP_GTK_EXPORT_CE(gtkcheckmenuitem_ce);
PHP_GTK_EXPORT_CE(gtkimagemenuitem_ce);
PHP_GTK_EXPORT_CE(gtkradiomenuitem_ce);
PHP_GTK_EXPORT_CE(gtkhbox_ce);
PHP_GTK_EXPORT_CE(gtkframe_ce);
PHP_GTK_EXPORT_CE(gtkstatusbar_ce);
PHP_GTK_EXPORT_CE(gtkcombo_ce);
PHP_GTK_EXPORT_CE(gtkfilechooserbutton_ce);
PHP_GTK_EXPORT_CE(gtkexpander_ce);
PHP_GTK_EXPORT_CE(gtkaspectframe_ce);
PHP_GTK_EXPORT_CE(gtkeventbox_ce);
PHP_GTK_EXPORT_CE(gtkalignment_ce);
PHP_GTK_EXPORT_CE(gtkbutton_ce);
PHP_GTK_EXPORT_CE(gtkcombobox_ce);
PHP_GTK_EXPORT_CE(gtktogglebutton_ce);
PHP_GTK_EXPORT_CE(gtkoptionmenu_ce);
PHP_GTK_EXPORT_CE(gtkcheckbutton_ce);
PHP_GTK_EXPORT_CE(gtkfontbutton_ce);
PHP_GTK_EXPORT_CE(gtkradiobutton_ce);
PHP_GTK_EXPORT_CE(gtkcolorbutton_ce);
PHP_GTK_EXPORT_CE(gtkclist_ce);
PHP_GTK_EXPORT_CE(gtkcomboboxentry_ce);
PHP_GTK_EXPORT_CE(gtkbuttonbox_ce);
PHP_GTK_EXPORT_CE(gtkcalendar_ce);
PHP_GTK_EXPORT_CE(gtkvbuttonbox_ce);
PHP_GTK_EXPORT_CE(gtkhbuttonbox_ce);
PHP_GTK_EXPORT_CE(gtkctree_ce);
PHP_GTK_EXPORT_CE(gtkwindowgroup_ce);
PHP_GTK_EXPORT_CE(gtkborder_ce);
PHP_GTK_EXPORT_CE(gtkiconinfo_ce);
PHP_GTK_EXPORT_CE(gtkiconset_ce);
PHP_GTK_EXPORT_CE(gtkiconsource_ce);
PHP_GTK_EXPORT_CE(gtkrequisition_ce);
PHP_GTK_EXPORT_CE(gtkselectiondata_ce);
PHP_GTK_EXPORT_CE(gtktextattributes_ce);
PHP_GTK_EXPORT_CE(gtktextiter_ce);
PHP_GTK_EXPORT_CE(gtktreeiter_ce);
PHP_GTK_EXPORT_CE(gtktreerowreference_ce);
PHP_GTK_EXPORT_CE(gtkctreenode_ce);
PHP_GTK_EXPORT_CE(gtk_ce);

static PHP_METHOD(Gtk, accel_groups_activate)
{
	zval *object, *php_accel_mods = NULL;
	long accel_key;
	GdkModifierType accel_mods;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OiV", &object, gobject_ce, &accel_key, &php_accel_mods))
		return;

	if (php_accel_mods && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_accel_mods, (gint *)&accel_mods) == FAILURE) {
		return;
	}

    php_retval = gtk_accel_groups_activate(G_OBJECT(PHPG_GOBJECT(object)), (guint)accel_key, accel_mods);
	RETVAL_BOOL(php_retval);
}

#line 760 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, accel_groups_from_object)
{
    zval *php_obj;
    GSList *list, *tmp;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_obj, gobject_ce)) {
        return;
    }

    list = gtk_accel_groups_from_object(PHPG_GOBJECT(php_obj));

    array_init(return_value);

    for (tmp = list; tmp; tmp = tmp->next) {
        zval *item = NULL;
        phpg_gobject_new(&item, G_OBJECT(tmp->data) TSRMLS_CC);
        add_next_index_zval(return_value, item);
    }
}

#line 256 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, accelerator_get_default_mod_mask)
{
	long php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_accelerator_get_default_mod_mask();
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(Gtk, accelerator_get_label)
{
	long accelerator_key;
	GdkModifierType accelerator_mods;
	zval *php_accelerator_mods = NULL;
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iV", &accelerator_key, &php_accelerator_mods))
		return;

	if (php_accelerator_mods && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_accelerator_mods, (gint *)&accelerator_mods) == FAILURE) {
		return;
	}

    php_retval = gtk_accelerator_get_label((guint)accelerator_key, accelerator_mods);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(Gtk, accelerator_name)
{
	long accelerator_key;
	GdkModifierType accelerator_mods;
	zval *php_accelerator_mods = NULL;
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iV", &accelerator_key, &php_accelerator_mods))
		return;

	if (php_accelerator_mods && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_accelerator_mods, (gint *)&accelerator_mods) == FAILURE) {
		return;
	}

    php_retval = gtk_accelerator_name((guint)accelerator_key, accelerator_mods);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}

#line 718 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, accelerator_parse)
{
    char *accel;
    guint keyval;
    GdkModifierType modifier;
    zend_bool free_accel;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &accel, &free_accel))
        return;

    gtk_accelerator_parse((const gchar *)accel, &keyval, &modifier);
    if (free_accel)
        efree(accel);

    php_gtk_build_value(&return_value, "(ii)", keyval, modifier);
}

#line 353 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, accelerator_set_default_mod_mask)
{
	GdkModifierType default_mod_mask;
	zval *php_default_mod_mask = NULL;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_default_mod_mask))
		return;

	if (php_default_mod_mask && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_default_mod_mask, (gint *)&default_mod_mask) == FAILURE) {
		return;
	}

    gtk_accelerator_set_default_mod_mask(default_mod_mask);

}


static PHP_METHOD(Gtk, accelerator_valid)
{
	long keyval;
	GdkModifierType modifiers;
	zval *php_modifiers = NULL;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iV", &keyval, &php_modifiers))
		return;

	if (php_modifiers && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_modifiers, (gint *)&modifiers) == FAILURE) {
		return;
	}

    php_retval = gtk_accelerator_valid((guint)keyval, modifiers);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, bindings_activate)
{
	zval *object, *php_modifiers = NULL;
	long keyval;
	GdkModifierType modifiers;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OiV", &object, gtkobject_ce, &keyval, &php_modifiers))
		return;

	if (php_modifiers && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_modifiers, (gint *)&modifiers) == FAILURE) {
		return;
	}

    php_retval = gtk_bindings_activate(GTK_OBJECT(PHPG_GOBJECT(object)), (guint)keyval, modifiers);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, bindings_activate_event)
{
	zval *object, *php_event;
	GdkEvent *event = NULL;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &object, gtkobject_ce, &php_event, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_event, GDK_TYPE_EVENT, FALSE TSRMLS_CC)) {
        event = (GdkEvent *) PHPG_GBOXED(php_event);
    } else {
        php_error(E_WARNING, "%s::%s() expects event argument to be a valid GdkEvent object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_bindings_activate_event(GTK_OBJECT(PHPG_GOBJECT(object)), (GdkEventKey *)event);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, check_version)
{
	long required_major, required_minor, required_micro;
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iii", &required_major, &required_minor, &required_micro))
		return;

    php_retval = gtk_check_version((guint)required_major, (guint)required_minor, (guint)required_micro);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}


static PHP_METHOD(Gtk, alternative_dialog_button_order)
{
	GdkScreen *screen = NULL;
	zval *php_screen = NULL;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|N", &php_screen, gdkscreen_ce))
		return;
    if (php_screen) {
        if (Z_TYPE_P(php_screen) == IS_NULL)
            screen = NULL;
        else
            screen = GDK_SCREEN(PHPG_GOBJECT(php_screen));
    }

    php_retval = gtk_alternative_dialog_button_order(screen);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, disable_setlocale)
{

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_disable_setlocale();

}


static PHP_METHOD(Gtk, drag_set_default_icon)
{
	zval *colormap, *pixmap, *mask;
	long hot_x, hot_y;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOOii", &colormap, gdkcolormap_ce, &pixmap, gdkpixmap_ce, &mask, gdkpixmap_ce, &hot_x, &hot_y))
		return;

	phpg_warn_deprecated("change the stock pixbuf for GTK_STOCK_DND" TSRMLS_CC);

    gtk_drag_set_default_icon(GDK_COLORMAP(PHPG_GOBJECT(colormap)), GDK_PIXMAP(PHPG_GOBJECT(pixmap)), GDK_PIXMAP(PHPG_GOBJECT(mask)), (gint)hot_x, (gint)hot_y);

}


static PHP_METHOD(Gtk, draw_insertion_cursor)
{
	zval *widget, *drawable, *php_area = NULL, *php_location, *php_direction = NULL;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area, location = { 0, 0, 0, 0 };
	zend_bool is_primary, draw_arrow;
	GtkTextDirection direction;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOVVbVb", &widget, gtkwidget_ce, &drawable, gdkdrawable_ce, &php_area, &php_location, &is_primary, &php_direction, &draw_arrow))
		return;

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
    if (phpg_rectangle_from_zval(php_location, (GdkRectangle*)&location TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects location argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
	if (php_direction && phpg_gvalue_get_enum(GTK_TYPE_TEXT_DIRECTION, php_direction, (gint *)&direction) == FAILURE) {
		return;
	}

    gtk_draw_insertion_cursor(GTK_WIDGET(PHPG_GOBJECT(widget)), GDK_DRAWABLE(PHPG_GOBJECT(drawable)), area, &location, (gboolean)is_primary, direction, (gboolean)draw_arrow);

}


static PHP_METHOD(Gtk, events_pending)
{
	long php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_events_pending();
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(Gtk, get_current_event)
{
	GdkEvent *php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_get_current_event();
	phpg_gboxed_new(&return_value, GDK_TYPE_EVENT, php_retval, TRUE, TRUE TSRMLS_CC);

}

#line 684 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, get_current_event_state)
{
    GdkModifierType state = 0;

    if (gtk_get_current_event_state(&state)) {
        RETURN_LONG(state);
    }
}

#line 572 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, get_current_event_time)
{
	long php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_get_current_event_time();
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(Gtk, get_default_language)
{
	PangoLanguage *php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_get_default_language();
	phpg_gboxed_new(&return_value, PANGO_TYPE_LANGUAGE, php_retval, TRUE, TRUE TSRMLS_CC);

}


static PHP_METHOD(Gtk, grab_get_current)
{
	GtkWidget* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_grab_get_current();
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(Gtk, icon_size_from_name)
{
	char *name;
	zend_bool free_name = FALSE;
	long php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &name, &free_name))
		return;

    php_retval = gtk_icon_size_from_name(name);
	if (free_name) g_free(name);
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(Gtk, icon_size_get_name)
{
	GtkIconSize size;
	zval *php_size = NULL;
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_size))
		return;

	if (php_size && phpg_gvalue_get_enum(GTK_TYPE_ICON_SIZE, php_size, (gint *)&size) == FAILURE) {
		return;
	}

    php_retval = gtk_icon_size_get_name(size);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}

#line 548 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, icon_size_lookup)
{
    gint width, height;
    zval *php_size = NULL;
    GtkIconSize size;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_size))
        return;

    if (php_size && phpg_gvalue_get_enum(GTK_TYPE_ICON_SIZE, php_size, (gint *)&size) == FAILURE) {
        return;
    }

    gtk_icon_size_lookup(size, &width, &height);

    php_gtk_build_value(&return_value, "(ii)", width, height);
}


#line 679 "ext/gtk+/gen_gtk.c"


#line 577 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, icon_size_lookup_for_settings)
{
    gint width, height;
    zval *php_settings;
    zval *php_size = NULL;
    GtkIconSize size;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OV", &php_settings, gtksettings_ce, &php_size))
        return;

    if (php_size && phpg_gvalue_get_enum(GTK_TYPE_ICON_SIZE, php_size, (gint *)&size) == FAILURE)
        return;


    if (gtk_icon_size_lookup_for_settings(GTK_SETTINGS(PHPG_GOBJECT(php_settings)), size, &width, &height)) {
        php_gtk_build_value(&return_value, "(ii)", width, height);
    } else {
        RETURN_FALSE;
    }
}


#line 705 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, icon_size_register)
{
	char *name;
	zend_bool free_name = FALSE;
	long width, height, php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uii", &name, &free_name, &width, &height))
		return;

    php_retval = gtk_icon_size_register(name, (gint)width, (gint)height);
	if (free_name) g_free(name);
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(Gtk, icon_size_register_alias)
{
	char *alias;
	zend_bool free_alias = FALSE;
	GtkIconSize target;
	zval *php_target = NULL;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uV", &alias, &free_alias, &php_target))
		return;

	if (php_target && phpg_gvalue_get_enum(GTK_TYPE_ICON_SIZE, php_target, (gint *)&target) == FAILURE) {
		return;
	}

    gtk_icon_size_register_alias(alias, target);
	if (free_alias) g_free(alias);

}

#line 301 "ext/gtk+/gtk.overrides"

static void phpg_gtk_idle_add_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool with_priority)
{
    gint priority = G_PRIORITY_DEFAULT;
    zval *callback = NULL;
    zval *extra = NULL;
    zval *data = NULL;
    char *callback_filename;
    uint callback_lineno;
    guint handler_id;
    int req_args = with_priority ? 2 : 1;

    if (ZEND_NUM_ARGS() < req_args) {
        php_error(E_WARNING, "%s::%s() requires at least %d arguments, %d given",
                  get_active_class_name(NULL TSRMLS_CC),
                  get_active_function_name(TSRMLS_C), req_args, ZEND_NUM_ARGS());
        return;
    }

    if (with_priority) {
        if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), req_args, &extra, "iV", &priority, &callback))
            return;
    } else {
        if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), req_args, &extra, "V", &callback))
            return;
    }

    callback_filename = zend_get_executed_filename(TSRMLS_C);
    callback_lineno = zend_get_executed_lineno(TSRMLS_C);
    if (!extra) {
        MAKE_STD_ZVAL(extra);
        array_init(extra);
    }
    php_gtk_build_value(&data, "(VNsi)", callback, extra, callback_filename, callback_lineno);

    handler_id = g_idle_add_full(priority, phpg_handler_marshal, data, phpg_destroy_notify);
    RETURN_LONG(handler_id);
}

static PHP_METHOD(Gtk, idle_add)
{
    phpg_gtk_idle_add_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
}

#line 788 "ext/gtk+/gen_gtk.c"


#line 347 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, idle_add_priority)
{
    phpg_gtk_idle_add_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
}

#line 797 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, idle_remove)
{
	long idle_handler_id;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &idle_handler_id))
		return;

    gtk_idle_remove((guint)idle_handler_id);

}


static PHP_METHOD(Gtk, input_remove)
{
	long input_handler_id;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &input_handler_id))
		return;

    gtk_input_remove((guint)input_handler_id);

}


static PHP_METHOD(Gtk, main)
{

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_main();

}


static PHP_METHOD(Gtk, main_do_event)
{
	GdkEvent *event = NULL;
	zval *php_event;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_event, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_event, GDK_TYPE_EVENT, FALSE TSRMLS_CC)) {
        event = (GdkEvent *) PHPG_GBOXED(php_event);
    } else {
        php_error(E_WARNING, "%s::%s() expects event argument to be a valid GdkEvent object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_main_do_event(event);

}


static PHP_METHOD(Gtk, main_iteration)
{
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_main_iteration();
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, main_iteration_do)
{
	zend_bool blocking = TRUE;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|b", &blocking))
		return;

    php_retval = gtk_main_iteration_do((gboolean)blocking);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, main_level)
{
	long php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_main_level();
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(Gtk, main_quit)
{

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_main_quit();

}

#line 380 "ext/gtk+/gtk.overrides"

static PHP_METHOD(Gtk, quit_add)
{
    guint main_level;
    zval *callback = NULL;
    zval *extra;
    zval *data = NULL;
    char *callback_filename;
    uint callback_lineno;
    guint handler_id;

    if (ZEND_NUM_ARGS() < 2) {
        php_error(E_WARNING, "%s::%s() requires at least 2 arguments, %d given",
                  get_active_class_name(NULL TSRMLS_CC),
                  get_active_function_name(TSRMLS_C), ZEND_NUM_ARGS());
        return;
    }

    if (!php_gtk_parse_args(2, "iV", &main_level, &callback))
        return;

    callback_filename = zend_get_executed_filename(TSRMLS_C);
    callback_lineno = zend_get_executed_lineno(TSRMLS_C);
    extra = php_gtk_func_args_as_hash(ZEND_NUM_ARGS(), 2, ZEND_NUM_ARGS());
    if (!extra) {
        MAKE_STD_ZVAL(extra);
        array_init(extra);
    }
    php_gtk_build_value(&data, "(VNsi)", callback, extra, callback_filename, callback_lineno);

    handler_id = gtk_quit_add_full(main_level, phpg_handler_marshal, NULL, data, phpg_destroy_notify);
    RETURN_LONG(handler_id);
}

#line 939 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, quit_remove)
{
	long quit_handler_id;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &quit_handler_id))
		return;

    gtk_quit_remove((guint)quit_handler_id);

}


static PHP_METHOD(Gtk, rc_add_default_file)
{
	char *filename;
	zend_bool free_filename = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &filename, &free_filename))
		return;

    gtk_rc_add_default_file(filename);
	if (free_filename) g_free(filename);

}


static PHP_METHOD(Gtk, rc_find_module_in_path)
{
	char *module_file;
	zend_bool free_module_file = FALSE, free_result;
	gchar *php_retval, *cp_ret;
	gsize cp_len;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &module_file, &free_module_file))
		return;

    php_retval = gtk_rc_find_module_in_path(module_file);
	if (free_module_file) g_free(module_file);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}

#line 601 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, rc_get_default_files)
{
    gchar **ret;
    gchar *cp_str;
    gsize cp_len;
    zend_bool free_cp_str;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    ret = gtk_rc_get_default_files();
    if (ret) {
        array_init(return_value);
        while (*ret) {
            cp_str = phpg_from_utf8(*ret, strlen(*ret), &cp_len, &free_cp_str TSRMLS_CC);
            if (cp_str) {
                add_next_index_stringl(return_value, cp_str, cp_len, !free_cp_str);
            } else {
                zval_dtor(return_value);
                RETURN_NULL();
            }
            *ret++;
        }
    } else {
        RETURN_NULL();
    }
}


#line 1025 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, rc_get_im_module_file)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_rc_get_im_module_file();
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(Gtk, rc_get_im_module_path)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_rc_get_im_module_path();
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(Gtk, rc_get_module_dir)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_rc_get_module_dir();
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(Gtk, rc_get_style_by_paths)
{
	zval *settings, *php_type = NULL;
	char *widget_path, *class_path;
	zend_bool free_widget_path = FALSE, free_class_path = FALSE;
	GType type;
	GtkStyle* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OuuV", &settings, gtksettings_ce, &widget_path, &free_widget_path, &class_path, &free_class_path, &php_type))
		return;
    if ((type = phpg_gtype_from_zval(php_type)) == 0) {
        return;
    }

    php_retval = gtk_rc_get_style_by_paths(GTK_SETTINGS(PHPG_GOBJECT(settings)), widget_path, class_path, type);
	if (free_widget_path) g_free(widget_path);
	if (free_class_path) g_free(class_path);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(Gtk, rc_get_theme_dir)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_rc_get_theme_dir();
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(Gtk, rc_parse)
{
	char *filename;
	zend_bool free_filename = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &filename, &free_filename))
		return;

    gtk_rc_parse(filename);
	if (free_filename) g_free(filename);

}


static PHP_METHOD(Gtk, rc_parse_string)
{
	char *rc_string;
	zend_bool free_rc_string = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &rc_string, &free_rc_string))
		return;

    gtk_rc_parse_string(rc_string);
	if (free_rc_string) g_free(rc_string);

}


static PHP_METHOD(Gtk, rc_reparse_all)
{
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_rc_reparse_all();
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, rc_reparse_all_for_settings)
{
	zval *settings;
	zend_bool force_load;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Ob", &settings, gtksettings_ce, &force_load))
		return;

    php_retval = gtk_rc_reparse_all_for_settings(GTK_SETTINGS(PHPG_GOBJECT(settings)), (gboolean)force_load);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(Gtk, rc_reset_styles)
{
	zval *settings;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &settings, gtksettings_ce))
		return;

    gtk_rc_reset_styles(GTK_SETTINGS(PHPG_GOBJECT(settings)));

}


static PHP_METHOD(Gtk, selection_owner_set_for_display)
{
	zval *display, *php_widget, *php_selection = NULL;
	GtkWidget *widget = NULL;
	GdkAtom selection;
	long time = GDK_CURRENT_TIME;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ONV|i", &display, gdkdisplay_ce, &php_widget, gtkwidget_ce, &php_selection, &time))
		return;
    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    selection = phpg_gdkatom_from_zval(php_selection TSRMLS_CC);
    if (selection == NULL) {
        php_error(E_WARNING, "%s::%s() expects selection argument to be a valid GdkAtom object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_selection_owner_set_for_display(GDK_DISPLAY(PHPG_GOBJECT(display)), widget, selection, (guint32)time);
	RETVAL_BOOL(php_retval);
}

#line 632 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, stock_list_ids)
{
    GSList *ids;

    array_init(return_value);
    for (ids = gtk_stock_list_ids(); ids; ids = ids->next) {
        add_next_index_string(return_value, (char *) ids->data, 1);
        g_free(ids->data);
    }
    g_slist_free(ids);
}

#line 1253 "ext/gtk+/gen_gtk.c"


#line 653 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, stock_lookup)
{
    char *stock_id;
    GtkStockItem item;
    gchar *cp = NULL;
    gsize cp_len = 0;
    zend_bool free_cp = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "s", &stock_id))
        return;

    if (gtk_stock_lookup(stock_id, &item)) {
        cp = phpg_from_utf8(item.label, strlen(item.label), &cp_len, &free_cp TSRMLS_CC);
        if (cp) {
            item.label = cp;
        } else {
            php_error(E_WARNING, "Could not convert item label from UTF-8");
            return;
        }
        php_gtk_build_value(&return_value, "(ssiis)", item.stock_id, item.label,
                            item.modifier, item.keyval, item.translation_domain);
        if (free_cp) {
            g_free(cp);
        }
    } else {
        return;
    }
}

#line 1286 "ext/gtk+/gen_gtk.c"


#line 237 "ext/gtk+/gtk.overrides"

static void phpg_gtk_timeout_add_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool with_priority)
{
    guint interval;
    gint priority = G_PRIORITY_DEFAULT;
    zval *callback = NULL;
    zval *extra;
    zval *data = NULL;
    char *callback_filename;
    uint callback_lineno;
    guint handler_id;
    int req_args = with_priority ? 3 : 2;

    if (ZEND_NUM_ARGS() < req_args) {
        php_error(E_WARNING, "%s::%s() requires at least %d arguments, %d given",
                  get_active_class_name(NULL TSRMLS_CC),
                  get_active_function_name(TSRMLS_C), req_args, ZEND_NUM_ARGS());
        return;
    }

    if (with_priority) {
        if (!php_gtk_parse_args(req_args, "iiV", &interval, &priority, &callback))
            return;
    } else {
        if (!php_gtk_parse_args(req_args, "iV", &interval, &callback))
            return;
    }

    callback_filename = zend_get_executed_filename(TSRMLS_C);
    callback_lineno = zend_get_executed_lineno(TSRMLS_C);
    extra = php_gtk_func_args_as_hash(ZEND_NUM_ARGS(), req_args, ZEND_NUM_ARGS());
    if (!extra) {
        MAKE_STD_ZVAL(extra);
        array_init(extra);
    }
    php_gtk_build_value(&data, "(VNsi)", callback, extra, callback_filename, callback_lineno);

    handler_id = g_timeout_add_full(priority, interval, phpg_handler_marshal, data, phpg_destroy_notify);
    RETURN_LONG(handler_id);
}

static PHP_METHOD(Gtk, timeout_add)
{
    phpg_gtk_timeout_add_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
}

#line 1336 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(Gtk, timeout_remove)
{
	long timeout_handler_id;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &timeout_handler_id))
		return;

    gtk_timeout_remove((guint)timeout_handler_id);

}

#line 695 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, tooltips_data_get)
{
    zval *widget;
    GtkTooltipsData *data;
    zval *tooltips = NULL, *tt_widget = NULL;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &widget, gtkwidget_ce)) {
        return;
    }

    data = gtk_tooltips_data_get(GTK_WIDGET(PHPG_GOBJECT(widget)));
    if (!data) {
        return;
    }

    phpg_gobject_new(&tooltips, (GObject *) data->tooltips TSRMLS_CC);
    phpg_gobject_new(&tt_widget, (GObject *) data->widget TSRMLS_CC);
    php_gtk_build_value(&return_value, "(NNuu)", tooltips, tt_widget, data->tip_text,
                        data->tip_private);
}

#line 1373 "ext/gtk+/gen_gtk.c"


#line 294 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, timeout_add_priority)
{
    phpg_gtk_timeout_add_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
}

#line 1382 "ext/gtk+/gen_gtk.c"


#line 354 "ext/gtk+/gtk.overrides"
static PHP_METHOD(Gtk, get_version)
{
    guint major;
    guint minor;
    guint micro;
    char version[256];

    major = GTK_MAJOR_VERSION;
    minor = GTK_MINOR_VERSION;
    micro = GTK_MICRO_VERSION;

    snprintf(version, sizeof(version), "GTK %d.%d.%d", major, minor, micro);

    RETURN_STRING(version, 1);
}

#line 1402 "ext/gtk+/gen_gtk.c"


#line 416 "ext/gtk+/gtk.overrides"

static gboolean phpg_iowatch_marshal(GIOChannel *source, GIOCondition condition, gpointer user_data)
{
    zval *callback_data = (zval *) user_data;
    zval **callback, **extra = NULL, **stream_rsrc;
    zval **callback_filename = NULL, **callback_lineno = NULL;
    zval ***args = NULL, *z_condition = NULL;
    int n_args = 0;
    zval *retval = NULL;
    char *callback_name;
    gboolean result;
    TSRMLS_FETCH();

    /* Callback is always passed as the first element. */
    zend_hash_index_find(Z_ARRVAL_P(callback_data), 0, (void **)&callback);
    zend_hash_index_find(Z_ARRVAL_P(callback_data), 1, (void **)&stream_rsrc);
    zend_hash_index_find(Z_ARRVAL_P(callback_data), 2, (void **)&extra);
    zend_hash_index_find(Z_ARRVAL_P(callback_data), 3, (void **)&callback_filename);
    zend_hash_index_find(Z_ARRVAL_P(callback_data), 4, (void **)&callback_lineno);

    if (!zend_is_callable(*callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke handler callback '%s' specified in %s on line %ld", callback_name, Z_STRVAL_PP(callback_filename), Z_LVAL_PP(callback_lineno));
        efree(callback_name);
        return 0;
    }

    args = php_gtk_hash_as_array_offset(*extra, 2, &n_args);
    args[0] = stream_rsrc;
    MAKE_STD_ZVAL(z_condition);
    ZVAL_LONG(z_condition, condition);
    args[1] = &z_condition;

    call_user_function_ex(EG(function_table), NULL, *callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&z_condition);

    result = FALSE;
    if (retval) {
        result = zval_is_true(retval);
        zval_ptr_dtor(&retval);
    }

    efree(callback_name);
    if (args)
        efree(args);

    phpg_handle_marshaller_exception(TSRMLS_C);
    return result;
}

static void phpg_io_add_watch_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool with_priority)
{
    gint priority = G_PRIORITY_DEFAULT;
    GIOCondition condition;
    zval *stream_rsrc = NULL;
    zval *callback = NULL;
    zval *extra = NULL;
    zval *data = NULL;
    char *callback_filename;
    uint callback_lineno;
    guint handler_id;
    GIOChannel *channel = NULL;
    php_stream *stream = NULL;
    int fd;
    int req_args = with_priority ? 4 : 3;

    if (ZEND_NUM_ARGS() < req_args) {
        php_error(E_WARNING, "%s::%s() requires at least %d arguments, %d given",
                  get_active_class_name(NULL TSRMLS_CC),
                  get_active_function_name(TSRMLS_C), req_args, ZEND_NUM_ARGS());
        return;
    }

    if (with_priority) {
        if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), req_args, &extra, "riVi", &stream_rsrc, &condition, &callback, &priority))
            return;
    } else {
        if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), req_args, &extra, "riV", &stream_rsrc, &condition, &callback))
            return;
    }

    php_stream_from_zval(stream, &stream_rsrc);
    if (php_stream_can_cast(stream, PHP_STREAM_AS_FD_FOR_SELECT) == SUCCESS) {
        php_stream_cast(stream, PHP_STREAM_AS_FD_FOR_SELECT, (void*)&fd, 0);
    } else {
        php_error(E_WARNING, "%s::%s() could not use stream of type '%s'",
                  get_active_class_name(NULL TSRMLS_CC),
                  get_active_function_name(TSRMLS_C), stream->ops->label);
        return;
    }

    if (!extra) {
        MAKE_STD_ZVAL(extra);
        array_init(extra);
    }

    channel = g_io_channel_unix_new(fd);
    callback_filename = zend_get_executed_filename(TSRMLS_C);
    callback_lineno = zend_get_executed_lineno(TSRMLS_C);
    php_gtk_build_value(&data, "(VVNsi)", callback, stream_rsrc, extra, callback_filename, callback_lineno);
    handler_id = g_io_add_watch_full(channel, priority, condition, phpg_iowatch_marshal, data, phpg_destroy_notify);
    g_io_channel_unref(channel);

    RETURN_LONG(handler_id);
}

static PHP_METHOD(Gtk, io_add_watch)
{
    phpg_io_add_watch_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 0);
}

#line 1517 "ext/gtk+/gen_gtk.c"


#line 529 "ext/gtk+/gtk.overrides"

static PHP_METHOD(Gtk, io_add_watch_priority)
{
    phpg_io_add_watch_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, 1);
}

#line 1527 "ext/gtk+/gen_gtk.c"



ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_accel_groups_activate, 0)
    ZEND_ARG_OBJ_INFO(0, object, GObject, 1)
    ZEND_ARG_INFO(0, accel_key)
    ZEND_ARG_INFO(0, accel_mods)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_accel_groups_from_object, 0)
    ZEND_ARG_OBJ_INFO(0, object, GObject, 1)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_accelerator_get_label, 0)
    ZEND_ARG_INFO(0, accelerator_key)
    ZEND_ARG_INFO(0, accelerator_mods)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_accelerator_name, 0)
    ZEND_ARG_INFO(0, accelerator_key)
    ZEND_ARG_INFO(0, accelerator_mods)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_accelerator_set_default_mod_mask, 0)
    ZEND_ARG_INFO(0, default_mod_mask)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_accelerator_valid, 0)
    ZEND_ARG_INFO(0, keyval)
    ZEND_ARG_INFO(0, modifiers)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_bindings_activate, 0)
    ZEND_ARG_OBJ_INFO(0, object, GtkObject, 1)
    ZEND_ARG_INFO(0, keyval)
    ZEND_ARG_INFO(0, modifiers)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_bindings_activate_event, 0)
    ZEND_ARG_OBJ_INFO(0, object, GtkObject, 1)
    ZEND_ARG_INFO(0, event)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_check_version, 0)
    ZEND_ARG_INFO(0, required_major)
    ZEND_ARG_INFO(0, required_minor)
    ZEND_ARG_INFO(0, required_micro)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtk_alternative_dialog_button_order, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, screen, GdkScreen, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_drag_set_default_icon, 0)
    ZEND_ARG_OBJ_INFO(0, colormap, GdkColormap, 1)
    ZEND_ARG_OBJ_INFO(0, pixmap, GdkPixmap, 1)
    ZEND_ARG_INFO(0, mask)
    ZEND_ARG_INFO(0, hot_x)
    ZEND_ARG_INFO(0, hot_y)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_draw_insertion_cursor, 0)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_OBJ_INFO(0, drawable, GdkDrawable, 1)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, location, GdkRectangle, 1)
    ZEND_ARG_INFO(0, is_primary)
    ZEND_ARG_INFO(0, direction)
    ZEND_ARG_INFO(0, draw_arrow)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_icon_size_from_name, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_icon_size_get_name, 0)
    ZEND_ARG_INFO(0, size)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_icon_size_lookup, 0)
    ZEND_ARG_INFO(0, size)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_icon_size_lookup_for_settings, 0)
    ZEND_ARG_OBJ_INFO(0, settings, GtkSettings, 0)
    ZEND_ARG_INFO(0, size)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_icon_size_register, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_icon_size_register_alias, 0)
    ZEND_ARG_INFO(0, alias)
    ZEND_ARG_INFO(0, target)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_idle_remove, 0)
    ZEND_ARG_INFO(0, idle_handler_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_input_remove, 0)
    ZEND_ARG_INFO(0, input_handler_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_main_do_event, 0)
    ZEND_ARG_OBJ_INFO(0, event, GdkEvent, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtk_main_iteration_do, 0, 0, 0)
    ZEND_ARG_INFO(0, blocking)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_quit_add, 0)
    ZEND_ARG_INFO(0, main_level)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_quit_remove, 0)
    ZEND_ARG_INFO(0, quit_handler_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_rc_add_default_file, 0)
    ZEND_ARG_INFO(0, filename)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_rc_find_module_in_path, 0)
    ZEND_ARG_INFO(0, module_file)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_rc_get_style_by_paths, 0)
    ZEND_ARG_OBJ_INFO(0, settings, GtkSettings, 1)
    ZEND_ARG_INFO(0, widget_path)
    ZEND_ARG_INFO(0, class_path)
    ZEND_ARG_OBJ_INFO(0, type, GType, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_rc_parse, 0)
    ZEND_ARG_INFO(0, filename)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_rc_parse_string, 0)
    ZEND_ARG_INFO(0, rc_string)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_rc_reparse_all_for_settings, 0)
    ZEND_ARG_OBJ_INFO(0, settings, GtkSettings, 1)
    ZEND_ARG_INFO(0, force_load)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_rc_reset_styles, 0)
    ZEND_ARG_OBJ_INFO(0, settings, GtkSettings, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtk_selection_owner_set_for_display, 0, 0, 3)
    ZEND_ARG_OBJ_INFO(0, display, GdkDisplay, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, selection)
    ZEND_ARG_INFO(0, time)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_stock_lookup, 0)
    ZEND_ARG_INFO(0, stock_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_timeout_add, 0)
    ZEND_ARG_INFO(0, interval)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_timeout_remove, 0)
    ZEND_ARG_INFO(0, timeout_handler_id)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtk_timeout_add_priority, 0)
    ZEND_ARG_INFO(0, interval)
    ZEND_ARG_INFO(0, priority)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


static function_entry gtk_methods[] = {
	PHP_ME(Gtk, accel_groups_activate, arginfo_gtk_gtk_accel_groups_activate, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, accel_groups_from_object, arginfo_gtk_gtk_accel_groups_from_object, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, accelerator_get_default_mod_mask, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, accelerator_get_label, arginfo_gtk_gtk_accelerator_get_label, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, accelerator_name,     arginfo_gtk_gtk_accelerator_name, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, accelerator_parse,    NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, accelerator_set_default_mod_mask, arginfo_gtk_gtk_accelerator_set_default_mod_mask, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, accelerator_valid,    arginfo_gtk_gtk_accelerator_valid, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, alternative_dialog_button_order, arginfo_gtk_gtk_alternative_dialog_button_order, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, bindings_activate,    arginfo_gtk_gtk_bindings_activate, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, bindings_activate_event, arginfo_gtk_gtk_bindings_activate_event, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, check_version,        arginfo_gtk_gtk_check_version, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, disable_setlocale,    NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, drag_set_default_icon, arginfo_gtk_gtk_drag_set_default_icon, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, draw_insertion_cursor, arginfo_gtk_gtk_draw_insertion_cursor, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, events_pending,       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, get_current_event,    NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, get_current_event_state, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, get_current_event_time, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, get_default_language, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, get_version,          NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, grab_get_current,     NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, icon_size_from_name,  arginfo_gtk_gtk_icon_size_from_name, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, icon_size_get_name,   arginfo_gtk_gtk_icon_size_get_name, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, icon_size_lookup,     arginfo_gtk_gtk_icon_size_lookup, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, icon_size_lookup_for_settings, arginfo_gtk_gtk_icon_size_lookup_for_settings, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, icon_size_register,   arginfo_gtk_gtk_icon_size_register, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, icon_size_register_alias, arginfo_gtk_gtk_icon_size_register_alias, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, idle_add,             NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, idle_add_priority,    NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, idle_remove,          arginfo_gtk_gtk_idle_remove, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, input_remove,         arginfo_gtk_gtk_input_remove, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, io_add_watch,         NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, io_add_watch_priority, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, main,                 NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, main_do_event,        arginfo_gtk_gtk_main_do_event, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, main_iteration,       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, main_iteration_do,    arginfo_gtk_gtk_main_iteration_do, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, main_level,           NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, main_quit,            NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, quit_add,             arginfo_gtk_gtk_quit_add, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, quit_remove,          arginfo_gtk_gtk_quit_remove, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_add_default_file,  arginfo_gtk_gtk_rc_add_default_file, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_find_module_in_path, arginfo_gtk_gtk_rc_find_module_in_path, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_get_default_files, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_get_im_module_file, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_get_im_module_path, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_get_module_dir,    NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_get_style_by_paths, arginfo_gtk_gtk_rc_get_style_by_paths, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_get_theme_dir,     NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_parse,             arginfo_gtk_gtk_rc_parse, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_parse_string,      arginfo_gtk_gtk_rc_parse_string, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_reparse_all,       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_reparse_all_for_settings, arginfo_gtk_gtk_rc_reparse_all_for_settings, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, rc_reset_styles,      arginfo_gtk_gtk_rc_reset_styles, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, selection_owner_set_for_display, arginfo_gtk_gtk_selection_owner_set_for_display, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, stock_list_ids,       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, stock_lookup,         arginfo_gtk_gtk_stock_lookup, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, timeout_add,          arginfo_gtk_gtk_timeout_add, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, timeout_add_priority, arginfo_gtk_gtk_timeout_add_priority, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, timeout_remove,       arginfo_gtk_gtk_timeout_remove, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(Gtk, tooltips_data_get,    NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellEditable, editing_done)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkCellEditable, remove_widget)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_cell_editable_remove_widget(GTK_CELL_EDITABLE(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkCellEditable, start_editing)
{
	GdkEvent *event = NULL;
	zval *php_event;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_event, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_event, GDK_TYPE_EVENT, FALSE TSRMLS_CC)) {
        event = (GdkEvent *) PHPG_GBOXED(php_event);
    } else {
        php_error(E_WARNING, "%s::%s() expects event argument to be a valid GdkEvent object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_cell_editable_start_editing(GTK_CELL_EDITABLE(PHPG_GOBJECT(this_ptr)), event);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcelleditable_start_editing, 0)
    ZEND_ARG_OBJ_INFO(0, event, GdkEvent, 1)
ZEND_END_ARG_INFO();

static function_entry gtkcelleditable_methods[] = {
	ZEND_FENTRY(editing_done, ZEND_MN(GtkCellEditable_editing_done),         NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(remove_widget, ZEND_MN(GtkCellEditable_remove_widget),        NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(start_editing, ZEND_MN(GtkCellEditable_start_editing),        arginfo_gtk_gtkcelleditable_start_editing, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellLayout, add_attribute)
{
	zval *cell;
	char *attribute;
	zend_bool free_attribute = FALSE;
	long column;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Oui", &cell, gtkcellrenderer_ce, &attribute, &free_attribute, &column))
		return;

    gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr)), GTK_CELL_RENDERER(PHPG_GOBJECT(cell)), attribute, (gint)column);
	if (free_attribute) g_free(attribute);

}


static PHP_METHOD(GtkCellLayout, clear)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_cell_layout_clear(GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkCellLayout, clear_attributes)
{
	zval *cell;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &cell, gtkcellrenderer_ce))
		return;

    gtk_cell_layout_clear_attributes(GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr)), GTK_CELL_RENDERER(PHPG_GOBJECT(cell)));

}


static PHP_METHOD(GtkCellLayout, pack_end)
{
	zval *cell;
	zend_bool expand = TRUE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O|b", &cell, gtkcellrenderer_ce, &expand))
		return;

    gtk_cell_layout_pack_end(GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr)), GTK_CELL_RENDERER(PHPG_GOBJECT(cell)), (gboolean)expand);

}


static PHP_METHOD(GtkCellLayout, pack_start)
{
	zval *cell;
	zend_bool expand = TRUE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O|b", &cell, gtkcellrenderer_ce, &expand))
		return;

    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr)), GTK_CELL_RENDERER(PHPG_GOBJECT(cell)), (gboolean)expand);

}


static PHP_METHOD(GtkCellLayout, reorder)
{
	zval *cell;
	long position;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Oi", &cell, gtkcellrenderer_ce, &position))
		return;

    gtk_cell_layout_reorder(GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr)), GTK_CELL_RENDERER(PHPG_GOBJECT(cell)), (gint)position);

}

#line 75 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkCellLayout, set_attributes)
{
    zval *php_cell = NULL;
    GtkCellRenderer *cell = NULL;
    GtkCellLayout *layout = NULL;
    zval ***args = NULL;
    int i, argc = ZEND_NUM_ARGS();

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(1, "O", &php_cell, gtkcellrenderer_ce))
        return;

    if ((argc-1)% 2) {
        php_error(E_WARNING, "%s::%s() requires arguments 3-n to be attribute/column pairs",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    layout = GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr));
    cell = GTK_CELL_RENDERER(PHPG_GOBJECT(php_cell));
    gtk_cell_layout_clear_attributes(layout, cell);
    args = php_gtk_func_args(argc);
    for (i = 1; i < argc; i += 2) {
        zval *attr = *args[i];
        zval *column = *args[i+1];

        if (Z_TYPE_P(attr) != IS_STRING) {
            php_error(E_WARNING, "%s::%s() requires argument %d to be a string, %s given",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                      i, zend_zval_type_name(attr));
            efree(args);
            return;
        }
        if (Z_TYPE_P(column) != IS_LONG) {
            php_error(E_WARNING, "%s::%s() requires argument %d to be an integer, %s given",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                      i, zend_zval_type_name(column));
            efree(args);
            return;
        }

        gtk_cell_layout_add_attribute(layout, cell, Z_STRVAL_P(attr), Z_LVAL_P(column));
    }
    efree(args);
}

#line 2009 "ext/gtk+/gen_gtk.c"


#line 132 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkCellLayout, set_cell_data_func)
{
    zval *php_cell;
    GtkCellRenderer *cell;
    GtkCellLayout *layout = NULL;
    zval *callback, *extra;
    phpg_cb_data_t *cb_data;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &extra, "OV", &php_cell, gtkcellrenderer_ce, &callback))
        return;

    layout = GTK_CELL_LAYOUT(PHPG_GOBJECT(this_ptr));
    cell = GTK_CELL_RENDERER(PHPG_GOBJECT(php_cell));

    zval_add_ref(&callback);
    cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_cell_layout_set_cell_data_func(layout, cell, (GtkCellLayoutDataFunc)phpg_cell_data_func_marshal,
                                       cb_data, phpg_cb_data_destroy);
}
#line 2035 "ext/gtk+/gen_gtk.c"



ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcelllayout_add_attribute, 0)
    ZEND_ARG_OBJ_INFO(0, cell, GtkCellRenderer, 1)
    ZEND_ARG_INFO(0, attribute)
    ZEND_ARG_INFO(0, column)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcelllayout_clear_attributes, 0)
    ZEND_ARG_OBJ_INFO(0, cell, GtkCellRenderer, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkcelllayout_pack_end, 0, 0, 1)
    ZEND_ARG_OBJ_INFO(0, cell, GtkCellRenderer, 1)
    ZEND_ARG_INFO(0, expand)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkcelllayout_pack_start, 0, 0, 1)
    ZEND_ARG_OBJ_INFO(0, cell, GtkCellRenderer, 1)
    ZEND_ARG_INFO(0, expand)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcelllayout_reorder, 0)
    ZEND_ARG_OBJ_INFO(0, cell, GtkCellRenderer, 1)
    ZEND_ARG_INFO(0, position)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkcelllayout_set_attributes, 0, 0, 1)
    ZEND_ARG_INFO(0, cell)
    ZEND_ARG_INFO(0, attribute)
    ZEND_ARG_INFO(0, column)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcelllayout_set_cell_data_func, 0)
    ZEND_ARG_OBJ_INFO(0, cellrenderer, GtkCellRenderer, 1)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


static function_entry gtkcelllayout_methods[] = {
	ZEND_FENTRY(add_attribute, ZEND_MN(GtkCellLayout_add_attribute),        arginfo_gtk_gtkcelllayout_add_attribute, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(clear, ZEND_MN(GtkCellLayout_clear),                NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(clear_attributes, ZEND_MN(GtkCellLayout_clear_attributes),     arginfo_gtk_gtkcelllayout_clear_attributes, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(pack_end, ZEND_MN(GtkCellLayout_pack_end),             arginfo_gtk_gtkcelllayout_pack_end, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(pack_start, ZEND_MN(GtkCellLayout_pack_start),           arginfo_gtk_gtkcelllayout_pack_start, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(reorder, ZEND_MN(GtkCellLayout_reorder),              arginfo_gtk_gtkcelllayout_reorder, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_attributes, ZEND_MN(GtkCellLayout_set_attributes),       arginfo_gtk_gtkcelllayout_set_attributes, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_cell_data_func, ZEND_MN(GtkCellLayout_set_cell_data_func),   arginfo_gtk_gtkcelllayout_set_cell_data_func, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkEditable, copy_clipboard)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_editable_copy_clipboard(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkEditable, cut_clipboard)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_editable_cut_clipboard(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkEditable, delete_selection)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_editable_delete_selection(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkEditable, delete_text)
{
	long start_pos, end_pos;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &start_pos, &end_pos))
		return;

    gtk_editable_delete_text(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), (gint)start_pos, (gint)end_pos);

}


static PHP_METHOD(GtkEditable, get_chars)
{
	long start_pos, end_pos;
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &start_pos, &end_pos))
		return;

    php_retval = gtk_editable_get_chars(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), (gint)start_pos, (gint)end_pos);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkEditable, get_editable)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_editable_get_editable(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkEditable, get_position)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_editable_get_position(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}

#line 2680 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkEditable, get_selection_bounds)
{
    gint start, end;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    if (!gtk_editable_get_selection_bounds(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), &start, &end)) {
        RETURN_FALSE;
    } else {
        php_gtk_build_value(&return_value, "(ii)", start, end);
    }
}


#line 2220 "ext/gtk+/gen_gtk.c"


#line 2707 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkEditable, insert_text)
{
    char *text;
    gint pos;
    int text_len;
    zend_bool free_text;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iu#", &pos, &text, &text_len, &free_text))
        return;

    gtk_editable_insert_text(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), text, text_len, &pos);

    if (free_text) g_free(text);

    RETURN_LONG(pos);
}

#line 2243 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkEditable, paste_clipboard)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_editable_paste_clipboard(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkEditable, select_region)
{
	long start, end;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &start, &end))
		return;

    gtk_editable_select_region(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), (gint)start, (gint)end);

}


static PHP_METHOD(GtkEditable, set_editable)
{
	zend_bool is_editable;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &is_editable))
		return;

    gtk_editable_set_editable(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), (gboolean)is_editable);

}


static PHP_METHOD(GtkEditable, set_position)
{
	long position;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &position))
		return;

    gtk_editable_set_position(GTK_EDITABLE(PHPG_GOBJECT(this_ptr)), (gint)position);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkeditable_delete_text, 0)
    ZEND_ARG_INFO(0, start_pos)
    ZEND_ARG_INFO(0, end_pos)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkeditable_get_chars, 0)
    ZEND_ARG_INFO(0, start_pos)
    ZEND_ARG_INFO(0, end_pos)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkeditable_insert_text, 0)
    ZEND_ARG_INFO(0, text)
    ZEND_ARG_INFO(0, position)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkeditable_select_region, 0)
    ZEND_ARG_INFO(0, start)
    ZEND_ARG_INFO(0, end)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkeditable_set_editable, 0)
    ZEND_ARG_INFO(0, is_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkeditable_set_position, 0)
    ZEND_ARG_INFO(0, position)
ZEND_END_ARG_INFO();

static function_entry gtkeditable_methods[] = {
	ZEND_FENTRY(copy_clipboard, ZEND_MN(GtkEditable_copy_clipboard),       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(cut_clipboard, ZEND_MN(GtkEditable_cut_clipboard),        NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(delete_selection, ZEND_MN(GtkEditable_delete_selection),     NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(delete_text, ZEND_MN(GtkEditable_delete_text),          arginfo_gtk_gtkeditable_delete_text, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_chars, ZEND_MN(GtkEditable_get_chars),            arginfo_gtk_gtkeditable_get_chars, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_editable, ZEND_MN(GtkEditable_get_editable),         NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_position, ZEND_MN(GtkEditable_get_position),         NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_selection_bounds, ZEND_MN(GtkEditable_get_selection_bounds), NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(insert_text, ZEND_MN(GtkEditable_insert_text),          arginfo_gtk_gtkeditable_insert_text, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(paste_clipboard, ZEND_MN(GtkEditable_paste_clipboard),      NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(select_region, ZEND_MN(GtkEditable_select_region),        arginfo_gtk_gtkeditable_select_region, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_editable, ZEND_MN(GtkEditable_set_editable),         arginfo_gtk_gtkeditable_set_editable, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_position, ZEND_MN(GtkEditable_set_position),         arginfo_gtk_gtkeditable_set_position, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkFileChooser, add_filter)
{
	zval *filter;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &filter, gtkfilefilter_ce))
		return;

    gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), GTK_FILE_FILTER(PHPG_GOBJECT(filter)));

}


static PHP_METHOD(GtkFileChooser, add_shortcut_folder)
{
	char *folder;
	zend_bool free_folder = FALSE;
	GError *error = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &folder, &free_folder))
		return;

    php_retval = gtk_file_chooser_add_shortcut_folder(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), folder, &error);
	if (free_folder) g_free(folder);
    if (phpg_handle_gerror(&error TSRMLS_CC)) {
        return;
    }
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, add_shortcut_folder_uri)
{
	char *uri;
	zend_bool free_uri = FALSE;
	GError *error = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &uri, &free_uri))
		return;

    php_retval = gtk_file_chooser_add_shortcut_folder_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), uri, &error);
	if (free_uri) g_free(uri);
    if (phpg_handle_gerror(&error TSRMLS_CC)) {
        return;
    }
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, get_action)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_action(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkFileChooser, get_current_folder)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkFileChooser, get_current_folder_uri)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_current_folder_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkFileChooser, get_extra_widget)
{
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_extra_widget(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}

#line 3286 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkFileChooser, get_filename)
{
    gchar *php_retval, *cp_ret, *fn;
    gsize cp_len;
    zend_bool free_result;
    zend_bool convert = 1;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|b", &convert))
        return;

    php_retval = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        if (convert) {
            fn = g_filename_to_utf8(php_retval, strlen(php_retval), NULL, NULL, NULL);
            cp_ret = phpg_from_utf8(fn, strlen(fn), &cp_len, &free_result TSRMLS_CC);
            if (cp_ret) {
                RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
            } else {
                php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            }
        } else {
            RETVAL_STRINGL((char *)php_retval, strlen(php_retval), 1);
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}

#line 2524 "ext/gtk+/gen_gtk.c"


#line 3328 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkFileChooser, get_filenames)
{
    GSList *files;
    gchar *cp = NULL;
    gchar *fn = NULL;
    gsize cp_len = 0;
    zend_bool free_cp = FALSE;
    zend_bool convert = 1;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|b", &convert))
        return;

    array_init(return_value);
    for (files = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr))); files; files = files->next) {
        if (convert) {
            if (files->data) {
                fn = g_filename_to_utf8(files->data, strlen(files->data), NULL, NULL, NULL);
                cp = phpg_from_utf8(fn, strlen(fn), &cp_len, &free_cp TSRMLS_CC);
                if (cp) {
                    add_next_index_string(return_value, (char *)cp, 1);
                } else {
                    php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
                }
                if (free_cp)
                    g_free(cp);
            }
        } else {
            add_next_index_string(return_value, (char *)files->data, 1);
        }
        g_free(files->data);
    }
    g_slist_free(files);
}

#line 2564 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkFileChooser, get_filter)
{
	GtkFileFilter* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_filter(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkFileChooser, get_local_only)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_local_only(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, get_preview_filename)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_preview_filename(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkFileChooser, get_preview_uri)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_preview_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkFileChooser, get_preview_widget)
{
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_preview_widget(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkFileChooser, get_preview_widget_active)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_preview_widget_active(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, get_select_multiple)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_select_multiple(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, get_show_hidden)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_show_hidden(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, get_uri)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}

#line 3366 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkFileChooser, get_uris)
{
    GSList *files;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    array_init(return_value);
    for (files = gtk_file_chooser_get_uris(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr))); files; files = files->next) {
        add_next_index_string(return_value, (char *) files->data, 1);
        g_free(files->data);
    }
    g_slist_free(files);
}

#line 2750 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkFileChooser, get_use_preview_label)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_chooser_get_use_preview_label(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}

#line 3385 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkFileChooser, list_filters)
{
    GSList *filters, *current;
    zval *item;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    filters = gtk_file_chooser_list_filters(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));

    array_init(return_value);
    for (current = filters; current; current = current->next) {
        MAKE_STD_ZVAL(item);
        phpg_gobject_new(&item, G_OBJECT(current->data) TSRMLS_CC);
        add_next_index_zval(return_value, item);
    }
    g_slist_free(filters);
}

#line 2789 "ext/gtk+/gen_gtk.c"


#line 3460 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkFileChooser, list_shortcut_folder_uris)
{
    GSList *files;
    gchar *cp = NULL;
    gchar *fn = NULL;
    gsize cp_len = 0;
    zend_bool free_cp = FALSE;
    zend_bool convert = 1;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|b", &convert))
        return;

    array_init(return_value);
    for (files = gtk_file_chooser_list_shortcut_folder_uris(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr))); files; files = files->next) {
        if (convert) {
            if (files->data) {
                fn = g_filename_to_utf8(files->data, strlen(files->data), NULL, NULL, NULL);
                cp = phpg_from_utf8(fn, strlen(fn), &cp_len, &free_cp TSRMLS_CC);
                if (cp) {
                    add_next_index_string(return_value, (char *)cp, 1);
                } else {
                    php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
                }
                if (free_cp)
                    g_free(cp);
            }
        } else {
            add_next_index_string(return_value, (char *)files->data, 1);
        }
        g_free(files->data);
    }
    g_slist_free(files);
}

#line 2829 "ext/gtk+/gen_gtk.c"


#line 3415 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkFileChooser, list_shortcut_folders)
{
    GSList *files;
    gchar *cp = NULL;
    gchar *fn = NULL;
    gsize cp_len = 0;
    zend_bool free_cp = FALSE;
    zend_bool convert = 1;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|b", &convert))
        return;

    array_init(return_value);
    for (files = gtk_file_chooser_list_shortcut_folders(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr))); files; files = files->next) {
        if (convert) {
            if (files->data) {
                fn = g_filename_to_utf8(files->data, strlen(files->data), NULL, NULL, NULL);
                cp = phpg_from_utf8(fn, strlen(fn), &cp_len, &free_cp TSRMLS_CC);
                if (cp) {
                    add_next_index_string(return_value, (char *)cp, 1);
                } else {
                    php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
                }
                if (free_cp)
                    g_free(cp);
            }
        } else {
            add_next_index_string(return_value, (char *)files->data, 1);
        }
        g_free(files->data);
    }
    g_slist_free(files);
}

#line 2869 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkFileChooser, remove_filter)
{
	zval *filter;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &filter, gtkfilefilter_ce))
		return;

    gtk_file_chooser_remove_filter(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), GTK_FILE_FILTER(PHPG_GOBJECT(filter)));

}


static PHP_METHOD(GtkFileChooser, remove_shortcut_folder)
{
	char *folder;
	zend_bool free_folder = FALSE;
	GError *error = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &folder, &free_folder))
		return;

    php_retval = gtk_file_chooser_remove_shortcut_folder(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), folder, &error);
	if (free_folder) g_free(folder);
    if (phpg_handle_gerror(&error TSRMLS_CC)) {
        return;
    }
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, remove_shortcut_folder_uri)
{
	char *uri;
	zend_bool free_uri = FALSE;
	GError *error = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &uri, &free_uri))
		return;

    php_retval = gtk_file_chooser_remove_shortcut_folder_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), uri, &error);
	if (free_uri) g_free(uri);
    if (phpg_handle_gerror(&error TSRMLS_CC)) {
        return;
    }
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, select_all)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_file_chooser_select_all(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkFileChooser, select_filename)
{
	char *filename;
	zend_bool free_filename = FALSE;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &filename, &free_filename))
		return;

    php_retval = gtk_file_chooser_select_filename(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), filename);
	if (free_filename) g_free(filename);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, select_uri)
{
	char *uri;
	zend_bool free_uri = FALSE;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &uri, &free_uri))
		return;

    php_retval = gtk_file_chooser_select_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), uri);
	if (free_uri) g_free(uri);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, set_action)
{
	GtkFileChooserAction action;
	zval *php_action = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_action))
		return;

	if (php_action && phpg_gvalue_get_enum(GTK_TYPE_FILE_CHOOSER_ACTION, php_action, (gint *)&action) == FAILURE) {
		return;
	}

    gtk_file_chooser_set_action(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), action);

}


static PHP_METHOD(GtkFileChooser, set_current_folder)
{
	char *filename;
	zend_bool free_filename = FALSE;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &filename, &free_filename))
		return;

    php_retval = gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), filename);
	if (free_filename) g_free(filename);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, set_current_folder_uri)
{
	char *uri;
	zend_bool free_uri = FALSE;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &uri, &free_uri))
		return;

    php_retval = gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), uri);
	if (free_uri) g_free(uri);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, set_current_name)
{
	char *name;
	zend_bool free_name = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &name, &free_name))
		return;

    gtk_file_chooser_set_current_name(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), name);
	if (free_name) g_free(name);

}


static PHP_METHOD(GtkFileChooser, set_extra_widget)
{
	zval *extra_widget;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &extra_widget, gtkwidget_ce))
		return;

    gtk_file_chooser_set_extra_widget(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(extra_widget)));

}


static PHP_METHOD(GtkFileChooser, set_filename)
{
	char *filename;
	zend_bool free_filename = FALSE;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &filename, &free_filename))
		return;

    php_retval = gtk_file_chooser_set_filename(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), filename);
	if (free_filename) g_free(filename);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, set_filter)
{
	zval *filter;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &filter, gtkfilefilter_ce))
		return;

    gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), GTK_FILE_FILTER(PHPG_GOBJECT(filter)));

}


static PHP_METHOD(GtkFileChooser, set_local_only)
{
	zend_bool local_only;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &local_only))
		return;

    gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), (gboolean)local_only);

}


static PHP_METHOD(GtkFileChooser, set_preview_widget)
{
	zval *preview_widget;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &preview_widget, gtkwidget_ce))
		return;

    gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(preview_widget)));

}


static PHP_METHOD(GtkFileChooser, set_preview_widget_active)
{
	zend_bool active;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &active))
		return;

    gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), (gboolean)active);

}


static PHP_METHOD(GtkFileChooser, set_select_multiple)
{
	zend_bool select_multiple;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &select_multiple))
		return;

    gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), (gboolean)select_multiple);

}


static PHP_METHOD(GtkFileChooser, set_show_hidden)
{
	zend_bool show_hidden;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &show_hidden))
		return;

    gtk_file_chooser_set_show_hidden(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), (gboolean)show_hidden);

}


static PHP_METHOD(GtkFileChooser, set_uri)
{
	char *uri;
	zend_bool free_uri = FALSE;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &uri, &free_uri))
		return;

    php_retval = gtk_file_chooser_set_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), uri);
	if (free_uri) g_free(uri);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkFileChooser, set_use_preview_label)
{
	zend_bool use_label;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &use_label))
		return;

    gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), (gboolean)use_label);

}


static PHP_METHOD(GtkFileChooser, unselect_all)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_file_chooser_unselect_all(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkFileChooser, unselect_filename)
{
	char *filename;
	zend_bool free_filename = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &filename, &free_filename))
		return;

    gtk_file_chooser_unselect_filename(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), filename);
	if (free_filename) g_free(filename);

}


static PHP_METHOD(GtkFileChooser, unselect_uri)
{
	char *uri;
	zend_bool free_uri = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &uri, &free_uri))
		return;

    gtk_file_chooser_unselect_uri(GTK_FILE_CHOOSER(PHPG_GOBJECT(this_ptr)), uri);
	if (free_uri) g_free(uri);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_add_filter, 0)
    ZEND_ARG_OBJ_INFO(0, filter, GtkFileFilter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_add_shortcut_folder, 0)
    ZEND_ARG_INFO(0, folder)
    ZEND_ARG_INFO(0, error)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_add_shortcut_folder_uri, 0)
    ZEND_ARG_INFO(0, uri)
    ZEND_ARG_INFO(0, error)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkfilechooser_get_filename, 0, 0, 0)
    ZEND_ARG_INFO(0, convert)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkfilechooser_get_filenames, 0, 0, 0)
    ZEND_ARG_INFO(0, convert)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkfilechooser_list_shortcut_folder_uris, 0, 0, 0)
    ZEND_ARG_INFO(0, convert)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkfilechooser_list_shortcut_folders, 0, 0, 0)
    ZEND_ARG_INFO(0, convert)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_remove_filter, 0)
    ZEND_ARG_OBJ_INFO(0, filter, GtkFileFilter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_remove_shortcut_folder, 0)
    ZEND_ARG_INFO(0, folder)
    ZEND_ARG_INFO(0, error)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_remove_shortcut_folder_uri, 0)
    ZEND_ARG_INFO(0, uri)
    ZEND_ARG_INFO(0, error)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_select_filename, 0)
    ZEND_ARG_INFO(0, filename)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_select_uri, 0)
    ZEND_ARG_INFO(0, uri)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_action, 0)
    ZEND_ARG_INFO(0, action)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_current_folder, 0)
    ZEND_ARG_INFO(0, filename)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_current_folder_uri, 0)
    ZEND_ARG_INFO(0, uri)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_current_name, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_extra_widget, 0)
    ZEND_ARG_OBJ_INFO(0, extra_widget, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_filename, 0)
    ZEND_ARG_INFO(0, filename)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_filter, 0)
    ZEND_ARG_OBJ_INFO(0, filter, GtkFileFilter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_local_only, 0)
    ZEND_ARG_INFO(0, local_only)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_preview_widget, 0)
    ZEND_ARG_OBJ_INFO(0, preview_widget, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_preview_widget_active, 0)
    ZEND_ARG_INFO(0, active)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_select_multiple, 0)
    ZEND_ARG_INFO(0, select_multiple)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_show_hidden, 0)
    ZEND_ARG_INFO(0, show_hidden)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_uri, 0)
    ZEND_ARG_INFO(0, uri)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_set_use_preview_label, 0)
    ZEND_ARG_INFO(0, use_label)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_unselect_filename, 0)
    ZEND_ARG_INFO(0, filename)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilechooser_unselect_uri, 0)
    ZEND_ARG_INFO(0, uri)
ZEND_END_ARG_INFO();

static function_entry gtkfilechooser_methods[] = {
	ZEND_FENTRY(add_filter, ZEND_MN(GtkFileChooser_add_filter),           arginfo_gtk_gtkfilechooser_add_filter, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(add_shortcut_folder, ZEND_MN(GtkFileChooser_add_shortcut_folder),  arginfo_gtk_gtkfilechooser_add_shortcut_folder, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(add_shortcut_folder_uri, ZEND_MN(GtkFileChooser_add_shortcut_folder_uri), arginfo_gtk_gtkfilechooser_add_shortcut_folder_uri, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_action, ZEND_MN(GtkFileChooser_get_action),           NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_current_folder, ZEND_MN(GtkFileChooser_get_current_folder),   NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_current_folder_uri, ZEND_MN(GtkFileChooser_get_current_folder_uri), NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_extra_widget, ZEND_MN(GtkFileChooser_get_extra_widget),     NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_filename, ZEND_MN(GtkFileChooser_get_filename),         arginfo_gtk_gtkfilechooser_get_filename, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_filenames, ZEND_MN(GtkFileChooser_get_filenames),        arginfo_gtk_gtkfilechooser_get_filenames, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_filter, ZEND_MN(GtkFileChooser_get_filter),           NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_local_only, ZEND_MN(GtkFileChooser_get_local_only),       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_preview_filename, ZEND_MN(GtkFileChooser_get_preview_filename), NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_preview_uri, ZEND_MN(GtkFileChooser_get_preview_uri),      NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_preview_widget, ZEND_MN(GtkFileChooser_get_preview_widget),   NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_preview_widget_active, ZEND_MN(GtkFileChooser_get_preview_widget_active), NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_select_multiple, ZEND_MN(GtkFileChooser_get_select_multiple),  NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_show_hidden, ZEND_MN(GtkFileChooser_get_show_hidden),      NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_uri, ZEND_MN(GtkFileChooser_get_uri),              NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_uris, ZEND_MN(GtkFileChooser_get_uris),             NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_use_preview_label, ZEND_MN(GtkFileChooser_get_use_preview_label), NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(list_filters, ZEND_MN(GtkFileChooser_list_filters),         NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(list_shortcut_folder_uris, ZEND_MN(GtkFileChooser_list_shortcut_folder_uris), arginfo_gtk_gtkfilechooser_list_shortcut_folder_uris, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(list_shortcut_folders, ZEND_MN(GtkFileChooser_list_shortcut_folders), arginfo_gtk_gtkfilechooser_list_shortcut_folders, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(remove_filter, ZEND_MN(GtkFileChooser_remove_filter),        arginfo_gtk_gtkfilechooser_remove_filter, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(remove_shortcut_folder, ZEND_MN(GtkFileChooser_remove_shortcut_folder), arginfo_gtk_gtkfilechooser_remove_shortcut_folder, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(remove_shortcut_folder_uri, ZEND_MN(GtkFileChooser_remove_shortcut_folder_uri), arginfo_gtk_gtkfilechooser_remove_shortcut_folder_uri, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(select_all, ZEND_MN(GtkFileChooser_select_all),           NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(select_filename, ZEND_MN(GtkFileChooser_select_filename),      arginfo_gtk_gtkfilechooser_select_filename, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(select_uri, ZEND_MN(GtkFileChooser_select_uri),           arginfo_gtk_gtkfilechooser_select_uri, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_action, ZEND_MN(GtkFileChooser_set_action),           arginfo_gtk_gtkfilechooser_set_action, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_current_folder, ZEND_MN(GtkFileChooser_set_current_folder),   arginfo_gtk_gtkfilechooser_set_current_folder, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_current_folder_uri, ZEND_MN(GtkFileChooser_set_current_folder_uri), arginfo_gtk_gtkfilechooser_set_current_folder_uri, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_current_name, ZEND_MN(GtkFileChooser_set_current_name),     arginfo_gtk_gtkfilechooser_set_current_name, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_extra_widget, ZEND_MN(GtkFileChooser_set_extra_widget),     arginfo_gtk_gtkfilechooser_set_extra_widget, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_filename, ZEND_MN(GtkFileChooser_set_filename),         arginfo_gtk_gtkfilechooser_set_filename, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_filter, ZEND_MN(GtkFileChooser_set_filter),           arginfo_gtk_gtkfilechooser_set_filter, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_local_only, ZEND_MN(GtkFileChooser_set_local_only),       arginfo_gtk_gtkfilechooser_set_local_only, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_preview_widget, ZEND_MN(GtkFileChooser_set_preview_widget),   arginfo_gtk_gtkfilechooser_set_preview_widget, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_preview_widget_active, ZEND_MN(GtkFileChooser_set_preview_widget_active), arginfo_gtk_gtkfilechooser_set_preview_widget_active, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_select_multiple, ZEND_MN(GtkFileChooser_set_select_multiple),  arginfo_gtk_gtkfilechooser_set_select_multiple, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_show_hidden, ZEND_MN(GtkFileChooser_set_show_hidden),      arginfo_gtk_gtkfilechooser_set_show_hidden, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_uri, ZEND_MN(GtkFileChooser_set_uri),              arginfo_gtk_gtkfilechooser_set_uri, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_use_preview_label, ZEND_MN(GtkFileChooser_set_use_preview_label), arginfo_gtk_gtkfilechooser_set_use_preview_label, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(unselect_all, ZEND_MN(GtkFileChooser_unselect_all),         NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(unselect_filename, ZEND_MN(GtkFileChooser_unselect_filename),    arginfo_gtk_gtkfilechooser_unselect_filename, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(unselect_uri, ZEND_MN(GtkFileChooser_unselect_uri),         arginfo_gtk_gtkfilechooser_unselect_uri, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTreeDragDest, drag_data_received)
{
	GtkTreePath *dest;
	zval *php_dest, *php_selection_data;
	GtkSelectionData *selection_data = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VO", &php_dest, &php_selection_data, gboxed_ce))
		return;

    if (phpg_tree_path_from_zval(php_dest, &dest TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects dest to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_selection_data, GTK_TYPE_SELECTION_DATA, FALSE TSRMLS_CC)) {
        selection_data = (GtkSelectionData *) PHPG_GBOXED(php_selection_data);
    } else {
        php_error(E_WARNING, "%s::%s() expects selection_data argument to be a valid GtkSelectionData object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_drag_dest_drag_data_received(GTK_TREE_DRAG_DEST(PHPG_GOBJECT(this_ptr)), dest, selection_data);

    if (dest)
        gtk_tree_path_free(dest);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeDragDest, row_drop_possible)
{
	GtkTreePath *dest_path;
	zval *php_dest_path, *php_selection_data;
	GtkSelectionData *selection_data = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VO", &php_dest_path, &php_selection_data, gboxed_ce))
		return;

    if (phpg_tree_path_from_zval(php_dest_path, &dest_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects dest_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_selection_data, GTK_TYPE_SELECTION_DATA, FALSE TSRMLS_CC)) {
        selection_data = (GtkSelectionData *) PHPG_GBOXED(php_selection_data);
    } else {
        php_error(E_WARNING, "%s::%s() expects selection_data argument to be a valid GtkSelectionData object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_drag_dest_row_drop_possible(GTK_TREE_DRAG_DEST(PHPG_GOBJECT(this_ptr)), dest_path, selection_data);

    if (dest_path)
        gtk_tree_path_free(dest_path);
	RETVAL_BOOL(php_retval);
}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreedragdest_drag_data_received, 0)
    ZEND_ARG_INFO(0, dest)
    ZEND_ARG_OBJ_INFO(0, selection_data, GtkSelectionData, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreedragdest_row_drop_possible, 0)
    ZEND_ARG_INFO(0, dest_path)
    ZEND_ARG_OBJ_INFO(0, selection_data, GtkSelectionData, 1)
ZEND_END_ARG_INFO();

static function_entry gtktreedragdest_methods[] = {
	ZEND_FENTRY(drag_data_received, ZEND_MN(GtkTreeDragDest_drag_data_received),   arginfo_gtk_gtktreedragdest_drag_data_received, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(row_drop_possible, ZEND_MN(GtkTreeDragDest_row_drop_possible),    arginfo_gtk_gtktreedragdest_row_drop_possible, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTreeDragSource, drag_data_delete)
{
	GtkTreePath *path;
	zval *php_path;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_drag_source_drag_data_delete(GTK_TREE_DRAG_SOURCE(PHPG_GOBJECT(this_ptr)), path);

    if (path)
        gtk_tree_path_free(path);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeDragSource, drag_data_get)
{
	GtkTreePath *path;
	zval *php_path, *php_selection_data;
	GtkSelectionData *selection_data = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VO", &php_path, &php_selection_data, gboxed_ce))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_selection_data, GTK_TYPE_SELECTION_DATA, FALSE TSRMLS_CC)) {
        selection_data = (GtkSelectionData *) PHPG_GBOXED(php_selection_data);
    } else {
        php_error(E_WARNING, "%s::%s() expects selection_data argument to be a valid GtkSelectionData object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_drag_source_drag_data_get(GTK_TREE_DRAG_SOURCE(PHPG_GOBJECT(this_ptr)), path, selection_data);

    if (path)
        gtk_tree_path_free(path);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeDragSource, row_draggable)
{
	GtkTreePath *path;
	zval *php_path;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_drag_source_row_draggable(GTK_TREE_DRAG_SOURCE(PHPG_GOBJECT(this_ptr)), path);

    if (path)
        gtk_tree_path_free(path);
	RETVAL_BOOL(php_retval);
}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreedragsource_drag_data_delete, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreedragsource_drag_data_get, 0)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, selection_data, GtkSelectionData, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreedragsource_row_draggable, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

static function_entry gtktreedragsource_methods[] = {
	ZEND_FENTRY(drag_data_delete, ZEND_MN(GtkTreeDragSource_drag_data_delete),     arginfo_gtk_gtktreedragsource_drag_data_delete, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(drag_data_get, ZEND_MN(GtkTreeDragSource_drag_data_get),        arginfo_gtk_gtktreedragsource_drag_data_get, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(row_draggable, ZEND_MN(GtkTreeDragSource_row_draggable),        arginfo_gtk_gtktreedragsource_row_draggable, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};
#line 1376 "ext/gtk+/gtktreeview.overrides"

gboolean phpg_tree_model_foreach_marshal(GtkTreeModel *model,
                                         GtkTreePath  *path,
                                         GtkTreeIter  *iter,
                                         gpointer      data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_model = NULL, *php_path = NULL, *php_iter = NULL;
    gboolean ret;
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return TRUE;
    }

    phpg_gobject_new(&php_model,       (GObject*)model       TSRMLS_CC);
    phpg_tree_path_to_zval(path, &php_path TSRMLS_CC);
    phpg_gboxed_new(&php_iter, GTK_TYPE_TREE_ITER, iter, TRUE, TRUE TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 3, &n_args);
    args[0] = &php_model;
    args[1] = &php_path;
    args[2] = &php_iter;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_model);
    zval_ptr_dtor(&php_path);
    zval_ptr_dtor(&php_iter);

    if (retval) {
        ret = zend_is_true(retval);
        zval_ptr_dtor(&retval);
    } else {
        ret = TRUE;
    }

    efree(callback_name);
    efree(args);

    phpg_handle_marshaller_exception(TSRMLS_C);

    return ret;
}

static PHP_METHOD(GtkTreeModel, foreach)
{
    zval *callback, *extra;
    phpg_cb_data_t *cb_data;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &callback)) {
        return;
    }

    zval_add_ref(&callback);
    cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_tree_model_foreach(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)),
                           phpg_tree_model_foreach_marshal, cb_data);
    phpg_cb_data_destroy(cb_data);
}

#line 3688 "ext/gtk+/gen_gtk.c"


#line 1448 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, get)
{
    GtkTreeModel *model;
    GtkTreeIter *iter;
    zval *columns = NULL, *php_iter, **item;
    int n_columns;
    zend_bool varargs = FALSE;

    NOT_STATIC_METHOD();

    if (php_gtk_parse_args_quiet(ZEND_NUM_ARGS(), "Oa", &php_iter, gtktreeiter_ce, &columns)) {
        varargs = FALSE;
    } else if (php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &columns, "O", &php_iter, gtktreeiter_ce)) {
        varargs = TRUE;
    }  else {
        return;
    }

    model = GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr));
    iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);

    array_init(return_value);
    n_columns = gtk_tree_model_get_n_columns(model);

    if (columns) {
        for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(columns));
             zend_hash_get_current_data(Z_ARRVAL_P(columns), (void**)&item) == SUCCESS;
             zend_hash_move_forward(Z_ARRVAL_P(columns))) {

            GValue value = { 0, };
            zval *zv = NULL;

            convert_to_long_ex(item);
            if (Z_LVAL_PP(item) < 0 || Z_LVAL_PP(item) >= n_columns) {
                php_error(E_WARNING, "%s::%s(): column number is out of range - model has %d columns", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C), n_columns);
                if (varargs) zval_ptr_dtor(&columns);
                zval_dtor(return_value);
                RETURN_NULL();
            }

            gtk_tree_model_get_value(model, iter, Z_LVAL_PP(item), &value);
            if (phpg_gvalue_to_zval(&value, &zv, TRUE, TRUE TSRMLS_CC) == FAILURE) {
                g_value_unset(&value);
                if (varargs) zval_ptr_dtor(&columns);
                zval_dtor(return_value);
                RETURN_NULL();
            }
            add_next_index_zval(return_value, zv);
            g_value_unset(&value);
        }

        if (varargs) zval_ptr_dtor(&columns);
    }
}

#line 3747 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModel, get_column_type)
{
	long index;
	GType php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &index))
		return;

    php_retval = gtk_tree_model_get_column_type(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), (gint)index);
    phpg_gtype_new(return_value, php_retval TSRMLS_CC);

}


static PHP_METHOD(GtkTreeModel, get_flags)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_model_get_flags(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}

#line 1138 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, get_iter)
{
    zval *php_path = NULL;
    GtkTreeIter iter;
    GtkTreePath *path;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path))
        return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path argument to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (gtk_tree_model_get_iter(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, path)) {
        gtk_tree_path_free(path);
        phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
    } else {
        gtk_tree_path_free(path);
        php_error(E_WARNING, "%s::%s(): invalid tree path", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
    }
}

#line 3806 "ext/gtk+/gen_gtk.c"


#line 1165 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, get_iter_first)
{
    GtkTreeIter iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter)) {
        phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
    }
}

#line 3824 "ext/gtk+/gen_gtk.c"


#line 1165 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, get_iter_root)
{
    GtkTreeIter iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter)) {
        phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
    }
}

#line 3842 "ext/gtk+/gen_gtk.c"


#line 1188 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, get_iter_from_string)
{
    char *path_string = NULL;
    GtkTreeIter iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "s", &path_string))
        return;

    if (!gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, path_string)) {
        return;
    }

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 3863 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModel, get_n_columns)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_model_get_n_columns(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkTreeModel, get_path)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	GtkTreePath *php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_get_path(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), iter);

    if (php_retval) {
        phpg_tree_path_to_zval(php_retval, &return_value TSRMLS_CC);
        gtk_tree_path_free(php_retval);
    }

}


static PHP_METHOD(GtkTreeModel, get_string_from_iter)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_get_string_from_iter(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), iter);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}

#line 1215 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, get_value)
{
    zval *php_iter;
    GtkTreeIter *iter;
    GtkTreeModel *model;
    gint column;
    GValue value = { 0 };

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Oi", &php_iter, gtktreeiter_ce, &column))
        return;

    model = GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr));
    iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);

    if (column < 0 || column >= gtk_tree_model_get_n_columns(model)) {
        php_error(E_WARNING, "%s::%s(): column  is out of range - model has %d column(s)",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                  gtk_tree_model_get_n_columns(model));
        return;
    }

    gtk_tree_model_get_value(model, iter, column, &value);
    phpg_gvalue_to_zval(&value, &return_value, TRUE, TRUE TSRMLS_CC);
    g_value_unset(&value);
}

#line 3975 "ext/gtk+/gen_gtk.c"


#line 1252 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, iter_children)
{
    GtkTreeIter iter;
    zval *php_parent_iter = NULL;
    GtkTreeIter *parent_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|N", &php_parent_iter, gtktreeiter_ce))
        return;

    if (php_parent_iter && IS_OBJECT == Z_TYPE_P(php_parent_iter)) {
        parent_iter = (GtkTreeIter *) PHPG_GBOXED(php_parent_iter);
    }

    if (gtk_tree_model_iter_children(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, parent_iter)) {
        phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
    } else {
        RETURN_NULL();
    }
}

#line 4001 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModel, iter_has_child)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_iter_has_child(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeModel, iter_n_children)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "N", &php_iter, gboxed_ce))
		return;

    if (Z_TYPE_P(php_iter) != IS_NULL) {
        if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
            iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
        } else {
            php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    php_retval = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_LONG(php_retval);
}

#line 1348 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, iter_next)
{
    GtkTreeIter iter;
    zval *php_iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gtktreeiter_ce))
        return;

    iter = *(GtkTreeIter *) PHPG_GBOXED(php_iter);

    if (gtk_tree_model_iter_next(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter)) {
        phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
    } else {
        RETURN_NULL();
    }
}

#line 4073 "ext/gtk+/gen_gtk.c"


#line 1284 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, iter_nth_child)
{
    GtkTreeIter iter;
    zval *php_parent_iter = NULL;
    GtkTreeIter *parent_iter = NULL;
    int n;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Ni", &php_parent_iter, gtktreeiter_ce, &n))
        return;

    if (php_parent_iter && IS_OBJECT == Z_TYPE_P(php_parent_iter)) {
        parent_iter = (GtkTreeIter *) PHPG_GBOXED(php_parent_iter);
    }

    if (gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, parent_iter, n)) {
        phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
    } else {
        RETURN_NULL();
    }
}

#line 4100 "ext/gtk+/gen_gtk.c"


#line 1317 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModel, iter_parent)
{
    GtkTreeIter iter;
    zval *php_child_iter = NULL;
    GtkTreeIter *child_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|N", &php_child_iter, gtktreeiter_ce))
        return;

    if (php_child_iter && IS_OBJECT == Z_TYPE_P(php_child_iter)) {
        child_iter = (GtkTreeIter *) PHPG_GBOXED(php_child_iter);
    }

    if (gtk_tree_model_iter_parent(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, child_iter)) {
        phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
    } else {
        RETURN_NULL();
    }
}

#line 4126 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModel, ref_node)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_ref_node(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), iter);

}


static PHP_METHOD(GtkTreeModel, row_changed)
{
	GtkTreePath *path;
	zval *php_path, *php_iter;
	GtkTreeIter *iter = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VO", &php_path, &php_iter, gboxed_ce))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_row_changed(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), path, iter);

    if (path)
        gtk_tree_path_free(path);

}


static PHP_METHOD(GtkTreeModel, row_deleted)
{
	GtkTreePath *path;
	zval *php_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_row_deleted(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), path);

    if (path)
        gtk_tree_path_free(path);

}


static PHP_METHOD(GtkTreeModel, row_has_child_toggled)
{
	GtkTreePath *path;
	zval *php_path, *php_iter;
	GtkTreeIter *iter = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VO", &php_path, &php_iter, gboxed_ce))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_row_has_child_toggled(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), path, iter);

    if (path)
        gtk_tree_path_free(path);

}


static PHP_METHOD(GtkTreeModel, row_inserted)
{
	GtkTreePath *path;
	zval *php_path, *php_iter;
	GtkTreeIter *iter = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VO", &php_path, &php_iter, gboxed_ce))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_row_inserted(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), path, iter);

    if (path)
        gtk_tree_path_free(path);

}

#line 1505 "ext/gtk+/gtktreeview.overrides"

static PHP_METHOD(GtkTreeModel, rows_reordered)
{
    zval *php_path, *php_iter, *php_new_order, **elem;
    GtkTreePath *path = NULL;
    GtkTreeIter *iter = NULL;
    int n_children, n_elems, i;
    gint *new_order;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VO!a/", &php_path, &php_iter, gtktreeiter_ce, &php_new_order))
        return;

    if (Z_TYPE_P(php_path) == IS_NULL ||
        (Z_TYPE_P(php_path) == IS_STRING && Z_STRLEN_P(php_path) == 0)) {
        path = gtk_tree_path_new();
    } else {
        phpg_tree_path_from_zval(php_path, &path TSRMLS_CC);
    }
    if (path == NULL) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "path argument is not a valid tree path specification");
        return;
    }

    if (php_iter) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    }

    n_children = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), iter);
    n_elems = zend_hash_num_elements(Z_ARRVAL_P(php_new_order));
    if (n_children != n_elems) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "new order array size (%d) not the same as the number of iter children (%d)", n_elems, n_children);
        gtk_tree_path_free(path);
        return;
    }

    new_order = safe_emalloc(n_elems, sizeof(gint), 0);
    for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_new_order)), i = 0;
         zend_hash_get_current_data(Z_ARRVAL_P(php_new_order), (void **) &elem) == SUCCESS;
         zend_hash_move_forward(Z_ARRVAL_P(php_new_order)), i++) {

        convert_to_long(*elem);
        if (Z_LVAL_PP(elem) < 0 || Z_LVAL_PP(elem) >= n_children) {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "position index out of range 0-%d", n_children);
            gtk_tree_path_free(path);
            efree(new_order);
            return;
        }
        new_order[i] = Z_LVAL_PP(elem);
    }

    gtk_tree_model_rows_reordered(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), path, iter, new_order);

    gtk_tree_path_free(path);
    efree(new_order);
}

#line 4330 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModel, unref_node)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_unref_node(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), iter);

}

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_foreach, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_get_column_type, 0)
    ZEND_ARG_INFO(0, index)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_get_iter, 0)
    ZEND_ARG_INFO(0, treepath)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_get_iter_from_string, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_get_path, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_get_string_from_iter, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_get_value, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, column)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_iter_children, 0)
    ZEND_ARG_OBJ_INFO(0, parent_iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_iter_has_child, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_iter_n_children, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_iter_next, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_iter_nth_child, 0)
    ZEND_ARG_OBJ_INFO(0, parent_iter, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, n)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreemodel_iter_parent, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();



ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_ref_node, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_row_changed, 0)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_row_deleted, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_row_has_child_toggled, 0)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_row_inserted, 0)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodel_unref_node, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

static function_entry gtktreemodel_methods[] = {
	ZEND_FENTRY(foreach, ZEND_MN(GtkTreeModel_foreach),              arginfo_gtk_gtktreemodel_foreach, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get, ZEND_MN(GtkTreeModel_get),                  NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_column_type, ZEND_MN(GtkTreeModel_get_column_type),      arginfo_gtk_gtktreemodel_get_column_type, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_flags, ZEND_MN(GtkTreeModel_get_flags),            NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_iter, ZEND_MN(GtkTreeModel_get_iter),             arginfo_gtk_gtktreemodel_get_iter, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_iter_first, ZEND_MN(GtkTreeModel_get_iter_first),       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_iter_from_string, ZEND_MN(GtkTreeModel_get_iter_from_string), arginfo_gtk_gtktreemodel_get_iter_from_string, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_iter_root, ZEND_MN(GtkTreeModel_get_iter_root),        NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_n_columns, ZEND_MN(GtkTreeModel_get_n_columns),        NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_path, ZEND_MN(GtkTreeModel_get_path),             arginfo_gtk_gtktreemodel_get_path, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_string_from_iter, ZEND_MN(GtkTreeModel_get_string_from_iter), arginfo_gtk_gtktreemodel_get_string_from_iter, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(get_value, ZEND_MN(GtkTreeModel_get_value),            arginfo_gtk_gtktreemodel_get_value, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(iter_children, ZEND_MN(GtkTreeModel_iter_children),        arginfo_gtk_gtktreemodel_iter_children, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(iter_has_child, ZEND_MN(GtkTreeModel_iter_has_child),       arginfo_gtk_gtktreemodel_iter_has_child, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(iter_n_children, ZEND_MN(GtkTreeModel_iter_n_children),      arginfo_gtk_gtktreemodel_iter_n_children, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(iter_next, ZEND_MN(GtkTreeModel_iter_next),            arginfo_gtk_gtktreemodel_iter_next, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(iter_nth_child, ZEND_MN(GtkTreeModel_iter_nth_child),       arginfo_gtk_gtktreemodel_iter_nth_child, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(iter_parent, ZEND_MN(GtkTreeModel_iter_parent),          arginfo_gtk_gtktreemodel_iter_parent, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(ref_node, ZEND_MN(GtkTreeModel_ref_node),             arginfo_gtk_gtktreemodel_ref_node, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(row_changed, ZEND_MN(GtkTreeModel_row_changed),          arginfo_gtk_gtktreemodel_row_changed, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(row_deleted, ZEND_MN(GtkTreeModel_row_deleted),          arginfo_gtk_gtktreemodel_row_deleted, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(row_has_child_toggled, ZEND_MN(GtkTreeModel_row_has_child_toggled), arginfo_gtk_gtktreemodel_row_has_child_toggled, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(row_inserted, ZEND_MN(GtkTreeModel_row_inserted),         arginfo_gtk_gtktreemodel_row_inserted, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(rows_reordered, ZEND_MN(GtkTreeModel_rows_reordered),       NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(unref_node, ZEND_MN(GtkTreeModel_unref_node),           arginfo_gtk_gtktreemodel_unref_node, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};
#line 2045 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeSortable, get_sort_column_id)
{
    gint sort_column_id;
    GtkSortType order;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(PHPG_GOBJECT(this_ptr)), &sort_column_id, &order);

    php_gtk_build_value(&return_value, "(ii)", sort_column_id, (int)order);
}

#line 4501 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeSortable, has_default_sort_func)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_sortable_has_default_sort_func(GTK_TREE_SORTABLE(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}

#line 2068 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeSortable, set_default_sort_func)
{
    zval *callback = NULL, *extra;
    phpg_cb_data_t *cb_data = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V!", &callback))
        return;

    if (callback) {
        zval_add_ref(&callback);
        cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC);
        gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(PHPG_GOBJECT(this_ptr)),
                                                (GtkTreeIterCompareFunc)phpg_tree_iter_compare_func_marshal,
                                                cb_data, phpg_cb_data_destroy);
    } else {
        gtk_tree_sortable_set_default_sort_func(GTK_TREE_SORTABLE(PHPG_GOBJECT(this_ptr)),
                                                NULL, NULL, NULL);
    }
}

#line 4541 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeSortable, set_sort_column_id)
{
	long sort_column_id;
	GtkSortType order;
	zval *php_order = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iV", &sort_column_id, &php_order))
		return;

	if (php_order && phpg_gvalue_get_enum(GTK_TYPE_SORT_TYPE, php_order, (gint *)&order) == FAILURE) {
		return;
	}

    gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(PHPG_GOBJECT(this_ptr)), (gint)sort_column_id, order);

}

#line 2100 "ext/gtk+/gtktreeview.overrides"

static gint phpg_tree_iter_compare_func_marshal(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_model = NULL, *php_iter_a = NULL, *php_iter_b = NULL;
    gint compared = 0;
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return 0;
    }

    phpg_gobject_new(&php_model,       (GObject*)model       TSRMLS_CC);
    phpg_gboxed_new(&php_iter_a, GTK_TYPE_TREE_ITER, a, TRUE, TRUE TSRMLS_CC);
    phpg_gboxed_new(&php_iter_b, GTK_TYPE_TREE_ITER, b, TRUE, TRUE TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 3, &n_args);
    args[0] = &php_model;
    args[1] = &php_iter_a;
    args[2] = &php_iter_b;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_model);
    zval_ptr_dtor(&php_iter_a);
    zval_ptr_dtor(&php_iter_b);

    if (retval) {
        convert_to_long(retval);
        compared = Z_LVAL_P(retval);
        zval_ptr_dtor(&retval);
    } else {
        compared = 0;
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);

    return compared;
}

static PHP_METHOD(GtkTreeSortable, set_sort_func)
{
    gint sort_column_id;
    zval *callback, *extra;
    phpg_cb_data_t *cb_data;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &extra, "iV", &sort_column_id, &callback))
        return;

    zval_add_ref(&callback);
    cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(PHPG_GOBJECT(this_ptr)),
                                                           sort_column_id,
                                                           (GtkTreeIterCompareFunc)phpg_tree_iter_compare_func_marshal,
                                                           cb_data, phpg_cb_data_destroy);
}

#line 4634 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeSortable, sort_column_changed)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_sortable_sort_column_changed(GTK_TREE_SORTABLE(PHPG_GOBJECT(this_ptr)));

}

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreesortable_set_default_sort_func, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreesortable_set_sort_column_id, 0)
    ZEND_ARG_INFO(0, sort_column_id)
    ZEND_ARG_INFO(0, order)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreesortable_set_sort_func, 0)
    ZEND_ARG_INFO(0, column)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


static function_entry gtktreesortable_methods[] = {
	ZEND_FENTRY(get_sort_column_id, ZEND_MN(GtkTreeSortable_get_sort_column_id),   NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(has_default_sort_func, ZEND_MN(GtkTreeSortable_has_default_sort_func), NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_default_sort_func, ZEND_MN(GtkTreeSortable_set_default_sort_func), arginfo_gtk_gtktreesortable_set_default_sort_func, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_sort_column_id, ZEND_MN(GtkTreeSortable_set_sort_column_id),   arginfo_gtk_gtktreesortable_set_sort_column_id, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(set_sort_func, ZEND_MN(GtkTreeSortable_set_sort_func),        arginfo_gtk_gtktreesortable_set_sort_func, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	ZEND_FENTRY(sort_column_changed, ZEND_MN(GtkTreeSortable_sort_column_changed),  NULL, ZEND_ACC_PUBLIC|ZEND_ACC_ABSTRACT)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(PhpGtkCustomTreeModel, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(PhpGtkCustomTreeModel);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(PhpGtkCustomTreeModel);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}

#line 3066 "ext/gtk+/gtktreeview.overrides"
static zval* phpg_phpgtkcustomtreemodel_read_dimension_handler(zval *object, zval *offset, int type TSRMLS_DC)
{
    return phpg_gtktreemodel_read_dimension_handler(object, offset, type TSRMLS_CC);
}

#line 4702 "ext/gtk+/gen_gtk.c"


#line 3073 "ext/gtk+/gtktreeview.overrides"
static void phpg_phpgtkcustomtreemodel_write_dimension_handler(zval *object, zval *offset, zval *value TSRMLS_DC)
{
    phpg_gtktreemodel_write_dimension_handler(object, offset, value TSRMLS_CC);
}

#line 4711 "ext/gtk+/gen_gtk.c"


#line 3059 "ext/gtk+/gtktreeview.overrides"
static int phpg_phpgtkcustomtreemodel_has_dimension_handler(zval *object, zval *offset, int check_empty TSRMLS_DC)
{
    return phpg_gtktreemodel_has_dimension_handler(object, offset, check_empty TSRMLS_CC);
}

#line 4720 "ext/gtk+/gen_gtk.c"


#line 3080 "ext/gtk+/gtktreeview.overrides"
static void phpg_phpgtkcustomtreemodel_unset_dimension_handler(zval *object, zval *offset TSRMLS_DC)
{
    phpg_gtktreemodel_write_dimension_handler(object, offset, NULL TSRMLS_CC);
}

#line 4729 "ext/gtk+/gen_gtk.c"


#line 3052 "ext/gtk+/gtktreeview.overrides"
static int phpg_phpgtkcustomtreemodel_count_elements_handler(zval *object, long *count TSRMLS_DC)
{
    return phpg_gtktreemodel_count_elements_handler(object, count TSRMLS_CC);
}

#line 4738 "ext/gtk+/gen_gtk.c"



static zend_object_handlers phpgtkcustomtreemodel_object_handlers;

static zend_object_value phpg_create_phpgtkcustomtreemodel(zend_class_entry *ce TSRMLS_DC)
{
    zend_object_value zov;

    zov = phpg_create_gobject(ce TSRMLS_CC);
    zov.handlers = &phpgtkcustomtreemodel_object_handlers;

    return zov;
}

static function_entry phpgtkcustomtreemodel_methods[] = {
	PHP_ME(PhpGtkCustomTreeModel, __construct,          NULL, ZEND_ACC_PUBLIC)

	/***   GtkTreeModel interface implementations   ***/

	PHP_MALIAS(GtkTreeModel, foreach, foreach, arginfo_gtk_gtktreemodel_foreach, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get, get, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_column_type, get_column_type, arginfo_gtk_gtktreemodel_get_column_type, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_flags, get_flags, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter, get_iter, arginfo_gtk_gtktreemodel_get_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_first, get_iter_first, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_root, get_iter_root, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_from_string, get_iter_from_string, arginfo_gtk_gtktreemodel_get_iter_from_string, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_n_columns, get_n_columns, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_path, get_path, arginfo_gtk_gtktreemodel_get_path, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_string_from_iter, get_string_from_iter, arginfo_gtk_gtktreemodel_get_string_from_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_value, get_value, arginfo_gtk_gtktreemodel_get_value, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_children, iter_children, arginfo_gtk_gtktreemodel_iter_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_has_child, iter_has_child, arginfo_gtk_gtktreemodel_iter_has_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_n_children, iter_n_children, arginfo_gtk_gtktreemodel_iter_n_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_next, iter_next, arginfo_gtk_gtktreemodel_iter_next, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_nth_child, iter_nth_child, arginfo_gtk_gtktreemodel_iter_nth_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_parent, iter_parent, arginfo_gtk_gtktreemodel_iter_parent, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, ref_node, ref_node, arginfo_gtk_gtktreemodel_ref_node, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_changed, row_changed, arginfo_gtk_gtktreemodel_row_changed, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_deleted, row_deleted, arginfo_gtk_gtktreemodel_row_deleted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_has_child_toggled, row_has_child_toggled, arginfo_gtk_gtktreemodel_row_has_child_toggled, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_inserted, row_inserted, arginfo_gtk_gtktreemodel_row_inserted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, rows_reordered, rows_reordered, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, unref_node, unref_node, arginfo_gtk_gtktreemodel_unref_node, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkAccelGroup, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkAccelGroup);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkAccelGroup);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkAccelGroup, disconnect_key)
{
	long accel_key;
	GdkModifierType accel_mods;
	zval *php_accel_mods = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iV", &accel_key, &php_accel_mods))
		return;

	if (php_accel_mods && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_accel_mods, (gint *)&accel_mods) == FAILURE) {
		return;
	}

    php_retval = gtk_accel_group_disconnect_key(GTK_ACCEL_GROUP(PHPG_GOBJECT(this_ptr)), (guint)accel_key, accel_mods);
	RETVAL_BOOL(php_retval);
}

#line 793 "ext/gtk+/gtk.overrides"
static gboolean phpg_accelgroup_find_func_marshal(GtkAccelKey *key, GClosure *closure, gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_key = NULL, *retval = NULL;
    gboolean return_value;

    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return (gboolean) 0;
    }
    /* TODO - check closure to see if it's invalidated? If so error and return false? */
    
    /* Make the key useable */
    MAKE_STD_ZVAL(php_key);
    array_init(php_key);
    add_next_index_long(php_key, key->accel_key);
    add_next_index_long(php_key, key->accel_mods);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 1, &n_args);
    args[0] = &php_key;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_key);

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
    
    convert_to_boolean(retval);
    return_value = Z_BVAL_P(retval);
    zval_ptr_dtor(&retval);
    return return_value;
}

static PHP_METHOD(GtkAccelGroup, find)
{
    zval *php_callback, *extra;
    phpg_cb_data_t *cb_data;
    GtkAccelGroupFindFunc callback;
    GtkAccelKey *result;

	NOT_STATIC_METHOD();
 
    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &php_callback))
        return;

    if (Z_TYPE_P(php_callback) == IS_NULL) {
        cb_data  = NULL;
        callback = NULL;
    } else {
        zval_add_ref(&php_callback);
        cb_data  = phpg_cb_data_new(php_callback, extra TSRMLS_CC);
        callback = (GtkAccelGroupFindFunc)phpg_accelgroup_find_func_marshal;
    }

    result = gtk_accel_group_find(GTK_ACCEL_GROUP(PHPG_GOBJECT(this_ptr)), callback, cb_data);
    /* only if we have a result */
    if (result) {
		array_init(return_value);
		add_next_index_long(return_value, result->accel_key);
		add_next_index_long(return_value, result->accel_mods);
	}
}

#line 4899 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkAccelGroup, lock)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_accel_group_lock(GTK_ACCEL_GROUP(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkAccelGroup, unlock)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_accel_group_unlock(GTK_ACCEL_GROUP(PHPG_GOBJECT(this_ptr)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelgroup_disconnect_key, 0)
    ZEND_ARG_INFO(0, accel_key)
    ZEND_ARG_INFO(0, accel_mods)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelgroup_find, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


static function_entry gtkaccelgroup_methods[] = {
	PHP_ME(GtkAccelGroup, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAccelGroup, disconnect_key,       arginfo_gtk_gtkaccelgroup_disconnect_key, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAccelGroup, find,                 arginfo_gtk_gtkaccelgroup_find, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAccelGroup, lock,                 NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAccelGroup, unlock,               NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkAccelMap, add_entry)
{
	char *accel_path;
	zend_bool free_accel_path = FALSE;
	long accel_key;
	GdkModifierType accel_mods;
	zval *php_accel_mods = NULL;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uiV", &accel_path, &free_accel_path, &accel_key, &php_accel_mods))
		return;

	if (php_accel_mods && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_accel_mods, (gint *)&accel_mods) == FAILURE) {
		return;
	}

    gtk_accel_map_add_entry(accel_path, (guint)accel_key, accel_mods);
	if (free_accel_path) g_free(accel_path);

}


static PHP_METHOD(GtkAccelMap, add_filter)
{
	char *filter_pattern;
	zend_bool free_filter_pattern = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &filter_pattern, &free_filter_pattern))
		return;

    gtk_accel_map_add_filter(filter_pattern);
	if (free_filter_pattern) g_free(filter_pattern);

}


static PHP_METHOD(GtkAccelMap, change_entry)
{
	char *accel_path;
	zend_bool free_accel_path = FALSE, replace;
	long accel_key;
	GdkModifierType accel_mods;
	zval *php_accel_mods = NULL;
	gboolean php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uiVb", &accel_path, &free_accel_path, &accel_key, &php_accel_mods, &replace))
		return;

	if (php_accel_mods && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_accel_mods, (gint *)&accel_mods) == FAILURE) {
		return;
	}

    php_retval = gtk_accel_map_change_entry(accel_path, (guint)accel_key, accel_mods, (gboolean)replace);
	if (free_accel_path) g_free(accel_path);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkAccelMap, get)
{
	GtkAccelMap* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_accel_map_get();
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkAccelMap, load)
{
	char *file_name;
	zend_bool free_file_name = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &file_name, &free_file_name))
		return;

    gtk_accel_map_load(file_name);
	if (free_file_name) g_free(file_name);

}


static PHP_METHOD(GtkAccelMap, load_fd)
{
	long fd;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &fd))
		return;

    gtk_accel_map_load_fd((gint)fd);

}


static PHP_METHOD(GtkAccelMap, lock_path)
{
	char *accel_path;
	zend_bool free_accel_path = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &accel_path, &free_accel_path))
		return;

    gtk_accel_map_lock_path(accel_path);
	if (free_accel_path) g_free(accel_path);

}

#line 737 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkAccelMap, lookup_entry)
{
    char *accel_path;
    zend_bool free_accel_path;
    GtkAccelKey accel_key;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &accel_path, &free_accel_path))
        return;

    if (gtk_accel_map_lookup_entry((const gchar *)accel_path, &accel_key)) {
        php_gtk_build_value(&return_value, "(ii)", accel_key.accel_key,
                            accel_key.accel_mods);
    }
}

#line 5073 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkAccelMap, save)
{
	char *file_name;
	zend_bool free_file_name = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &file_name, &free_file_name))
		return;

    gtk_accel_map_save(file_name);
	if (free_file_name) g_free(file_name);

}


static PHP_METHOD(GtkAccelMap, save_fd)
{
	long fd;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &fd))
		return;

    gtk_accel_map_save_fd((gint)fd);

}


static PHP_METHOD(GtkAccelMap, unlock_path)
{
	char *accel_path;
	zend_bool free_accel_path = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &accel_path, &free_accel_path))
		return;

    gtk_accel_map_unlock_path(accel_path);
	if (free_accel_path) g_free(accel_path);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_add_entry, 0)
    ZEND_ARG_INFO(0, accel_path)
    ZEND_ARG_INFO(0, accel_key)
    ZEND_ARG_INFO(0, accel_mods)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_add_filter, 0)
    ZEND_ARG_INFO(0, filter_pattern)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_change_entry, 0)
    ZEND_ARG_INFO(0, accel_path)
    ZEND_ARG_INFO(0, accel_key)
    ZEND_ARG_INFO(0, accel_mods)
    ZEND_ARG_INFO(0, replace)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_load, 0)
    ZEND_ARG_INFO(0, file_name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_load_fd, 0)
    ZEND_ARG_INFO(0, fd)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_lock_path, 0)
    ZEND_ARG_INFO(0, accel_path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_save, 0)
    ZEND_ARG_INFO(0, file_name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_save_fd, 0)
    ZEND_ARG_INFO(0, fd)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaccelmap_unlock_path, 0)
    ZEND_ARG_INFO(0, accel_path)
ZEND_END_ARG_INFO();

static function_entry gtkaccelmap_methods[] = {
	PHP_ME(GtkAccelMap, add_entry,            arginfo_gtk_gtkaccelmap_add_entry, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, add_filter,           arginfo_gtk_gtkaccelmap_add_filter, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, change_entry,         arginfo_gtk_gtkaccelmap_change_entry, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, get,                  NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, load,                 arginfo_gtk_gtkaccelmap_load, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, load_fd,              arginfo_gtk_gtkaccelmap_load_fd, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, lock_path,            arginfo_gtk_gtkaccelmap_lock_path, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, lookup_entry,         NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, save,                 arginfo_gtk_gtkaccelmap_save, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, save_fd,              arginfo_gtk_gtkaccelmap_save_fd, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkAccelMap, unlock_path,          arginfo_gtk_gtkaccelmap_unlock_path, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkAccessible, connect_widget_destroyed)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_accessible_connect_widget_destroyed(GTK_ACCESSIBLE(PHPG_GOBJECT(this_ptr)));

}


static function_entry gtkaccessible_methods[] = {
	PHP_ME(GtkAccessible, connect_widget_destroyed, NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkAction, __construct)
{
    GParameter params[4];
	zval *php_args[5] = { NULL, };
	char *prop_names[] = { "name", "label", "tooltip", "stock_id",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "^u^u^u^u", &php_args[0], &php_args[1], &php_args[2], &php_args[3], &php_args[4], &php_args[5], &php_args[6], &php_args[7])) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkAction);
    }

	memset(&params, 0, 4 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkAction);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkAction);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkAction, activate)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_action_activate(GTK_ACTION(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkAction, block_activate_from)
{
	zval *proxy;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &proxy, gtkwidget_ce))
		return;

    gtk_action_block_activate_from(GTK_ACTION(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(proxy)));

}


static PHP_METHOD(GtkAction, connect_accelerator)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_action_connect_accelerator(GTK_ACTION(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkAction, connect_proxy)
{
	zval *proxy;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &proxy, gtkwidget_ce))
		return;

    gtk_action_connect_proxy(GTK_ACTION(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(proxy)));

}


static PHP_METHOD(GtkAction, create_icon)
{
	GtkIconSize icon_size;
	zval *php_icon_size = NULL;
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_icon_size))
		return;

	if (php_icon_size && phpg_gvalue_get_enum(GTK_TYPE_ICON_SIZE, php_icon_size, (gint *)&icon_size) == FAILURE) {
		return;
	}

    php_retval = gtk_action_create_icon(GTK_ACTION(PHPG_GOBJECT(this_ptr)), icon_size);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkAction, create_menu_item)
{
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_create_menu_item(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkAction, create_tool_item)
{
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_create_tool_item(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkAction, disconnect_accelerator)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_action_disconnect_accelerator(GTK_ACTION(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkAction, disconnect_proxy)
{
	zval *proxy;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &proxy, gtkwidget_ce))
		return;

    gtk_action_disconnect_proxy(GTK_ACTION(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(proxy)));

}


static PHP_METHOD(GtkAction, get_accel_path)
{
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_get_accel_path(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}


static PHP_METHOD(GtkAction, get_name)
{
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_get_name(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}

#line 871 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkAction, get_proxies)
{
    GSList *widgets, *current;
    zval *item;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    widgets = gtk_action_get_proxies(GTK_ACTION(PHPG_GOBJECT(this_ptr)));

    array_init(return_value);
    for (current = widgets; current; current = current->next) {
        MAKE_STD_ZVAL(item);
        phpg_gobject_new(&item, G_OBJECT(current->data) TSRMLS_CC);
        add_next_index_zval(return_value, item);
    }
}
#line 5435 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkAction, get_sensitive)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_get_sensitive(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkAction, get_visible)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_get_visible(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkAction, is_sensitive)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_is_sensitive(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkAction, is_visible)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_is_visible(GTK_ACTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkAction, set_accel_group)
{
	zval *accel_group;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &accel_group, gtkaccelgroup_ce))
		return;

    gtk_action_set_accel_group(GTK_ACTION(PHPG_GOBJECT(this_ptr)), GTK_ACCEL_GROUP(PHPG_GOBJECT(accel_group)));

}


static PHP_METHOD(GtkAction, set_accel_path)
{
	char *accel_path;
	zend_bool free_accel_path = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &accel_path, &free_accel_path))
		return;

    gtk_action_set_accel_path(GTK_ACTION(PHPG_GOBJECT(this_ptr)), accel_path);
	if (free_accel_path) g_free(accel_path);

}


static PHP_METHOD(GtkAction, set_sensitive)
{
	zend_bool sensitive;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &sensitive))
		return;

    gtk_action_set_sensitive(GTK_ACTION(PHPG_GOBJECT(this_ptr)), (gboolean)sensitive);

}


static PHP_METHOD(GtkAction, set_visible)
{
	zend_bool visible;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &visible))
		return;

    gtk_action_set_visible(GTK_ACTION(PHPG_GOBJECT(this_ptr)), (gboolean)visible);

}


static PHP_METHOD(GtkAction, unblock_activate_from)
{
	zval *proxy;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &proxy, gtkwidget_ce))
		return;

    gtk_action_unblock_activate_from(GTK_ACTION(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(proxy)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_gtk_action_new, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_INFO(0, label)
    ZEND_ARG_INFO(0, tooltip)
    ZEND_ARG_INFO(0, stock_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_block_activate_from, 0)
    ZEND_ARG_OBJ_INFO(0, proxy, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_connect_proxy, 0)
    ZEND_ARG_OBJ_INFO(0, proxy, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_create_icon, 0)
    ZEND_ARG_INFO(0, icon_size)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_disconnect_proxy, 0)
    ZEND_ARG_OBJ_INFO(0, proxy, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_set_accel_group, 0)
    ZEND_ARG_OBJ_INFO(0, accel_group, GtkAccelGroup, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_set_accel_path, 0)
    ZEND_ARG_INFO(0, accel_path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_set_sensitive, 0)
    ZEND_ARG_INFO(0, sensitive)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_set_visible, 0)
    ZEND_ARG_INFO(0, visible)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkaction_unblock_activate_from, 0)
    ZEND_ARG_OBJ_INFO(0, proxy, GtkWidget, 1)
ZEND_END_ARG_INFO();

static function_entry gtkaction_methods[] = {
	PHP_ME(GtkAction, __construct,          arginfo_gtk_gtkaction_gtk_action_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, activate,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, block_activate_from,  arginfo_gtk_gtkaction_block_activate_from, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, connect_accelerator,  NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, connect_proxy,        arginfo_gtk_gtkaction_connect_proxy, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, create_icon,          arginfo_gtk_gtkaction_create_icon, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, create_menu_item,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, create_tool_item,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, disconnect_accelerator, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, disconnect_proxy,     arginfo_gtk_gtkaction_disconnect_proxy, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, get_accel_path,       NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, get_name,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, get_proxies,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, get_sensitive,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, get_visible,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, is_sensitive,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, is_visible,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, set_accel_group,      arginfo_gtk_gtkaction_set_accel_group, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, set_accel_path,       arginfo_gtk_gtkaction_set_accel_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, set_sensitive,        arginfo_gtk_gtkaction_set_sensitive, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, set_visible,          arginfo_gtk_gtkaction_set_visible, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAction, unblock_activate_from, arginfo_gtk_gtkaction_unblock_activate_from, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkActionGroup, __construct)
{
    GParameter params[1];
	zval *php_args[2] = { NULL, };
	char *prop_names[] = { "name",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "^u", &php_args[0], &php_args[1])) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkActionGroup);
    }

	memset(&params, 0, 1 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkActionGroup);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkActionGroup);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkActionGroup, add_action)
{
	zval *action;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &action, gtkaction_ce))
		return;

    gtk_action_group_add_action(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), GTK_ACTION(PHPG_GOBJECT(action)));

}


static PHP_METHOD(GtkActionGroup, add_action_with_accel)
{
	zval *action;
	char *accelerator;
	zend_bool free_accelerator = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Ou", &action, gtkaction_ce, &accelerator, &free_accelerator))
		return;

    gtk_action_group_add_action_with_accel(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), GTK_ACTION(PHPG_GOBJECT(action)), accelerator);
	if (free_accelerator) g_free(accelerator);

}


static PHP_METHOD(GtkActionGroup, get_action)
{
	char *action_name;
	zend_bool free_action_name = FALSE;
	GtkAction* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &action_name, &free_action_name))
		return;

    php_retval = gtk_action_group_get_action(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), action_name);
	if (free_action_name) g_free(action_name);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkActionGroup, get_name)
{
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_group_get_name(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}


static PHP_METHOD(GtkActionGroup, get_sensitive)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_group_get_sensitive(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkActionGroup, get_visible)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_action_group_get_visible(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}

#line 896 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkActionGroup, list_actions)
{
    GList *actions, *current;
    zval *item;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    actions = gtk_action_group_list_actions(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)));

    array_init(return_value);
    for (current = actions; current; current = current->next) {
        MAKE_STD_ZVAL(item);
        phpg_gobject_new(&item, G_OBJECT(current->data) TSRMLS_CC);
        add_next_index_zval(return_value, item);
    }

}
#line 5801 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkActionGroup, remove_action)
{
	zval *action;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &action, gtkaction_ce))
		return;

    gtk_action_group_remove_action(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), GTK_ACTION(PHPG_GOBJECT(action)));

}


static PHP_METHOD(GtkActionGroup, set_sensitive)
{
	zend_bool sensitive;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &sensitive))
		return;

    gtk_action_group_set_sensitive(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), (gboolean)sensitive);

}


static PHP_METHOD(GtkActionGroup, set_translation_domain)
{
	char *domain;
	zend_bool free_domain = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &domain, &free_domain))
		return;

    gtk_action_group_set_translation_domain(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), domain);
	if (free_domain) g_free(domain);

}


static PHP_METHOD(GtkActionGroup, set_visible)
{
	zend_bool visible;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &visible))
		return;

    gtk_action_group_set_visible(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), (gboolean)visible);

}


static PHP_METHOD(GtkActionGroup, translate_string)
{
	char *string;
	zend_bool free_string = FALSE, free_result;
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &string, &free_string))
		return;

    php_retval = gtk_action_group_translate_string(GTK_ACTION_GROUP(PHPG_GOBJECT(this_ptr)), string);
	if (free_string) g_free(string);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_gtk_action_group_new, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_add_action, 0)
    ZEND_ARG_OBJ_INFO(0, action, GtkAction, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_add_action_with_accel, 0)
    ZEND_ARG_OBJ_INFO(0, action, GtkAction, 1)
    ZEND_ARG_INFO(0, accelerator)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_get_action, 0)
    ZEND_ARG_INFO(0, action_name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_remove_action, 0)
    ZEND_ARG_OBJ_INFO(0, action, GtkAction, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_set_sensitive, 0)
    ZEND_ARG_INFO(0, sensitive)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_set_translation_domain, 0)
    ZEND_ARG_INFO(0, domain)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_set_visible, 0)
    ZEND_ARG_INFO(0, visible)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkactiongroup_translate_string, 0)
    ZEND_ARG_INFO(0, string)
ZEND_END_ARG_INFO();

static function_entry gtkactiongroup_methods[] = {
	PHP_ME(GtkActionGroup, __construct,          arginfo_gtk_gtkactiongroup_gtk_action_group_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, add_action,           arginfo_gtk_gtkactiongroup_add_action, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, add_action_with_accel, arginfo_gtk_gtkactiongroup_add_action_with_accel, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, get_action,           arginfo_gtk_gtkactiongroup_get_action, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, get_name,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, get_sensitive,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, get_visible,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, list_actions,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, remove_action,        arginfo_gtk_gtkactiongroup_remove_action, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, set_sensitive,        arginfo_gtk_gtkactiongroup_set_sensitive, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, set_translation_domain, arginfo_gtk_gtkactiongroup_set_translation_domain, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, set_visible,          arginfo_gtk_gtkactiongroup_set_visible, ZEND_ACC_PUBLIC)
	PHP_ME(GtkActionGroup, translate_string,     arginfo_gtk_gtkactiongroup_translate_string, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkClipboard, __construct)
{
	GdkDisplay *display = gdk_display_get_default();
	zval *php_display = NULL, *php_selection = NULL;
	GdkAtom selection = GDK_SELECTION_CLIPBOARD;
	GObject *wrapped_obj;

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|OV", &php_display, gdkdisplay_ce, &php_selection)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkClipboard);
	}
    if (php_display)
        display = GDK_DISPLAY(PHPG_GOBJECT(php_display));

    if (php_selection) {
        selection = phpg_gdkatom_from_zval(php_selection TSRMLS_CC);
        if (selection == NULL) {
            php_error(E_WARNING, "%s::%s() expects selection argument to be a valid GdkAtom object",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            PHPG_THROW_CONSTRUCT_EXCEPTION(GtkClipboard);
        }
    }

	wrapped_obj = (GObject *) gtk_clipboard_get_for_display(display, selection);

	if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkClipboard);
	}
	g_object_ref(wrapped_obj);
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkClipboard, get)
{
	GdkAtom selection = GDK_SELECTION_CLIPBOARD;
	zval *php_selection = NULL;
	GtkClipboard* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|V", &php_selection))
		return;

    if (php_selection) {
        selection = phpg_gdkatom_from_zval(php_selection TSRMLS_CC);
        if (selection == NULL) {
            php_error(E_WARNING, "%s::%s() expects selection argument to be a valid GdkAtom object",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    php_retval = gtk_clipboard_get(selection);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkClipboard, get_display)
{
	GdkDisplay* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_clipboard_get_display(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}

#line 248 "ext/gtk+/gtkclipboard.overrides"
typedef struct {
    phpg_cb_data_t *get_cb_data;
    phpg_cb_data_t *clear_cb_data;
} phpg_clipboard_set_info;

static void phpg_clipboard_get_func_marshal(GtkClipboard *clipboard,
                                            GtkSelectionData *selection_data,
                                            guint info,
                                            gpointer user_data)
{
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    zval *php_selection_data = NULL;
    zval *php_info = NULL;
    phpg_clipboard_set_info *set_info = (phpg_clipboard_set_info *) user_data;

    TSRMLS_FETCH();

    if (!zend_is_callable(set_info->get_cb_data->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, set_info->get_cb_data->src_filename, set_info->get_cb_data->src_lineno);
        efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
    phpg_gboxed_new(&php_selection_data, GTK_TYPE_SELECTION_DATA, selection_data, FALSE, FALSE TSRMLS_CC);
    MAKE_STD_ZVAL(php_info);
    ZVAL_LONG(php_info, info);

    args = php_gtk_hash_as_array_offset(set_info->get_cb_data->user_args, 3, &n_args);
    args[0] = &php_clipboard;
    args[1] = &php_selection_data;
    args[2] = &php_info;

    call_user_function_ex(EG(function_table), NULL, set_info->get_cb_data->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);
    zval_ptr_dtor(&php_selection_data);
    zval_ptr_dtor(&php_info);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
}

static void phpg_clipboard_clear_func_marshal(GtkClipboard *clipboard,
                                              gpointer user_data)
{
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    phpg_clipboard_set_info *set_info = (phpg_clipboard_set_info *) user_data;

    TSRMLS_FETCH();

    if (!zend_is_callable(set_info->clear_cb_data->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, set_info->clear_cb_data->src_filename, set_info->clear_cb_data->src_lineno);
        efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(set_info->clear_cb_data->user_args, 1, &n_args);
    args[0] = &php_clipboard;

    call_user_function_ex(EG(function_table), NULL, set_info->clear_cb_data->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);

    phpg_cb_data_destroy(set_info->get_cb_data);
    phpg_cb_data_destroy(set_info->clear_cb_data);
    efree(set_info);
}

static PHP_METHOD(GtkClipboard, set_with_data)
{
    zval *get_cb, *clear_cb, *php_targets, *extra;
    phpg_clipboard_set_info *set_info;
	GtkTargetEntry *entries;
    gboolean ret;
    int n;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 3, &extra, "aVV", &php_targets, &get_cb, &clear_cb))
		return;

	entries = phpg_parse_target_entries(php_targets, &n TSRMLS_CC);
    if (!entries) return;

    zval_add_ref(&get_cb);
    zval_add_ref(&clear_cb);
    if (extra) {
        zval_add_ref(&extra);
    }

    set_info = emalloc(sizeof(phpg_clipboard_set_info));
    set_info->get_cb_data  = phpg_cb_data_new(get_cb, extra TSRMLS_CC);
    set_info->clear_cb_data  = phpg_cb_data_new(clear_cb, extra TSRMLS_CC);

    ret = gtk_clipboard_set_with_data(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), entries, n,
                                      phpg_clipboard_get_func_marshal,
                                      phpg_clipboard_clear_func_marshal,
                                      set_info);
    efree(entries);

    RETURN_BOOL(ret);
}

#line 6154 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkClipboard, get_owner)
{
	GObject* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_clipboard_get_owner(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkClipboard, clear)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_clipboard_clear(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkClipboard, set_text)
{
	char *text;
	zend_bool free_text = FALSE;
	long len = -1;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u|i", &text, &free_text, &len))
		return;

    gtk_clipboard_set_text(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), text, (gint)len);
	if (free_text) g_free(text);

}

#line 13 "ext/gtk+/gtkclipboard.overrides"

static void phpg_clipboard_request_contents_marshal(GtkClipboard *clipboard,
                                                    GtkSelectionData *selection_data,
                                                    gpointer user_data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) user_data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    zval *php_sel_data = NULL;
    
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
    phpg_gboxed_new(&php_sel_data, GTK_TYPE_SELECTION_DATA, selection_data, TRUE, TRUE TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
    args[0] = &php_clipboard;
    args[1] = &php_sel_data;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);
    zval_ptr_dtor(&php_sel_data);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
    phpg_cb_data_destroy(cbd);
}

static PHP_METHOD(GtkClipboard, request_contents)
{
    zval *php_target, *callback, *extra;
    phpg_cb_data_t *cbd;
    GdkAtom target;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &extra, "VV", &php_target, &callback))
		return;
    
    target = phpg_gdkatom_from_zval(php_target TSRMLS_CC);
    if (target == NULL) {
        php_error(E_WARNING, "%s::%s() expects target argument to be a valid GdkAtom object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    zval_add_ref(&callback);
    cbd = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_clipboard_request_contents(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), target,
                                   phpg_clipboard_request_contents_marshal, cbd);
    RETURN_TRUE;
}

#line 6272 "ext/gtk+/gen_gtk.c"


#line 164 "ext/gtk+/gtkclipboard.overrides"

static void phpg_clipboard_request_text_marshal(GtkClipboard *clipboard,
                                                const gchar *text,
                                                gpointer user_data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) user_data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    zval *php_text = NULL;
    gchar *cp_str;
    gsize cp_len;
    zend_bool free_cp_str;
    
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
    MAKE_STD_ZVAL(php_text);
    if (text) {
        cp_str = phpg_from_utf8(text, strlen(text), &cp_len, &free_cp_str TSRMLS_CC);
        if (cp_str) {
            ZVAL_STRINGL(php_text, cp_str, cp_len, 1);
            if (free_cp_str) {
                g_free(cp_str);
            }
        } else {
            ZVAL_NULL(php_text);
        }
    } else {
        ZVAL_NULL(php_text);
    }

    args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
    args[0] = &php_clipboard;
    args[1] = &php_text;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);
    zval_ptr_dtor(&php_text);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
    phpg_cb_data_destroy(cbd);
}

static PHP_METHOD(GtkClipboard, request_text)
{
    zval *callback, *extra;
    phpg_cb_data_t *cbd;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &callback))
		return;

    zval_add_ref(&callback);
    cbd = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_clipboard_request_text(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)),
                               phpg_clipboard_request_text_marshal, cbd);
    RETURN_TRUE;
}

#line 6354 "ext/gtk+/gen_gtk.c"


#line 87 "ext/gtk+/gtkclipboard.overrides"

static void phpg_clipboard_request_targets_marshal(GtkClipboard *clipboard,
                                                   GdkAtom *atoms,
                                                   gint n_atoms,
                                                   gpointer user_data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) user_data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_clipboard = NULL;
    zval *php_atoms = NULL;
    gchar *name;
    int i;
    
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_clipboard, (GObject*)clipboard TSRMLS_CC);
    MAKE_STD_ZVAL(php_atoms);
    array_init(php_atoms);
    for (i = 0; i < n_atoms; i++) {
        name = gdk_atom_name(atoms[i]);
        add_next_index_string(php_atoms, name, 1);
        g_free(name);
    }

    args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
    args[0] = &php_clipboard;
    args[1] = &php_atoms;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_clipboard);
    zval_ptr_dtor(&php_atoms);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
    phpg_cb_data_destroy(cbd);
}

static PHP_METHOD(GtkClipboard, request_targets)
{
    zval *callback, *extra;
    phpg_cb_data_t *cbd;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &callback))
		return;

    zval_add_ref(&callback);
    cbd = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_clipboard_request_targets(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)),
                                  phpg_clipboard_request_targets_marshal, cbd);
    RETURN_TRUE;
}

#line 6429 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkClipboard, wait_for_contents)
{
	GdkAtom target;
	zval *php_target = NULL;
	GtkSelectionData *php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_target))
		return;

    target = phpg_gdkatom_from_zval(php_target TSRMLS_CC);
    if (target == NULL) {
        php_error(E_WARNING, "%s::%s() expects target argument to be a valid GdkAtom object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_clipboard_wait_for_contents(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), target);
	phpg_gboxed_new(&return_value, GTK_TYPE_SELECTION_DATA, php_retval, TRUE, TRUE TSRMLS_CC);

}


static PHP_METHOD(GtkClipboard, wait_for_text)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_clipboard_wait_for_text(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkClipboard, wait_is_text_available)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_clipboard_wait_is_text_available(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}

#line 383 "ext/gtk+/gtkclipboard.overrides"
static PHP_METHOD(GtkClipboard, wait_for_targets)
{
    GtkSelectionData *data;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        return;
    }

    /* have to work around GTK+ bug #139883 */
    data = gtk_clipboard_wait_for_contents(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)),
                                           gdk_atom_intern("TARGETS", FALSE));

    if (data) {
        gint n_targets = 0;
        GdkAtom *targets = NULL;

        if (gtk_selection_data_get_targets(data, &targets, &n_targets)) {
            gchar *name;
            int i;

            array_init(return_value);
            for (i = 0; i < n_targets; i++) {
                name = gdk_atom_name(targets[i]);
                add_next_index_string(return_value, name, 1);
                g_free(name);
            }
            g_free(targets);
        }

        gtk_selection_data_free(data);
    }
}

#line 6533 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkClipboard, wait_for_image)
{
	GdkPixbuf* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_clipboard_wait_for_image(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkClipboard, set_image)
{
	zval *pixbuf;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &pixbuf, gdkpixbuf_ce))
		return;

    gtk_clipboard_set_image(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), GDK_PIXBUF(PHPG_GOBJECT(pixbuf)));

}


static PHP_METHOD(GtkClipboard, wait_is_image_available)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_clipboard_wait_is_image_available(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}

#line 420 "ext/gtk+/gtkclipboard.overrides"
static PHP_METHOD(GtkClipboard, set_can_store)
{
    zval *php_targets = NULL;
	GtkTargetEntry *entries;
    int n;

	NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a!", &php_targets))
		return;

    if (php_targets) {
        entries = phpg_parse_target_entries(php_targets, &n TSRMLS_CC);
    } else {
        entries = NULL;
        n = 0;
    }

    gtk_clipboard_set_can_store(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), entries, n);
    efree(entries);
    RETURN_TRUE;
}

#line 6602 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkClipboard, store)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_clipboard_store(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkClipboard, wait_is_target_available)
{
	GdkAtom target;
	zval *php_target = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_target))
		return;

    target = phpg_gdkatom_from_zval(php_target TSRMLS_CC);
    if (target == NULL) {
        php_error(E_WARNING, "%s::%s() expects target argument to be a valid GdkAtom object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_clipboard_wait_is_target_available(GTK_CLIPBOARD(PHPG_GOBJECT(this_ptr)), target);
	RETVAL_BOOL(php_retval);
}


ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkclipboard_clipboard_get_for_display, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, display, GdkDisplay, 1)
    ZEND_ARG_INFO(0, selection)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkclipboard_get, 0, 0, 0)
    ZEND_ARG_INFO(0, selection)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkclipboard_set_text, 0, 0, 1)
    ZEND_ARG_INFO(0, text)
    ZEND_ARG_INFO(0, len)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkclipboard_wait_for_contents, 0)
    ZEND_ARG_INFO(0, target)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkclipboard_set_image, 0)
    ZEND_ARG_OBJ_INFO(0, pixbuf, GdkPixbuf, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkclipboard_wait_is_target_available, 0)
    ZEND_ARG_INFO(0, target)
ZEND_END_ARG_INFO();

static function_entry gtkclipboard_methods[] = {
	PHP_ME(GtkClipboard, __construct,          arginfo_gtk_gtkclipboard_clipboard_get_for_display, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, clear,                NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, get,                  arginfo_gtk_gtkclipboard_get, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkClipboard, get_display,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, get_owner,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, request_contents,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, request_targets,      NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, request_text,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, set_can_store,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, set_image,            arginfo_gtk_gtkclipboard_set_image, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, set_text,             arginfo_gtk_gtkclipboard_set_text, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, set_with_data,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, store,                NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, wait_for_contents,    arginfo_gtk_gtkclipboard_wait_for_contents, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, wait_for_image,       NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, wait_for_targets,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, wait_for_text,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, wait_is_image_available, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, wait_is_target_available, arginfo_gtk_gtkclipboard_wait_is_target_available, ZEND_ACC_PUBLIC)
	PHP_ME(GtkClipboard, wait_is_text_available, NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkEntryCompletion, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkEntryCompletion);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkEntryCompletion);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkEntryCompletion, complete)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_entry_completion_complete(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkEntryCompletion, delete_action)
{
	long index;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &index))
		return;

    gtk_entry_completion_delete_action(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), (gint)index);

}


static PHP_METHOD(GtkEntryCompletion, get_entry)
{
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_entry_completion_get_entry(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkEntryCompletion, get_inline_completion)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_entry_completion_get_inline_completion(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkEntryCompletion, get_minimum_key_length)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_entry_completion_get_minimum_key_length(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkEntryCompletion, get_model)
{
	GtkTreeModel* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_entry_completion_get_model(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkEntryCompletion, get_popup_completion)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_entry_completion_get_popup_completion(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkEntryCompletion, get_text_column)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_entry_completion_get_text_column(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkEntryCompletion, insert_action_markup)
{
	long index;
	char *markup;
	zend_bool free_markup = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iu", &index, &markup, &free_markup))
		return;

    gtk_entry_completion_insert_action_markup(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), (gint)index, markup);
	if (free_markup) g_free(markup);

}


static PHP_METHOD(GtkEntryCompletion, insert_action_text)
{
	long index;
	char *text;
	zend_bool free_text = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iu", &index, &text, &free_text))
		return;

    gtk_entry_completion_insert_action_text(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), (gint)index, text);
	if (free_text) g_free(text);

}


static PHP_METHOD(GtkEntryCompletion, insert_prefix)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_entry_completion_insert_prefix(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkEntryCompletion, set_inline_completion)
{
	zend_bool inline_completion;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &inline_completion))
		return;

    gtk_entry_completion_set_inline_completion(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), (gboolean)inline_completion);

}

#line 2856 "ext/gtk+/gtk.overrides"
static gboolean phpg_entry_completion_match_func_marshal (GtkEntryCompletion *completion, const gchar *key, GtkTreeIter *iter, gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_completion = NULL, *php_iter = NULL, *php_key;
    gboolean matches = FALSE;
    gchar *cp_key;
    gsize cp_len;
    zend_bool free_result;
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return 0;
    }

    phpg_gobject_new(&php_completion,       (GObject*)completion   TSRMLS_CC);
    phpg_gboxed_new(&php_iter, GTK_TYPE_TREE_ITER, iter, TRUE, TRUE TSRMLS_CC);

    cp_key = phpg_from_utf8(key, strlen(key), &cp_len, &free_result TSRMLS_CC);
    if (!cp_key) {
        php_error(E_WARNING, "Could not convert key from UTF-8");
        return FALSE;
    }
    MAKE_STD_ZVAL(php_key);
    ZVAL_STRINGL(php_key, (char*)cp_key, cp_len, 1);
    if (free_result) {
        g_free(cp_key);
    }

    args = php_gtk_hash_as_array_offset(cbd->user_args, 3, &n_args);
    args[0] = &php_completion;
    args[1] = &php_key;
    args[2] = &php_iter;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_completion);
    zval_ptr_dtor(&php_key);
    zval_ptr_dtor(&php_iter);

    if (retval) {
        matches = zend_is_true(retval);
        zval_ptr_dtor(&retval);
    } else {
        matches = FALSE;
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);

    return matches;
}

static PHP_METHOD(GtkEntryCompletion, set_match_func)
{
    zval *php_callback, *extra;
    phpg_cb_data_t *cb_data;
    GtkEntryCompletionMatchFunc callback;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &php_callback))
        return;

    if (php_callback) {
        if (Z_TYPE_P(php_callback) == IS_NULL) {
            cb_data  = NULL;
            callback = NULL;
        } else {
            zval_add_ref(&php_callback);
            cb_data  = phpg_cb_data_new(php_callback, extra TSRMLS_CC);
            callback = (GtkEntryCompletionMatchFunc)phpg_entry_completion_match_func_marshal;
        }
    }

    gtk_entry_completion_set_match_func(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)),
                                                           callback,
                                                           cb_data, phpg_cb_data_destroy);
}


#line 6977 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkEntryCompletion, set_minimum_key_length)
{
	long length;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &length))
		return;

    gtk_entry_completion_set_minimum_key_length(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), (gint)length);

}


static PHP_METHOD(GtkEntryCompletion, set_model)
{
	zval *model;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &model, gtktreemodel_ce))
		return;

    gtk_entry_completion_set_model(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), GTK_TREE_MODEL(PHPG_GOBJECT(model)));

}


static PHP_METHOD(GtkEntryCompletion, set_popup_completion)
{
	zend_bool popup_completion;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &popup_completion))
		return;

    gtk_entry_completion_set_popup_completion(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), (gboolean)popup_completion);

}


static PHP_METHOD(GtkEntryCompletion, set_text_column)
{
	long column;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &column))
		return;

    gtk_entry_completion_set_text_column(GTK_ENTRY_COMPLETION(PHPG_GOBJECT(this_ptr)), (gint)column);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_delete_action, 0)
    ZEND_ARG_INFO(0, index)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_insert_action_markup, 0)
    ZEND_ARG_INFO(0, index)
    ZEND_ARG_INFO(0, markup)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_insert_action_text, 0)
    ZEND_ARG_INFO(0, index)
    ZEND_ARG_INFO(0, text)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_set_inline_completion, 0)
    ZEND_ARG_INFO(0, inline_completion)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_set_match_func, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_set_minimum_key_length, 0)
    ZEND_ARG_INFO(0, length)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_set_model, 0)
    ZEND_ARG_INFO(0, model)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_set_popup_completion, 0)
    ZEND_ARG_INFO(0, popup_completion)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkentrycompletion_set_text_column, 0)
    ZEND_ARG_INFO(0, column)
ZEND_END_ARG_INFO();

static function_entry gtkentrycompletion_methods[] = {
	PHP_ME(GtkEntryCompletion, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, complete,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, delete_action,        arginfo_gtk_gtkentrycompletion_delete_action, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, get_entry,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, get_inline_completion, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, get_minimum_key_length, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, get_model,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, get_popup_completion, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, get_text_column,      NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, insert_action_markup, arginfo_gtk_gtkentrycompletion_insert_action_markup, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, insert_action_text,   arginfo_gtk_gtkentrycompletion_insert_action_text, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, insert_prefix,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, set_inline_completion, arginfo_gtk_gtkentrycompletion_set_inline_completion, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, set_match_func,       arginfo_gtk_gtkentrycompletion_set_match_func, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, set_minimum_key_length, arginfo_gtk_gtkentrycompletion_set_minimum_key_length, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, set_model,            arginfo_gtk_gtkentrycompletion_set_model, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, set_popup_completion, arginfo_gtk_gtkentrycompletion_set_popup_completion, ZEND_ACC_PUBLIC)
	PHP_ME(GtkEntryCompletion, set_text_column,      arginfo_gtk_gtkentrycompletion_set_text_column, ZEND_ACC_PUBLIC)

	/***   GtkCellLayout interface implementations   ***/

	PHP_MALIAS(GtkCellLayout, add_attribute, add_attribute, arginfo_gtk_gtkcelllayout_add_attribute, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkCellLayout, clear, clear, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkCellLayout, clear_attributes, clear_attributes, arginfo_gtk_gtkcelllayout_clear_attributes, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkCellLayout, pack_end, pack_end, arginfo_gtk_gtkcelllayout_pack_end, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkCellLayout, pack_start, pack_start, arginfo_gtk_gtkcelllayout_pack_start, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkCellLayout, reorder, reorder, arginfo_gtk_gtkcelllayout_reorder, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkCellLayout, set_attributes, set_attributes, arginfo_gtk_gtkcelllayout_set_attributes, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkCellLayout, set_cell_data_func, set_cell_data_func, arginfo_gtk_gtkcelllayout_set_cell_data_func, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkIconFactory, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIconFactory);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIconFactory);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkIconFactory, add)
{
	char *stock_id;
	zend_bool free_stock_id = FALSE;
	GtkIconSet *icon_set = NULL;
	zval *php_icon_set;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uO", &stock_id, &free_stock_id, &php_icon_set, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_icon_set, GTK_TYPE_ICON_SET, FALSE TSRMLS_CC)) {
        icon_set = (GtkIconSet *) PHPG_GBOXED(php_icon_set);
    } else {
        php_error(E_WARNING, "%s::%s() expects icon_set argument to be a valid GtkIconSet object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_icon_factory_add(GTK_ICON_FACTORY(PHPG_GOBJECT(this_ptr)), stock_id, icon_set);
	if (free_stock_id) g_free(stock_id);

}


static PHP_METHOD(GtkIconFactory, add_default)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_icon_factory_add_default(GTK_ICON_FACTORY(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkIconFactory, lookup)
{
	char *stock_id;
	zend_bool free_stock_id = FALSE;
	GtkIconSet *php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &stock_id, &free_stock_id))
		return;

    php_retval = gtk_icon_factory_lookup(GTK_ICON_FACTORY(PHPG_GOBJECT(this_ptr)), stock_id);
	if (free_stock_id) g_free(stock_id);
	phpg_gboxed_new(&return_value, GTK_TYPE_ICON_SET, php_retval, TRUE, TRUE TSRMLS_CC);

}


static PHP_METHOD(GtkIconFactory, lookup_default)
{
	char *stock_id;
	zend_bool free_stock_id = FALSE;
	GtkIconSet *php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &stock_id, &free_stock_id))
		return;

    php_retval = gtk_icon_factory_lookup_default(stock_id);
	if (free_stock_id) g_free(stock_id);
	phpg_gboxed_new(&return_value, GTK_TYPE_ICON_SET, php_retval, TRUE, TRUE TSRMLS_CC);

}


static PHP_METHOD(GtkIconFactory, remove_default)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_icon_factory_remove_default(GTK_ICON_FACTORY(PHPG_GOBJECT(this_ptr)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkiconfactory_add, 0)
    ZEND_ARG_INFO(0, stock_id)
    ZEND_ARG_OBJ_INFO(0, icon_set, GtkIconSet, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkiconfactory_lookup, 0)
    ZEND_ARG_INFO(0, stock_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkiconfactory_lookup_default, 0)
    ZEND_ARG_INFO(0, stock_id)
ZEND_END_ARG_INFO();

static function_entry gtkiconfactory_methods[] = {
	PHP_ME(GtkIconFactory, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconFactory, add,                  arginfo_gtk_gtkiconfactory_add, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconFactory, add_default,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconFactory, lookup,               arginfo_gtk_gtkiconfactory_lookup, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconFactory, lookup_default,       arginfo_gtk_gtkiconfactory_lookup_default, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkIconFactory, remove_default,       NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkIconTheme, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIconTheme);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIconTheme);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkIconTheme, add_builtin_icon)
{
	char *icon_name;
	zend_bool free_icon_name = FALSE;
	long size;
	zval *pixbuf;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uiO", &icon_name, &free_icon_name, &size, &pixbuf, gdkpixbuf_ce))
		return;

    gtk_icon_theme_add_builtin_icon(icon_name, (gint)size, GDK_PIXBUF(PHPG_GOBJECT(pixbuf)));
	if (free_icon_name) g_free(icon_name);

}


static PHP_METHOD(GtkIconTheme, append_search_path)
{
	char *path;
	zend_bool free_path = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &path, &free_path))
		return;

    gtk_icon_theme_append_search_path(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), path);
	if (free_path) g_free(path);

}


static PHP_METHOD(GtkIconTheme, get_default)
{
	GtkIconTheme* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_icon_theme_get_default();
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkIconTheme, get_example_icon_name)
{
	gchar *php_retval, *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_icon_theme_get_example_icon_name(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkIconTheme, get_for_screen)
{
	zval *screen;
	GtkIconTheme* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &screen, gdkscreen_ce))
		return;

    php_retval = gtk_icon_theme_get_for_screen(GDK_SCREEN(PHPG_GOBJECT(screen)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}

#line 3699 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkIconTheme, get_search_path)
{
    gchar **paths;
    gint n_items = 0;
    int i;
    
    NOT_STATIC_METHOD();
    
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;
    
    gtk_icon_theme_get_search_path(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)),
				   &paths, &n_items);

    array_init(return_value);
    for (i = 0; i < n_items; i++)
    {
		gchar *string;
		gsize len;
		zend_bool free_result;
        string = phpg_from_utf8(paths[i], strlen(paths[i]), &len, &free_result TSRMLS_CC);
        if (string) {
            add_next_index_stringl(return_value,(char *)string, len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(string);
    }

    g_strfreev(paths);
}

#line 7384 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkIconTheme, has_icon)
{
	char *icon_name;
	zend_bool free_icon_name = FALSE;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &icon_name, &free_icon_name))
		return;

    php_retval = gtk_icon_theme_has_icon(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), icon_name);
	if (free_icon_name) g_free(icon_name);
	RETVAL_BOOL(php_retval);
}

#line 3734 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkIconTheme, list_icons)
{
    GList *icons, *item;
    gchar *context = NULL;
    zend_bool free_context = FALSE;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|u", &context, &free_context))
        return;

    icons = gtk_icon_theme_list_icons(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), context);

    array_init(return_value);
    for (item = icons; item; item = item->next) {
          add_next_index_string(return_value, item->data, 1);
          g_free(item->data);
    }
    g_list_free(icons);

    if (free_context) g_free(context);
}

#line 7428 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkIconTheme, load_icon)
{
	char *icon_name;
	zend_bool free_icon_name = FALSE;
	long size;
	GtkIconLookupFlags flags;
	zval *php_flags = NULL;
	GError *error = NULL;
	GdkPixbuf* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uiV", &icon_name, &free_icon_name, &size, &php_flags))
		return;

	if (php_flags && phpg_gvalue_get_flags(GTK_TYPE_ICON_LOOKUP_FLAGS, php_flags, (gint *)&flags) == FAILURE) {
		return;
	}

    php_retval = gtk_icon_theme_load_icon(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), icon_name, (gint)size, flags, &error);
	if (free_icon_name) g_free(icon_name);
    if (phpg_handle_gerror(&error TSRMLS_CC)) {
        return;
    }
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkIconTheme, lookup_icon)
{
	char *icon_name;
	zend_bool free_icon_name = FALSE;
	long size;
	GtkIconLookupFlags flags;
	zval *php_flags = NULL;
	GtkIconInfo *php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uiV", &icon_name, &free_icon_name, &size, &php_flags))
		return;

	if (php_flags && phpg_gvalue_get_flags(GTK_TYPE_ICON_LOOKUP_FLAGS, php_flags, (gint *)&flags) == FAILURE) {
		return;
	}

    php_retval = gtk_icon_theme_lookup_icon(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), icon_name, (gint)size, flags);
	if (free_icon_name) g_free(icon_name);
	phpg_gboxed_new(&return_value, GTK_TYPE_ICON_INFO, php_retval, TRUE, TRUE TSRMLS_CC);

}


static PHP_METHOD(GtkIconTheme, prepend_search_path)
{
	char *path;
	zend_bool free_path = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &path, &free_path))
		return;

    gtk_icon_theme_prepend_search_path(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), path);
	if (free_path) g_free(path);

}


static PHP_METHOD(GtkIconTheme, rescan_if_needed)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_icon_theme_rescan_if_needed(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkIconTheme, set_custom_theme)
{
	char *theme_name;
	zend_bool free_theme_name = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &theme_name, &free_theme_name))
		return;

    gtk_icon_theme_set_custom_theme(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), theme_name);
	if (free_theme_name) g_free(theme_name);

}


static PHP_METHOD(GtkIconTheme, set_screen)
{
	zval *screen;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &screen, gdkscreen_ce))
		return;

    gtk_icon_theme_set_screen(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)), GDK_SCREEN(PHPG_GOBJECT(screen)));

}

#line 3651 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkIconTheme, set_search_path)
{
	zval *php_paths, **path;
	gchar **paths;
	int i;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &php_paths))
        return;
        
    paths = g_new(gchar *, zend_hash_num_elements(Z_ARRVAL_P(php_paths)));

	for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_paths)), i = 0;
         zend_hash_get_current_data(Z_ARRVAL_P(php_paths), (void **)&path) == SUCCESS;
         zend_hash_move_forward(Z_ARRVAL_P(php_paths)), i++) {

         gchar *utf8 = NULL;
         gsize utf8_len = 0;
         zend_bool free_utf8 = 0;
         
         convert_to_string_ex(path);
         utf8 = phpg_to_utf8(Z_STRVAL_PP(path), Z_STRLEN_PP(path), &utf8_len, &free_utf8 TSRMLS_CC);

        if (!utf8) {
            g_free(paths);
            php_error(E_WARNING, "%s::%s() Could not convert path string to UTF-8",
                    get_active_class_name(NULL TSRMLS_CC),
                    get_active_function_name(TSRMLS_C));
            return;
        }

        if (free_utf8) {
            paths[i] = utf8;
        } else {
            /* Use GTK+ memory function here since gtk will own this */
            paths[i] = g_strdup(utf8);
        }
   }
        
	gtk_icon_theme_set_search_path(GTK_ICON_THEME(PHPG_GOBJECT(this_ptr)),
				   (const gchar **)paths, i);

    g_free(paths);
}

#line 7591 "ext/gtk+/gen_gtk.c"



ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_add_builtin_icon, 0)
    ZEND_ARG_INFO(0, icon_name)
    ZEND_ARG_INFO(0, size)
    ZEND_ARG_OBJ_INFO(0, pixbuf, GdkPixbuf, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_append_search_path, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_get_for_screen, 0)
    ZEND_ARG_OBJ_INFO(0, screen, GdkScreen, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_has_icon, 0)
    ZEND_ARG_INFO(0, icon_name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_load_icon, 0)
    ZEND_ARG_INFO(0, icon_name)
    ZEND_ARG_INFO(0, size)
    ZEND_ARG_INFO(0, flags)
    ZEND_ARG_INFO(0, error)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_lookup_icon, 0)
    ZEND_ARG_INFO(0, icon_name)
    ZEND_ARG_INFO(0, size)
    ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_prepend_search_path, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_set_custom_theme, 0)
    ZEND_ARG_INFO(0, theme_name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkicontheme_set_screen, 0)
    ZEND_ARG_OBJ_INFO(0, screen, GdkScreen, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkicontheme_set_search_path, 0, 0, 1)
    ZEND_ARG_ARRAY_INFO(0, search_paths, 0)
ZEND_END_ARG_INFO();


static function_entry gtkicontheme_methods[] = {
	PHP_ME(GtkIconTheme, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, add_builtin_icon,     arginfo_gtk_gtkicontheme_add_builtin_icon, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkIconTheme, append_search_path,   arginfo_gtk_gtkicontheme_append_search_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, get_default,          NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkIconTheme, get_example_icon_name, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, get_for_screen,       arginfo_gtk_gtkicontheme_get_for_screen, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkIconTheme, get_search_path,      NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, has_icon,             arginfo_gtk_gtkicontheme_has_icon, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, list_icons,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, load_icon,            arginfo_gtk_gtkicontheme_load_icon, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, lookup_icon,          arginfo_gtk_gtkicontheme_lookup_icon, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, prepend_search_path,  arginfo_gtk_gtkicontheme_prepend_search_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, rescan_if_needed,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, set_custom_theme,     arginfo_gtk_gtkicontheme_set_custom_theme, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, set_screen,           arginfo_gtk_gtkicontheme_set_screen, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIconTheme, set_search_path,      arginfo_gtk_gtkicontheme_set_search_path, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};
#line 274 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, __construct)
{
    zval ***args;
    GType *column_types;
    GObject *wrapped_obj;
    int i, argc = ZEND_NUM_ARGS();

    if (argc > 0) {
        args = php_gtk_func_args(argc);
        column_types = emalloc(argc * sizeof(GType));

        for (i = 0; i < argc; i++) {
            column_types[i] = phpg_gtype_from_zval(*args[i]);
            if (column_types[i] == 0) {
                efree(column_types);
                PHPG_THROW_CONSTRUCT_EXCEPTION(GtkListStore);
            }
        }

        wrapped_obj = g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);
        gtk_list_store_set_column_types(GTK_LIST_STORE(wrapped_obj), argc, column_types);

        efree(column_types);
        efree(args);
    } else {
        wrapped_obj = g_object_new(phpg_gtype_from_zval(this_ptr), NULL);
    }

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkListStore);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}

#line 7707 "ext/gtk+/gen_gtk.c"


#line 732 "ext/gtk+/gtktreeview.overrides"
static zval* phpg_gtkliststore_read_dimension_handler(zval *object, zval *offset, int type TSRMLS_DC)
{
    return phpg_gtktreemodel_read_dimension_handler(object, offset, type TSRMLS_CC);
}

#line 7716 "ext/gtk+/gen_gtk.c"


#line 739 "ext/gtk+/gtktreeview.overrides"
static void phpg_gtkliststore_write_dimension_handler(zval *object, zval *offset, zval *value TSRMLS_DC)
{
    phpg_gtktreemodel_write_dimension_handler(object, offset, value TSRMLS_CC);
}

#line 7725 "ext/gtk+/gen_gtk.c"


#line 725 "ext/gtk+/gtktreeview.overrides"
static int phpg_gtkliststore_has_dimension_handler(zval *object, zval *offset, int check_empty TSRMLS_DC)
{
    return phpg_gtktreemodel_has_dimension_handler(object, offset, check_empty TSRMLS_CC);
}

#line 7734 "ext/gtk+/gen_gtk.c"


#line 746 "ext/gtk+/gtktreeview.overrides"
static void phpg_gtkliststore_unset_dimension_handler(zval *object, zval *offset TSRMLS_DC)
{
    phpg_gtktreemodel_write_dimension_handler(object, offset, NULL TSRMLS_CC);
}

#line 7743 "ext/gtk+/gen_gtk.c"


#line 718 "ext/gtk+/gtktreeview.overrides"
static int phpg_gtkliststore_count_elements_handler(zval *object, long *count TSRMLS_DC)
{
    return phpg_gtktreemodel_count_elements_handler(object, count TSRMLS_CC);
}

#line 7752 "ext/gtk+/gen_gtk.c"



static zend_object_handlers gtkliststore_object_handlers;

static zend_object_value phpg_create_gtkliststore(zend_class_entry *ce TSRMLS_DC)
{
    zend_object_value zov;

    zov = phpg_create_gobject(ce TSRMLS_CC);
    zov.handlers = &gtkliststore_object_handlers;

    return zov;
}
#line 357 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, append)
{
    GtkTreeIter iter;
    zval *items = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|a", &items))
        return;

    gtk_list_store_append(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), &iter);

    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items TSRMLS_CC) == FAILURE)
        return;

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 7786 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkListStore, clear)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_list_store_clear(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)));

}

#line 413 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, insert)
{
    GtkTreeIter iter;
    GtkTreeModel *model;
    gint position;
    zval *items = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i|a", &position, &items))
        return;

    if (position < 0) {
        php_error(E_WARNING, "%s::%s() requires argument 1 to be greater than zero, %d given",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C), position);
        return;
    }

    model = GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr));

    if (items) {
        gint n_cols, i;
        gint *columns;
        GValue *values;
        zval **item;

        n_cols = gtk_tree_model_get_n_columns(model);
        if (zend_hash_num_elements(Z_ARRVAL_P(items)) != n_cols) {
            php_error(E_WARNING, "Cannot set row: number of row elements does not match the model");
            return;
        }

        columns = ecalloc(n_cols, sizeof(gint));
        values  = ecalloc(n_cols, sizeof(GValue));

        for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(items)), i = 0;
             zend_hash_get_current_data(Z_ARRVAL_P(items), (void **)&item) == SUCCESS;
             zend_hash_move_forward(Z_ARRVAL_P(items)), i++) {

            g_value_init(&values[i], gtk_tree_model_get_column_type(model, i));

            if (phpg_gvalue_from_zval(&values[i], item, TRUE TSRMLS_CC) == FAILURE) {
                php_error(E_WARNING, "Cannot set row: type of element %d does not match the model", i);
                for ( ; i >= 0; i--) {
                    g_value_unset(&values[i]);
                }
                efree(columns);
                efree(values);
                return;
            }
            columns[i] = i;
        }

        gtk_list_store_insert_with_valuesv(GTK_LIST_STORE(model), &iter, position,
                                           columns, values, n_cols);

        for (i = 0; i < n_cols; i++) {
            g_value_unset(&values[i]);
        }
        efree(columns);
        efree(values);
    } else {
        gtk_list_store_insert(GTK_LIST_STORE(model), &iter, position);
    }

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 7871 "ext/gtk+/gen_gtk.c"


#line 483 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, insert_after)
{
    GtkTreeIter iter;
    GtkTreeIter *sibling = NULL;
    GtkTreeModel *model;
    zval *items = NULL;
    zval *php_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O|a", &php_iter, gtktreeiter_ce, &items))
        return;

    sibling = (GtkTreeIter *) PHPG_GBOXED(php_iter);

    model = GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr));

    gtk_list_store_insert_after(GTK_LIST_STORE(model), &iter, sibling);

    if (items) {
        gint n_cols, i;
        GValue value = { 0 };
        zval **item;

        n_cols = gtk_tree_model_get_n_columns(model);
        if (zend_hash_num_elements(Z_ARRVAL_P(items)) != n_cols) {
            php_error(E_WARNING, "Cannot set row: number of row elements does not match the model");
            return;
        }

        for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(items)), i = 0;
             zend_hash_get_current_data(Z_ARRVAL_P(items), (void **)&item) == SUCCESS;
             zend_hash_move_forward(Z_ARRVAL_P(items)), i++) {

            g_value_init(&value, gtk_tree_model_get_column_type(model, i));

            if (phpg_gvalue_from_zval(&value, item, TRUE TSRMLS_CC) == FAILURE) {
                php_error(E_WARNING, "Cannot set row: type of element %d does not match the model", i);
                g_value_unset(&value);
                return;
            }
            gtk_list_store_set_value(GTK_LIST_STORE(model), &iter, i, &value);
        }
        g_value_unset(&value);
    }

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 7924 "ext/gtk+/gen_gtk.c"


#line 534 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, insert_before)
{
    GtkTreeIter iter;
    GtkTreeIter *sibling = NULL;
    GtkTreeModel *model;
    zval *items = NULL;
    zval *php_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O|a", &php_iter, gtktreeiter_ce, &items))
        return;

    sibling = (GtkTreeIter *) PHPG_GBOXED(php_iter);

    model = GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr));

    gtk_list_store_insert_before(GTK_LIST_STORE(model), &iter, sibling);

    if (items) {
        gint n_cols, i;
        GValue value = { 0 };
        zval **item;

        n_cols = gtk_tree_model_get_n_columns(model);
        if (zend_hash_num_elements(Z_ARRVAL_P(items)) != n_cols) {
            php_error(E_WARNING, "Cannot set row: number of row elements does not match the model");
            return;
        }

        for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(items)), i = 0;
             zend_hash_get_current_data(Z_ARRVAL_P(items), (void **)&item) == SUCCESS;
             zend_hash_move_forward(Z_ARRVAL_P(items)), i++) {

            g_value_init(&value, gtk_tree_model_get_column_type(model, i));

            if (phpg_gvalue_from_zval(&value, item, TRUE TSRMLS_CC) == FAILURE) {
                php_error(E_WARNING, "Cannot set row: type of element %d does not match the model", i);
                g_value_unset(&value);
                return;
            }
            gtk_list_store_set_value(GTK_LIST_STORE(model), &iter, i, &value);
        }
        g_value_unset(&value);
    }

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 7977 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkListStore, iter_is_valid)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_list_store_iter_is_valid(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkListStore, move_after)
{
	GtkTreeIter *iter = NULL, *position = NULL;
	zval *php_iter, *php_position;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ON", &php_iter, gboxed_ce, &php_position, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (Z_TYPE_P(php_position) != IS_NULL) {
        if (phpg_gboxed_check(php_position, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
            position = (GtkTreeIter *) PHPG_GBOXED(php_position);
        } else {
            php_error(E_WARNING, "%s::%s() expects position argument to be a valid GtkTreeIter object or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    gtk_list_store_move_after(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), iter, position);

}


static PHP_METHOD(GtkListStore, move_before)
{
	GtkTreeIter *iter = NULL, *position = NULL;
	zval *php_iter, *php_position;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ON", &php_iter, gboxed_ce, &php_position, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (Z_TYPE_P(php_position) != IS_NULL) {
        if (phpg_gboxed_check(php_position, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
            position = (GtkTreeIter *) PHPG_GBOXED(php_position);
        } else {
            php_error(E_WARNING, "%s::%s() expects position argument to be a valid GtkTreeIter object or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    gtk_list_store_move_before(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), iter, position);

}

#line 384 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, prepend)
{
    GtkTreeIter iter;
    zval *items = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|a", &items))
        return;

    gtk_list_store_prepend(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), &iter);

    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items TSRMLS_CC) == FAILURE)
        return;

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 8087 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkListStore, remove)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_list_store_remove(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_BOOL(php_retval);
}

#line 677 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, reorder)
{
    zval *php_order, **elem;
    GtkListStore *store;
    gint *order;
    int i, n_elems, store_size;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a/", &php_order))
        return;

    store = GTK_LIST_STORE(PHPG_GOBJECT(this_ptr));
    store_size = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), NULL);
    n_elems = zend_hash_num_elements(Z_ARRVAL_P(php_order));

    if (n_elems != store_size) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "new order array size (%d) not the same the number of items in the store (%d)", n_elems, store_size);
        return;
    }

    order = safe_emalloc(store_size, sizeof(gint), 0);
    for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_order)), i = 0;
         zend_hash_get_current_data(Z_ARRVAL_P(php_order), (void **) &elem) == SUCCESS;
         zend_hash_move_forward(Z_ARRVAL_P(php_order)), i++) {

        convert_to_long(*elem);
        if (Z_LVAL_PP(elem) < 0 || Z_LVAL_PP(elem) >= store_size) {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "position index out of range 0-%d", store_size);
            efree(order);
            return;
        }
        order[i] = Z_LVAL_PP(elem);
    }

    gtk_list_store_reorder(store, order);
    efree(order);
}

#line 8154 "ext/gtk+/gen_gtk.c"


#line 596 "ext/gtk+/gtktreeview.overrides"
static void phpg_store_set_impl(INTERNAL_FUNCTION_PARAMETERS, zend_bool is_tree)
{
    zval ***items;
    zval *php_iter;
    GtkTreeIter *iter = NULL;
    GtkTreeModel *model;
    int i, argc = ZEND_NUM_ARGS();

    NOT_STATIC_METHOD();

    if (argc < 3) {
        php_error(E_WARNING, "%s::%s() requires at least 3 arguments, %d given",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C), argc);
        return;
    }

    if (!php_gtk_parse_args(1, "O", &php_iter, gtktreeiter_ce))
        return;

    iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);

    if ((argc-1) % 2) {
        php_error(E_WARNING, "%s::%s() requires arguments 2-n to be column/value pairs",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    model = GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr));
    items = php_gtk_func_args(argc);
    for (i = 1; i < argc; i += 2) {
        zval *zcolumn = *items[i];
        zval *zvalue = *items[i+1];
        gint column;
        GValue value = { 0 };

        if (Z_TYPE_P(zcolumn) != IS_LONG) {
            php_error(E_WARNING, "%s::%s() requires argument %d to be an integer, %s given",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                      i, zend_zval_type_name(zcolumn));
            efree(items);
            return;
        }

        column = Z_LVAL_P(zcolumn);
        if (column < 0 || column >= gtk_tree_model_get_n_columns(model)) {
            php_error(E_WARNING, "%s::%s(): argument %d is out of range - model has %d column(s)",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                      i, gtk_tree_model_get_n_columns(model));
            efree(items);
            return;
        }

        g_value_init(&value, gtk_tree_model_get_column_type(model, column));

        if (phpg_gvalue_from_zval(&value, &zvalue, TRUE TSRMLS_CC) == FAILURE) {
            php_error(E_WARNING, "%s::%s(): argument %d is of the wrong type for column %d",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                      i+1, column);
            efree(items);
            return;
        }

        if (is_tree) {
            gtk_tree_store_set_value(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), iter, column, &value);
        } else {
            gtk_list_store_set_value(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), iter, column, &value);
        }

        g_value_unset(&value);
    }

    efree(items);
}

static PHP_METHOD(GtkListStore, set)
{
    phpg_store_set_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, FALSE);
}

#line 8237 "ext/gtk+/gen_gtk.c"


#line 311 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkListStore, set_column_types)
{
    zval *php_types, **item;
    GType *column_types;
    int i, n;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &php_types)) {
        return;
    }

    n = zend_hash_num_elements(Z_ARRVAL_P(php_types));

    if (n == 0) {
        php_error(E_WARNING, "number of columns has to be > 0");
        return;
    }

    column_types = safe_emalloc(n, sizeof(GType), 0);
    for (i = 0, zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_types));
         zend_hash_get_current_data(Z_ARRVAL_P(php_types), (void**)&item) == SUCCESS;
         zend_hash_move_forward(Z_ARRVAL_P(php_types)), i++) {

        column_types[i] = phpg_gtype_from_zval(*item);
        if (column_types[i] == 0) {
            efree(column_types);
            php_error(E_WARNING, "could not set column types for GtkListStore");
            return;
        }
    }

    gtk_list_store_set_column_types(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), i, column_types);

    efree(column_types);
}

#line 8278 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkListStore, swap)
{
	GtkTreeIter *a = NULL, *b = NULL;
	zval *php_a, *php_b;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_a, gboxed_ce, &php_b, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_a, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        a = (GtkTreeIter *) PHPG_GBOXED(php_a);
    } else {
        php_error(E_WARNING, "%s::%s() expects a argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_b, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        b = (GtkTreeIter *) PHPG_GBOXED(php_b);
    } else {
        php_error(E_WARNING, "%s::%s() expects b argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_list_store_swap(GTK_LIST_STORE(PHPG_GOBJECT(this_ptr)), a, b);

}

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkliststore_gtk_list_store_new, 0, 0, 0)
    ZEND_ARG_INFO(0, type_col_0)
    ZEND_ARG_INFO(0, type_col_1)
    ZEND_ARG_INFO(0, ...)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkliststore_append, 0, 0, 0)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkliststore_insert, 0, 0, 1)
    ZEND_ARG_INFO(0, position)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();



ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkliststore_iter_is_valid, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkliststore_move_after, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, position, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkliststore_move_before, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, position, GtkTreeIter, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkliststore_prepend, 0, 0, 0)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkliststore_remove, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkliststore_set, 0, 0, 3)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, column)
    ZEND_ARG_INFO(0, value)
    ZEND_ARG_INFO(0, column)
    ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkliststore_swap, 0)
    ZEND_ARG_OBJ_INFO(0, a, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, b, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

static function_entry gtkliststore_methods[] = {
	PHP_ME(GtkListStore, __construct,          arginfo_gtk_gtkliststore_gtk_list_store_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, append,               arginfo_gtk_gtkliststore_append, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, clear,                NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, insert,               arginfo_gtk_gtkliststore_insert, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, insert_after,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, insert_before,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, iter_is_valid,        arginfo_gtk_gtkliststore_iter_is_valid, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, move_after,           arginfo_gtk_gtkliststore_move_after, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, move_before,          arginfo_gtk_gtkliststore_move_before, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, prepend,              arginfo_gtk_gtkliststore_prepend, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, remove,               arginfo_gtk_gtkliststore_remove, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, reorder,              NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, set,                  arginfo_gtk_gtkliststore_set, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, set_column_types,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkListStore, swap,                 arginfo_gtk_gtkliststore_swap, ZEND_ACC_PUBLIC)

	/***   GtkTreeModel interface implementations   ***/

	PHP_MALIAS(GtkTreeModel, foreach, foreach, arginfo_gtk_gtktreemodel_foreach, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get, get, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_column_type, get_column_type, arginfo_gtk_gtktreemodel_get_column_type, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_flags, get_flags, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter, get_iter, arginfo_gtk_gtktreemodel_get_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_first, get_iter_first, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_root, get_iter_root, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_from_string, get_iter_from_string, arginfo_gtk_gtktreemodel_get_iter_from_string, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_n_columns, get_n_columns, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_path, get_path, arginfo_gtk_gtktreemodel_get_path, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_string_from_iter, get_string_from_iter, arginfo_gtk_gtktreemodel_get_string_from_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_value, get_value, arginfo_gtk_gtktreemodel_get_value, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_children, iter_children, arginfo_gtk_gtktreemodel_iter_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_has_child, iter_has_child, arginfo_gtk_gtktreemodel_iter_has_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_n_children, iter_n_children, arginfo_gtk_gtktreemodel_iter_n_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_next, iter_next, arginfo_gtk_gtktreemodel_iter_next, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_nth_child, iter_nth_child, arginfo_gtk_gtktreemodel_iter_nth_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_parent, iter_parent, arginfo_gtk_gtktreemodel_iter_parent, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, ref_node, ref_node, arginfo_gtk_gtktreemodel_ref_node, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_changed, row_changed, arginfo_gtk_gtktreemodel_row_changed, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_deleted, row_deleted, arginfo_gtk_gtktreemodel_row_deleted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_has_child_toggled, row_has_child_toggled, arginfo_gtk_gtktreemodel_row_has_child_toggled, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_inserted, row_inserted, arginfo_gtk_gtktreemodel_row_inserted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, rows_reordered, rows_reordered, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, unref_node, unref_node, arginfo_gtk_gtktreemodel_unref_node, ZEND_ACC_PUBLIC)

	/***   GtkTreeDragSource interface implementations   ***/

	PHP_MALIAS(GtkTreeDragSource, drag_data_delete, drag_data_delete, arginfo_gtk_gtktreedragsource_drag_data_delete, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragSource, drag_data_get, drag_data_get, arginfo_gtk_gtktreedragsource_drag_data_get, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragSource, row_draggable, row_draggable, arginfo_gtk_gtktreedragsource_row_draggable, ZEND_ACC_PUBLIC)

	/***   GtkTreeDragDest interface implementations   ***/

	PHP_MALIAS(GtkTreeDragDest, drag_data_received, drag_data_received, arginfo_gtk_gtktreedragdest_drag_data_received, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragDest, row_drop_possible, row_drop_possible, arginfo_gtk_gtktreedragdest_row_drop_possible, ZEND_ACC_PUBLIC)

	/***   GtkTreeSortable interface implementations   ***/

	PHP_MALIAS(GtkTreeSortable, get_sort_column_id, get_sort_column_id, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, has_default_sort_func, has_default_sort_func, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_default_sort_func, set_default_sort_func, arginfo_gtk_gtktreesortable_set_default_sort_func, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_sort_column_id, set_sort_column_id, arginfo_gtk_gtktreesortable_set_sort_column_id, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_sort_func, set_sort_func, arginfo_gtk_gtktreesortable_set_sort_func, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, sort_column_changed, sort_column_changed, NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkObject, flags)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = GTK_OBJECT_FLAGS(GTK_OBJECT(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkObject, set_flags)
{
	long flags;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &flags))
		return;

    GTK_OBJECT_SET_FLAGS(GTK_OBJECT(PHPG_GOBJECT(this_ptr)), (guint)flags);

}


static PHP_METHOD(GtkObject, unset_flags)
{
	long flags;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &flags))
		return;

    GTK_OBJECT_UNSET_FLAGS(GTK_OBJECT(PHPG_GOBJECT(this_ptr)), (guint)flags);

}


static PHP_METHOD(GtkObject, destroy)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_object_destroy(GTK_OBJECT(PHPG_GOBJECT(this_ptr)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkobject_set_flags, 0)
    ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkobject_unset_flags, 0)
    ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO();

static function_entry gtkobject_methods[] = {
	PHP_ME(GtkObject, destroy,              NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkObject, flags,                NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkObject, set_flags,            arginfo_gtk_gtkobject_set_flags, ZEND_ACC_PUBLIC)
	PHP_ME(GtkObject, unset_flags,          arginfo_gtk_gtkobject_unset_flags, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkItemFactory, __construct)
{
	GType container_type;
	zval *php_container_type = NULL, *php_accel_group = NULL;
	char *path;
	zend_bool free_path = FALSE;
	GtkAccelGroup *accel_group = NULL;
	GObject *wrapped_obj;

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Vu|N", &php_container_type, &path, &free_path, &php_accel_group, gtkaccelgroup_ce)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkItemFactory);
	}
    if ((container_type = phpg_gtype_from_zval(php_container_type)) == 0) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkItemFactory);
    }
    if (php_accel_group) {
        if (Z_TYPE_P(php_accel_group) == IS_NULL)
            accel_group = NULL;
        else
            accel_group = GTK_ACCEL_GROUP(PHPG_GOBJECT(php_accel_group));
    }

	phpg_warn_deprecated("use GTKUIManager" TSRMLS_CC);

	wrapped_obj = (GObject *) gtk_item_factory_new(container_type, path, accel_group);
	if (free_path) g_free(path);

	if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkItemFactory);
	}

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkItemFactory, path_delete)
{
	char *ifactory_path, *path;
	zend_bool free_ifactory_path = FALSE, free_path = FALSE;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uu", &ifactory_path, &free_ifactory_path, &path, &free_path))
		return;

    gtk_item_factories_path_delete(ifactory_path, path);
	if (free_ifactory_path) g_free(ifactory_path);
	if (free_path) g_free(path);

}


static PHP_METHOD(GtkItemFactory, add_foreign)
{
	zval *accel_widget, *accel_group, *php_modifiers = NULL;
	char *full_path;
	zend_bool free_full_path = FALSE;
	long keyval;
	GdkModifierType modifiers;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OuOiV", &accel_widget, gtkwidget_ce, &full_path, &free_full_path, &accel_group, gtkaccelgroup_ce, &keyval, &php_modifiers))
		return;

	if (php_modifiers && phpg_gvalue_get_flags(GDK_TYPE_MODIFIER_TYPE, php_modifiers, (gint *)&modifiers) == FAILURE) {
		return;
	}

	phpg_warn_deprecated("use GtkMenuItem::set_accel_path() and GtkWidget::set_accel_path()" TSRMLS_CC);

    gtk_item_factory_add_foreign(GTK_WIDGET(PHPG_GOBJECT(accel_widget)), full_path, GTK_ACCEL_GROUP(PHPG_GOBJECT(accel_group)), (guint)keyval, modifiers);
	if (free_full_path) g_free(full_path);

}


static PHP_METHOD(GtkItemFactory, construct)
{
	GType container_type;
	zval *php_container_type = NULL, *accel_group;
	char *path;
	zend_bool free_path = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VuO", &php_container_type, &path, &free_path, &accel_group, gtkaccelgroup_ce))
		return;
    if ((container_type = phpg_gtype_from_zval(php_container_type)) == 0) {
        return;
    }

    gtk_item_factory_construct(GTK_ITEM_FACTORY(PHPG_GOBJECT(this_ptr)), container_type, path, GTK_ACCEL_GROUP(PHPG_GOBJECT(accel_group)));
	if (free_path) g_free(path);

}


static PHP_METHOD(GtkItemFactory, delete_item)
{
	char *path;
	zend_bool free_path = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &path, &free_path))
		return;

    gtk_item_factory_delete_item(GTK_ITEM_FACTORY(PHPG_GOBJECT(this_ptr)), path);
	if (free_path) g_free(path);

}


static PHP_METHOD(GtkItemFactory, from_path)
{
	char *path;
	zend_bool free_path = FALSE;
	GtkItemFactory* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &path, &free_path))
		return;

    php_retval = gtk_item_factory_from_path(path);
	if (free_path) g_free(path);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkItemFactory, from_widget)
{
	zval *widget;
	GtkItemFactory* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &widget, gtkwidget_ce))
		return;

    php_retval = gtk_item_factory_from_widget(GTK_WIDGET(PHPG_GOBJECT(widget)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkItemFactory, get_item)
{
	char *path;
	zend_bool free_path = FALSE;
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &path, &free_path))
		return;

    php_retval = gtk_item_factory_get_item(GTK_ITEM_FACTORY(PHPG_GOBJECT(this_ptr)), path);
	if (free_path) g_free(path);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkItemFactory, get_item_by_action)
{
	long action;
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &action))
		return;

    php_retval = gtk_item_factory_get_item_by_action(GTK_ITEM_FACTORY(PHPG_GOBJECT(this_ptr)), (guint)action);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkItemFactory, get_widget)
{
	char *path;
	zend_bool free_path = FALSE;
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &path, &free_path))
		return;

    php_retval = gtk_item_factory_get_widget(GTK_ITEM_FACTORY(PHPG_GOBJECT(this_ptr)), path);
	if (free_path) g_free(path);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkItemFactory, get_widget_by_action)
{
	long action;
	GtkWidget* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &action))
		return;

    php_retval = gtk_item_factory_get_widget_by_action(GTK_ITEM_FACTORY(PHPG_GOBJECT(this_ptr)), (guint)action);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkItemFactory, path_from_widget)
{
	zval *widget;
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &widget, gtkwidget_ce))
		return;

    php_retval = gtk_item_factory_path_from_widget(GTK_WIDGET(PHPG_GOBJECT(widget)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}


static PHP_METHOD(GtkItemFactory, popup)
{
	long x, y, mouse_button, time = GDK_CURRENT_TIME;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "iii|i", &x, &y, &mouse_button, &time))
		return;

    gtk_item_factory_popup(GTK_ITEM_FACTORY(PHPG_GOBJECT(this_ptr)), (guint)x, (guint)y, (guint)mouse_button, (guint32)time);

}


ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkitemfactory_gtk_item_factory_new, 0, 0, 2)
    ZEND_ARG_OBJ_INFO(0, container_type, GType, 1)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, accel_group, GtkAccelGroup, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_path_delete, 0)
    ZEND_ARG_INFO(0, ifactory_path)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_add_foreign, 0)
    ZEND_ARG_OBJ_INFO(0, accel_widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, full_path)
    ZEND_ARG_OBJ_INFO(0, accel_group, GtkAccelGroup, 1)
    ZEND_ARG_INFO(0, keyval)
    ZEND_ARG_INFO(0, modifiers)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_construct, 0)
    ZEND_ARG_OBJ_INFO(0, container_type, GType, 1)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, accel_group, GtkAccelGroup, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_delete_item, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_from_path, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_from_widget, 0)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_get_item, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_get_item_by_action, 0)
    ZEND_ARG_INFO(0, action)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_get_widget, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_get_widget_by_action, 0)
    ZEND_ARG_INFO(0, action)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkitemfactory_path_from_widget, 0)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkitemfactory_popup, 0, 0, 3)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, mouse_button)
    ZEND_ARG_INFO(0, time)
ZEND_END_ARG_INFO();

static function_entry gtkitemfactory_methods[] = {
	PHP_ME(GtkItemFactory, __construct,          arginfo_gtk_gtkitemfactory_gtk_item_factory_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkItemFactory, add_foreign,          arginfo_gtk_gtkitemfactory_add_foreign, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkItemFactory, construct,            arginfo_gtk_gtkitemfactory_construct, ZEND_ACC_PUBLIC)
	PHP_ME(GtkItemFactory, delete_item,          arginfo_gtk_gtkitemfactory_delete_item, ZEND_ACC_PUBLIC)
	PHP_ME(GtkItemFactory, from_path,            arginfo_gtk_gtkitemfactory_from_path, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkItemFactory, from_widget,          arginfo_gtk_gtkitemfactory_from_widget, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkItemFactory, get_item,             arginfo_gtk_gtkitemfactory_get_item, ZEND_ACC_PUBLIC)
	PHP_ME(GtkItemFactory, get_item_by_action,   arginfo_gtk_gtkitemfactory_get_item_by_action, ZEND_ACC_PUBLIC)
	PHP_ME(GtkItemFactory, get_widget,           arginfo_gtk_gtkitemfactory_get_widget, ZEND_ACC_PUBLIC)
	PHP_ME(GtkItemFactory, get_widget_by_action, arginfo_gtk_gtkitemfactory_get_widget_by_action, ZEND_ACC_PUBLIC)
	PHP_ME(GtkItemFactory, path_delete,          arginfo_gtk_gtkitemfactory_path_delete, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkItemFactory, path_from_widget,     arginfo_gtk_gtkitemfactory_path_from_widget, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkItemFactory, popup,                arginfo_gtk_gtkitemfactory_popup, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkIMContext, delete_surrounding)
{
	long offset, n_chars;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &offset, &n_chars))
		return;

    php_retval = gtk_im_context_delete_surrounding(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)), (gint)offset, (gint)n_chars);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkIMContext, filter_keypress)
{
	GdkEvent *event = NULL;
	zval *php_event;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_event, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_event, GDK_TYPE_EVENT, FALSE TSRMLS_CC)) {
        event = (GdkEvent *) PHPG_GBOXED(php_event);
    } else {
        php_error(E_WARNING, "%s::%s() expects event argument to be a valid GdkEvent object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_im_context_filter_keypress(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)), (GdkEventKey *)event);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkIMContext, focus_in)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_im_context_focus_in(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkIMContext, focus_out)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_im_context_focus_out(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkIMContext, reset)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_im_context_reset(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkIMContext, set_client_window)
{
	zval *window;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &window, gdkwindow_ce))
		return;

    gtk_im_context_set_client_window(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)));

}


static PHP_METHOD(GtkIMContext, set_cursor_location)
{
	GdkRectangle area = { 0, 0, 0, 0 };
	zval *php_area;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_area))
		return;

    if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
    gtk_im_context_set_cursor_location(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)), &area);

}


static PHP_METHOD(GtkIMContext, set_surrounding)
{
	char *text;
	zend_bool free_text = FALSE;
	long len, cursor_index;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uii", &text, &free_text, &len, &cursor_index))
		return;

    gtk_im_context_set_surrounding(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)), text, (gint)len, (gint)cursor_index);
	if (free_text) g_free(text);

}


static PHP_METHOD(GtkIMContext, set_use_preedit)
{
	zend_bool use_preedit;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &use_preedit))
		return;

    gtk_im_context_set_use_preedit(GTK_IM_CONTEXT(PHPG_GOBJECT(this_ptr)), (gboolean)use_preedit);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkimcontext_delete_surrounding, 0)
    ZEND_ARG_INFO(0, offset)
    ZEND_ARG_INFO(0, n_chars)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkimcontext_filter_keypress, 0)
    ZEND_ARG_INFO(0, event)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkimcontext_set_client_window, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkimcontext_set_cursor_location, 0)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkimcontext_set_surrounding, 0)
    ZEND_ARG_INFO(0, text)
    ZEND_ARG_INFO(0, len)
    ZEND_ARG_INFO(0, cursor_index)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkimcontext_set_use_preedit, 0)
    ZEND_ARG_INFO(0, use_preedit)
ZEND_END_ARG_INFO();

static function_entry gtkimcontext_methods[] = {
	PHP_ME(GtkIMContext, delete_surrounding,   arginfo_gtk_gtkimcontext_delete_surrounding, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, filter_keypress,      arginfo_gtk_gtkimcontext_filter_keypress, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, focus_in,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, focus_out,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, reset,                NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, set_client_window,    arginfo_gtk_gtkimcontext_set_client_window, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, set_cursor_location,  arginfo_gtk_gtkimcontext_set_cursor_location, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, set_surrounding,      arginfo_gtk_gtkimcontext_set_surrounding, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMContext, set_use_preedit,      arginfo_gtk_gtkimcontext_set_use_preedit, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkFileFilter, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkFileFilter);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkFileFilter);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}

#line 2958 "ext/gtk+/gtk.overrides"
static void phpg_file_filter_add_custom_marshal_add_file(const gchar *filename, int flags, int flag, zval *php_filter_info)
{
    gchar *cp = NULL;
    gchar *fn = NULL;
    gsize cp_len = 0;
    zend_bool free_cp = FALSE;
    TSRMLS_FETCH();

    if (filename && (flags & flag)
    ) {
        fn = g_filename_to_utf8(filename, strlen(filename), NULL, NULL, NULL);
        cp = phpg_from_utf8(fn, strlen(fn), &cp_len, &free_cp TSRMLS_CC);
        if (cp) {
            add_next_index_string(php_filter_info, (char *)cp, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_cp)
            g_free(cp);
    } else {
        add_next_index_null(php_filter_info);
    }
}
static gboolean phpg_file_filter_add_custom_marshal(GtkFileFilterInfo *filter_info, gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_filter_info = NULL;
    gboolean show = TRUE;
    gchar *cp = NULL;
    gsize cp_len = 0;
    zend_bool free_cp = FALSE;

    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return 0;
    }

    MAKE_STD_ZVAL(php_filter_info);
    array_init(php_filter_info);

    phpg_file_filter_add_custom_marshal_add_file(
        filter_info->filename,
        filter_info->contains,
        GTK_FILE_FILTER_FILENAME,
        php_filter_info
    );
    phpg_file_filter_add_custom_marshal_add_file(
        filter_info->uri,
        filter_info->contains,
        GTK_FILE_FILTER_URI,
        php_filter_info
    );
    phpg_file_filter_add_custom_marshal_add_file(
        filter_info->display_name,
        filter_info->contains,
        GTK_FILE_FILTER_DISPLAY_NAME,
        php_filter_info
    );

    //mime_type
    if (filter_info->mime_type
        && (filter_info->contains & GTK_FILE_FILTER_MIME_TYPE)
    ) {
        cp = phpg_from_utf8(filter_info->mime_type, strlen(filter_info->mime_type), &cp_len, &free_cp TSRMLS_CC);
        if (cp) {
            add_next_index_string(php_filter_info, (char *)cp, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_cp)
            g_free(cp);
    } else {
        add_next_index_null(php_filter_info);
    }

    args = php_gtk_hash_as_array_offset(cbd->user_args, 1, &n_args);
    args[0] = &php_filter_info;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_filter_info);

    if (retval) {
        show = zend_is_true(retval);
        zval_ptr_dtor(&retval);
    } else {
        show = TRUE;
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);

    return show;
}

static PHP_METHOD(GtkFileFilter, add_custom)
{
    zval *callback, *extra;
    phpg_cb_data_t *cb_data;
    GtkFileFilterFlags flags = 0;
    zval *php_flags = NULL;


    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &extra, "VV", &php_flags, &callback))
        return;

    if (php_flags && phpg_gvalue_get_flags(GTK_TYPE_FILE_FILTER_FLAGS, php_flags, (gint *)&flags) == FAILURE) {
        return;
    }

    zval_add_ref(&callback);
    cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_file_filter_add_custom(
            GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)),
            flags,
            (GtkFileFilterFunc)phpg_file_filter_add_custom_marshal,
            cb_data, phpg_cb_data_destroy
    );
}


#line 9191 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkFileFilter, add_mime_type)
{
	char *mime_type;
	zend_bool free_mime_type = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &mime_type, &free_mime_type))
		return;

    gtk_file_filter_add_mime_type(GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)), mime_type);
	if (free_mime_type) g_free(mime_type);

}


static PHP_METHOD(GtkFileFilter, add_pattern)
{
	char *pattern;
	zend_bool free_pattern = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &pattern, &free_pattern))
		return;

    gtk_file_filter_add_pattern(GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)), pattern);
	if (free_pattern) g_free(pattern);

}


static PHP_METHOD(GtkFileFilter, add_pixbuf_formats)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_file_filter_add_pixbuf_formats(GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)));

}

#line 3100 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkFileFilter, filter)
{
    GtkFileFilterInfo filter_info = { 0, NULL, NULL, NULL, NULL };
    zval *php_filter_info = NULL, **temp_value;
    gchar **values;
    gboolean result;
    int i = 0;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &php_filter_info)) {
        return;
    }

    if (zend_hash_num_elements(Z_ARRVAL_P(php_filter_info)) != 4) {
        php_error(E_WARNING, "%s::%s() file info array requires 4 values of type string or NULL",
                  get_active_class_name(NULL TSRMLS_CC),
                  get_active_function_name(TSRMLS_C));
        return;
    }

    zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_filter_info));
    values = safe_emalloc(4, sizeof(gchar *), 0);

    while (zend_hash_get_current_data(Z_ARRVAL_P(php_filter_info), (void **)&temp_value) == SUCCESS) {
        gchar *utf8 = NULL;
        gsize utf8_len = 0;
        zend_bool free_utf8 = 0;

        if (Z_TYPE_P(*temp_value) == IS_NULL) {
            values[i++] = NULL;
        } else {
            convert_to_string_ex(temp_value);
            utf8 = phpg_to_utf8(Z_STRVAL_PP(temp_value), Z_STRLEN_PP(temp_value), &utf8_len, &free_utf8 TSRMLS_CC);

            if (!utf8) {
                efree(values);
                php_error(E_WARNING, "%s::%s() Could not convert filter info string to UTF-8",
                        get_active_class_name(NULL TSRMLS_CC),
                        get_active_function_name(TSRMLS_C));
                return;
            }

            if (free_utf8) {
                values[i++] = utf8;
            } else {
                /* Use GTK+ memory function here since utf8 may also allocated by it */
                values[i++] = g_strdup(utf8);
            }
        }

        zend_hash_move_forward(Z_ARRVAL_P(php_filter_info));
    }

    if (values[0] != NULL) {
        filter_info.filename     = values[0];
        filter_info.contains     |= GTK_FILE_FILTER_FILENAME;
    }
    if (values[1] != NULL) {
        filter_info.uri          = values[1];
        filter_info.contains     |= GTK_FILE_FILTER_URI;
    }
    if (values[2] != NULL) {
        filter_info.display_name = values[2];
        filter_info.contains     |= GTK_FILE_FILTER_DISPLAY_NAME;
    }
    if (values[3] != NULL) {
        filter_info.mime_type    = values[3];
        filter_info.contains     |= GTK_FILE_FILTER_MIME_TYPE;
    }

    efree(values);

    result = gtk_file_filter_filter(GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)), &filter_info);
    RETURN_BOOL(result);
}

#line 9317 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkFileFilter, get_name)
{
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_filter_get_name(GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}


static PHP_METHOD(GtkFileFilter, get_needed)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_file_filter_get_needed(GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkFileFilter, set_name)
{
	char *name;
	zend_bool free_name = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &name, &free_name))
		return;

    gtk_file_filter_set_name(GTK_FILE_FILTER(PHPG_GOBJECT(this_ptr)), name);
	if (free_name) g_free(name);

}

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilefilter_add_custom, 0)
    ZEND_ARG_INFO(0, flags_needed)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilefilter_add_mime_type, 0)
    ZEND_ARG_INFO(0, mime_type)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilefilter_add_pattern, 0)
    ZEND_ARG_INFO(0, pattern)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilefilter_filter, 0)
    ZEND_ARG_INFO(0, filterinfo)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkfilefilter_set_name, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

static function_entry gtkfilefilter_methods[] = {
	PHP_ME(GtkFileFilter, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, add_custom,           arginfo_gtk_gtkfilefilter_add_custom, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, add_mime_type,        arginfo_gtk_gtkfilefilter_add_mime_type, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, add_pattern,          arginfo_gtk_gtkfilefilter_add_pattern, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, add_pixbuf_formats,   NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, filter,               arginfo_gtk_gtkfilefilter_filter, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, get_name,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, get_needed,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkFileFilter, set_name,             arginfo_gtk_gtkfilefilter_set_name, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkIMMulticontext, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIMMulticontext);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIMMulticontext);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkIMMulticontext, append_menuitems)
{
	zval *menushell;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &menushell, gtkmenushell_ce))
		return;

    gtk_im_multicontext_append_menuitems(GTK_IM_MULTICONTEXT(PHPG_GOBJECT(this_ptr)), GTK_MENU_SHELL(PHPG_GOBJECT(menushell)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkimmulticontext_append_menuitems, 0)
    ZEND_ARG_OBJ_INFO(0, menushell, GtkMenuShell, 1)
ZEND_END_ARG_INFO();

static function_entry gtkimmulticontext_methods[] = {
	PHP_ME(GtkIMMulticontext, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkIMMulticontext, append_menuitems,     arginfo_gtk_gtkimmulticontext_append_menuitems, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkIMContextSimple, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIMContextSimple);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkIMContextSimple);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static function_entry gtkimcontextsimple_methods[] = {
	PHP_ME(GtkIMContextSimple, __construct,          NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellRenderer, activate)
{
	GdkEvent *event = NULL;
	zval *php_event, *widget, *php_background_area, *php_cell_area, *php_flags = NULL;
	char *path;
	zend_bool free_path = FALSE;
	GdkRectangle background_area = { 0, 0, 0, 0 }, cell_area = { 0, 0, 0, 0 };
	GtkCellRendererState flags;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOuVVV", &php_event, gboxed_ce, &widget, gtkwidget_ce, &path, &free_path, &php_background_area, &php_cell_area, &php_flags))
		return;

    if (phpg_gboxed_check(php_event, GDK_TYPE_EVENT, FALSE TSRMLS_CC)) {
        event = (GdkEvent *) PHPG_GBOXED(php_event);
    } else {
        php_error(E_WARNING, "%s::%s() expects event argument to be a valid GdkEvent object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_rectangle_from_zval(php_background_area, (GdkRectangle*)&background_area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects background_area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
    if (phpg_rectangle_from_zval(php_cell_area, (GdkRectangle*)&cell_area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects cell_area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
	if (php_flags && phpg_gvalue_get_flags(GTK_TYPE_CELL_RENDERER_STATE, php_flags, (gint *)&flags) == FAILURE) {
		return;
	}

    php_retval = gtk_cell_renderer_activate(GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)), event, GTK_WIDGET(PHPG_GOBJECT(widget)), path, &background_area, &cell_area, flags);
	if (free_path) g_free(path);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkCellRenderer, editing_canceled)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

	phpg_warn_deprecated("since GTK+ 2.6, please use GtkCellRenderer::stop_editing()" TSRMLS_CC);

    gtk_cell_renderer_editing_canceled(GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)));

}

#line 159 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkCellRenderer, get_fixed_size)
{
    int width, height = 0;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    gtk_cell_renderer_get_fixed_size(GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)), &width, &height);
    php_gtk_build_value(&return_value, "(ii)", width, height);
}

#line 9555 "ext/gtk+/gen_gtk.c"


#line 181 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkCellRenderer, get_size)
{
    int x_offset, y_offset, width, height = 0;
    zval *widget = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &widget, gtkwidget_ce))
        return;

    gtk_cell_renderer_get_size(
        GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)),
        GTK_WIDGET(PHPG_GOBJECT(widget)),
        NULL,
        &x_offset, &y_offset, &width, &height
    );
    php_gtk_build_value(&return_value, "(iiii)", x_offset, y_offset, width, height);
}

#line 9578 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkCellRenderer, render)
{
	zval *window, *widget, *php_background_area, *php_cell_area, *php_expose_area, *php_flags = NULL;
	GdkRectangle background_area = { 0, 0, 0, 0 }, cell_area = { 0, 0, 0, 0 }, expose_area = { 0, 0, 0, 0 };
	GtkCellRendererState flags;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOVVVV", &window, gdkwindow_ce, &widget, gtkwidget_ce, &php_background_area, &php_cell_area, &php_expose_area, &php_flags))
		return;

    if (phpg_rectangle_from_zval(php_background_area, (GdkRectangle*)&background_area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects background_area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
    if (phpg_rectangle_from_zval(php_cell_area, (GdkRectangle*)&cell_area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects cell_area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
    if (phpg_rectangle_from_zval(php_expose_area, (GdkRectangle*)&expose_area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects expose_area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
	if (php_flags && phpg_gvalue_get_flags(GTK_TYPE_CELL_RENDERER_STATE, php_flags, (gint *)&flags) == FAILURE) {
		return;
	}

    gtk_cell_renderer_render(GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), GTK_WIDGET(PHPG_GOBJECT(widget)), &background_area, &cell_area, &expose_area, flags);

}


static PHP_METHOD(GtkCellRenderer, set_fixed_size)
{
	long width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &width, &height))
		return;

    gtk_cell_renderer_set_fixed_size(GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)), (gint)width, (gint)height);

}


static PHP_METHOD(GtkCellRenderer, start_editing)
{
	GdkEvent *event = NULL;
	zval *php_event, *widget, *php_background_area, *php_cell_area, *php_flags = NULL;
	char *path;
	zend_bool free_path = FALSE;
	GdkRectangle background_area = { 0, 0, 0, 0 }, cell_area = { 0, 0, 0, 0 };
	GtkCellRendererState flags;
	GtkCellEditable* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOuVVV", &php_event, gboxed_ce, &widget, gtkwidget_ce, &path, &free_path, &php_background_area, &php_cell_area, &php_flags))
		return;

    if (phpg_gboxed_check(php_event, GDK_TYPE_EVENT, FALSE TSRMLS_CC)) {
        event = (GdkEvent *) PHPG_GBOXED(php_event);
    } else {
        php_error(E_WARNING, "%s::%s() expects event argument to be a valid GdkEvent object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_rectangle_from_zval(php_background_area, (GdkRectangle*)&background_area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects background_area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
    if (phpg_rectangle_from_zval(php_cell_area, (GdkRectangle*)&cell_area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects cell_area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
	if (php_flags && phpg_gvalue_get_flags(GTK_TYPE_CELL_RENDERER_STATE, php_flags, (gint *)&flags) == FAILURE) {
		return;
	}

    php_retval = gtk_cell_renderer_start_editing(GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)), event, GTK_WIDGET(PHPG_GOBJECT(widget)), path, &background_area, &cell_area, flags);
	if (free_path) g_free(path);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkCellRenderer, stop_editing)
{
	zend_bool canceled;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &canceled))
		return;

    gtk_cell_renderer_stop_editing(GTK_CELL_RENDERER(PHPG_GOBJECT(this_ptr)), (gboolean)canceled);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderer_activate, 0)
    ZEND_ARG_OBJ_INFO(0, event, GdkEvent, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, background_area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, cell_area, GdkRectangle, 1)
    ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderer_get_size, 0)
    ZEND_ARG_INFO(0, widget)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderer_render, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_OBJ_INFO(0, background_area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, cell_area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, expose_area, GdkRectangle, 1)
    ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderer_set_fixed_size, 0)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderer_start_editing, 0)
    ZEND_ARG_OBJ_INFO(0, event, GdkEvent, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, path)
    ZEND_ARG_OBJ_INFO(0, background_area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, cell_area, GdkRectangle, 1)
    ZEND_ARG_INFO(0, flags)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderer_stop_editing, 0)
    ZEND_ARG_INFO(0, canceled)
ZEND_END_ARG_INFO();

static function_entry gtkcellrenderer_methods[] = {
	PHP_ME(GtkCellRenderer, activate,             arginfo_gtk_gtkcellrenderer_activate, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRenderer, editing_canceled,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRenderer, get_fixed_size,       NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRenderer, get_size,             arginfo_gtk_gtkcellrenderer_get_size, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRenderer, render,               arginfo_gtk_gtkcellrenderer_render, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRenderer, set_fixed_size,       arginfo_gtk_gtkcellrenderer_set_fixed_size, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRenderer, start_editing,        arginfo_gtk_gtkcellrenderer_start_editing, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRenderer, stop_editing,         arginfo_gtk_gtkcellrenderer_stop_editing, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};
#line 1265 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkAdjustment, __construct)
{
    gdouble value = 0;
    gdouble lower = 0;
    gdouble upper = 0;
    gdouble step_incr = 0;
    gdouble page_incr = 0;
    gdouble page_size = 0;
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|dddddd", &value, &lower, &upper,
                            &step_incr, &page_incr, &page_size))
        return;

    wrapped_obj = g_object_new(phpg_gtype_from_zval(this_ptr),
                               "value", value, "lower", lower,
                               "upper", upper, "step_increment", step_incr,
                               "page_increment", page_incr, "page_size", page_size, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkAdjustment);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}

#line 9767 "ext/gtk+/gen_gtk.c"



PHPG_PROP_READER(GtkAdjustment, value)
{
	double php_retval;

    php_retval = GTK_ADJUSTMENT(((phpg_gobject_t *)object)->obj)->value;
	RETVAL_DOUBLE(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkAdjustment, lower)
{
	double php_retval;

    php_retval = GTK_ADJUSTMENT(((phpg_gobject_t *)object)->obj)->lower;
	RETVAL_DOUBLE(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkAdjustment, upper)
{
	double php_retval;

    php_retval = GTK_ADJUSTMENT(((phpg_gobject_t *)object)->obj)->upper;
	RETVAL_DOUBLE(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkAdjustment, step_increment)
{
	double php_retval;

    php_retval = GTK_ADJUSTMENT(((phpg_gobject_t *)object)->obj)->step_increment;
	RETVAL_DOUBLE(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkAdjustment, page_increment)
{
	double php_retval;

    php_retval = GTK_ADJUSTMENT(((phpg_gobject_t *)object)->obj)->page_increment;
	RETVAL_DOUBLE(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkAdjustment, page_size)
{
	double php_retval;

    php_retval = GTK_ADJUSTMENT(((phpg_gobject_t *)object)->obj)->page_size;
	RETVAL_DOUBLE(php_retval);
    return SUCCESS;
}


static prop_info_t gtkadjustment_prop_info[] = {
	{ "value", PHPG_PROP_READ_FN(GtkAdjustment, value), NULL },
	{ "lower", PHPG_PROP_READ_FN(GtkAdjustment, lower), NULL },
	{ "upper", PHPG_PROP_READ_FN(GtkAdjustment, upper), NULL },
	{ "step_increment", PHPG_PROP_READ_FN(GtkAdjustment, step_increment), NULL },
	{ "page_increment", PHPG_PROP_READ_FN(GtkAdjustment, page_increment), NULL },
	{ "page_size", PHPG_PROP_READ_FN(GtkAdjustment, page_size), NULL },
	{ NULL, NULL, NULL },
};


static PHP_METHOD(GtkAdjustment, changed)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_adjustment_changed(GTK_ADJUSTMENT(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkAdjustment, clamp_page)
{
	double lower, upper;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "dd", &lower, &upper))
		return;

    gtk_adjustment_clamp_page(GTK_ADJUSTMENT(PHPG_GOBJECT(this_ptr)), lower, upper);

}


static PHP_METHOD(GtkAdjustment, get_value)
{
	double php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_adjustment_get_value(GTK_ADJUSTMENT(PHPG_GOBJECT(this_ptr)));
	RETVAL_DOUBLE(php_retval);
}


static PHP_METHOD(GtkAdjustment, set_value)
{
	double value;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "d", &value))
		return;

    gtk_adjustment_set_value(GTK_ADJUSTMENT(PHPG_GOBJECT(this_ptr)), value);

}


static PHP_METHOD(GtkAdjustment, value_changed)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_adjustment_value_changed(GTK_ADJUSTMENT(PHPG_GOBJECT(this_ptr)));

}

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkadjustment_gtk_adjustment_new, 0)
    ZEND_ARG_INFO(0, value)
    ZEND_ARG_INFO(0, lower)
    ZEND_ARG_INFO(0, upper)
    ZEND_ARG_INFO(0, step_incr)
    ZEND_ARG_INFO(0, page_incr)
    ZEND_ARG_INFO(0, page_size)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkadjustment_clamp_page, 0)
    ZEND_ARG_INFO(0, lower)
    ZEND_ARG_INFO(0, upper)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkadjustment_set_value, 0)
    ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO();

static function_entry gtkadjustment_methods[] = {
	PHP_ME(GtkAdjustment, __construct,          arginfo_gtk_gtkadjustment_gtk_adjustment_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAdjustment, changed,              NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAdjustment, clamp_page,           arginfo_gtk_gtkadjustment_clamp_page, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAdjustment, get_value,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAdjustment, set_value,            arginfo_gtk_gtkadjustment_set_value, ZEND_ACC_PUBLIC)
	PHP_ME(GtkAdjustment, value_changed,        NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellRendererToggle, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererToggle);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererToggle);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkCellRendererToggle, get_active)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_cell_renderer_toggle_get_active(GTK_CELL_RENDERER_TOGGLE(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkCellRendererToggle, get_radio)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_cell_renderer_toggle_get_radio(GTK_CELL_RENDERER_TOGGLE(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkCellRendererToggle, set_active)
{
	zend_bool setting;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &setting))
		return;

    gtk_cell_renderer_toggle_set_active(GTK_CELL_RENDERER_TOGGLE(PHPG_GOBJECT(this_ptr)), (gboolean)setting);

}


static PHP_METHOD(GtkCellRendererToggle, set_radio)
{
	zend_bool radio;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &radio))
		return;

    gtk_cell_renderer_toggle_set_radio(GTK_CELL_RENDERER_TOGGLE(PHPG_GOBJECT(this_ptr)), (gboolean)radio);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderertoggle_set_active, 0)
    ZEND_ARG_INFO(0, setting)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderertoggle_set_radio, 0)
    ZEND_ARG_INFO(0, radio)
ZEND_END_ARG_INFO();

static function_entry gtkcellrenderertoggle_methods[] = {
	PHP_ME(GtkCellRendererToggle, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRendererToggle, get_active,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRendererToggle, get_radio,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRendererToggle, set_active,           arginfo_gtk_gtkcellrenderertoggle_set_active, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRendererToggle, set_radio,            arginfo_gtk_gtkcellrenderertoggle_set_radio, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellRendererText, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererText);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererText);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkCellRendererText, set_fixed_height_from_font)
{
	long number_of_rows;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &number_of_rows))
		return;

    gtk_cell_renderer_text_set_fixed_height_from_font(GTK_CELL_RENDERER_TEXT(PHPG_GOBJECT(this_ptr)), (gint)number_of_rows);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkcellrenderertext_set_fixed_height_from_font, 0)
    ZEND_ARG_INFO(0, number_of_rows)
ZEND_END_ARG_INFO();

static function_entry gtkcellrenderertext_methods[] = {
	PHP_ME(GtkCellRendererText, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkCellRendererText, set_fixed_height_from_font, arginfo_gtk_gtkcellrenderertext_set_fixed_height_from_font, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellRendererProgress, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererProgress);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererProgress);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static function_entry gtkcellrendererprogress_methods[] = {
	PHP_ME(GtkCellRendererProgress, __construct,          NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellRendererCombo, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererCombo);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererCombo);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static function_entry gtkcellrenderercombo_methods[] = {
	PHP_ME(GtkCellRendererCombo, __construct,          NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkCellRendererPixbuf, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererPixbuf);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkCellRendererPixbuf);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static function_entry gtkcellrendererpixbuf_methods[] = {
	PHP_ME(GtkCellRendererPixbuf, __construct,          NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkRcStyle, rc_add_class_style)
{
	char *pattern;
	zend_bool free_pattern = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &pattern, &free_pattern))
		return;

    gtk_rc_add_class_style(GTK_RC_STYLE(PHPG_GOBJECT(this_ptr)), pattern);
	if (free_pattern) g_free(pattern);

}


static PHP_METHOD(GtkRcStyle, rc_add_widget_class_style)
{
	char *pattern;
	zend_bool free_pattern = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &pattern, &free_pattern))
		return;

    gtk_rc_add_widget_class_style(GTK_RC_STYLE(PHPG_GOBJECT(this_ptr)), pattern);
	if (free_pattern) g_free(pattern);

}


static PHP_METHOD(GtkRcStyle, rc_add_widget_name_style)
{
	char *pattern;
	zend_bool free_pattern = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &pattern, &free_pattern))
		return;

    gtk_rc_add_widget_name_style(GTK_RC_STYLE(PHPG_GOBJECT(this_ptr)), pattern);
	if (free_pattern) g_free(pattern);

}


static PHP_METHOD(GtkRcStyle, copy)
{
	GtkRcStyle* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_rc_style_copy(GTK_RC_STYLE(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
    if (php_retval != NULL) {
        g_object_unref(php_retval);
    }
}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkrcstyle_rc_add_class_style, 0)
    ZEND_ARG_INFO(0, pattern)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkrcstyle_rc_add_widget_class_style, 0)
    ZEND_ARG_INFO(0, pattern)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkrcstyle_rc_add_widget_name_style, 0)
    ZEND_ARG_INFO(0, pattern)
ZEND_END_ARG_INFO();

static function_entry gtkrcstyle_methods[] = {
	PHP_ME(GtkRcStyle, copy,                 NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkRcStyle, rc_add_class_style,   arginfo_gtk_gtkrcstyle_rc_add_class_style, ZEND_ACC_PUBLIC)
	PHP_ME(GtkRcStyle, rc_add_widget_class_style, arginfo_gtk_gtkrcstyle_rc_add_widget_class_style, ZEND_ACC_PUBLIC)
	PHP_ME(GtkRcStyle, rc_add_widget_name_style, arginfo_gtk_gtkrcstyle_rc_add_widget_name_style, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkSettings, get_default)
{
	GtkSettings* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_settings_get_default();
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkSettings, get_for_screen)
{
	zval *screen;
	GtkSettings* php_retval;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &screen, gdkscreen_ce))
		return;

    php_retval = gtk_settings_get_for_screen(GDK_SCREEN(PHPG_GOBJECT(screen)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkSettings, set_double_property)
{
	char *name, *origin;
	zend_bool free_name = FALSE, free_origin = FALSE;
	double v_double;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "udu", &name, &free_name, &v_double, &origin, &free_origin))
		return;

    gtk_settings_set_double_property(GTK_SETTINGS(PHPG_GOBJECT(this_ptr)), name, v_double, origin);
	if (free_name) g_free(name);
	if (free_origin) g_free(origin);

}


static PHP_METHOD(GtkSettings, set_long_property)
{
	char *name, *origin;
	zend_bool free_name = FALSE, free_origin = FALSE;
	long v_long;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uiu", &name, &free_name, &v_long, &origin, &free_origin))
		return;

    gtk_settings_set_long_property(GTK_SETTINGS(PHPG_GOBJECT(this_ptr)), name, (glong)v_long, origin);
	if (free_name) g_free(name);
	if (free_origin) g_free(origin);

}


static PHP_METHOD(GtkSettings, set_string_property)
{
	char *name, *v_string, *origin;
	zend_bool free_name = FALSE, free_v_string = FALSE, free_origin = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uuu", &name, &free_name, &v_string, &free_v_string, &origin, &free_origin))
		return;

    gtk_settings_set_string_property(GTK_SETTINGS(PHPG_GOBJECT(this_ptr)), name, v_string, origin);
	if (free_name) g_free(name);
	if (free_v_string) g_free(v_string);
	if (free_origin) g_free(origin);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksettings_get_for_screen, 0)
    ZEND_ARG_OBJ_INFO(0, screen, GdkScreen, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksettings_set_double_property, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_INFO(0, v_double)
    ZEND_ARG_INFO(0, origin)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksettings_set_long_property, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_INFO(0, v_long)
    ZEND_ARG_INFO(0, origin)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksettings_set_string_property, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_INFO(0, v_string)
    ZEND_ARG_INFO(0, origin)
ZEND_END_ARG_INFO();

static function_entry gtksettings_methods[] = {
	PHP_ME(GtkSettings, get_default,          NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkSettings, get_for_screen,       arginfo_gtk_gtksettings_get_for_screen, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkSettings, set_double_property,  arginfo_gtk_gtksettings_set_double_property, ZEND_ACC_PUBLIC)
	PHP_ME(GtkSettings, set_long_property,    arginfo_gtk_gtksettings_set_long_property, ZEND_ACC_PUBLIC)
	PHP_ME(GtkSettings, set_string_property,  arginfo_gtk_gtksettings_set_string_property, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkSizeGroup, __construct)
{
    GParameter params[1];
	zval *php_args[2] = { NULL, };
	char *prop_names[] = { "mode",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "^V", &php_args[0])) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkSizeGroup);
    }

	memset(&params, 0, 1 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkSizeGroup);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkSizeGroup);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkSizeGroup, add_widget)
{
	zval *widget;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &widget, gtkwidget_ce))
		return;

    gtk_size_group_add_widget(GTK_SIZE_GROUP(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(widget)));

}


static PHP_METHOD(GtkSizeGroup, get_mode)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_size_group_get_mode(GTK_SIZE_GROUP(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkSizeGroup, remove_widget)
{
	zval *widget;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &widget, gtkwidget_ce))
		return;

    gtk_size_group_remove_widget(GTK_SIZE_GROUP(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(widget)));

}


static PHP_METHOD(GtkSizeGroup, set_mode)
{
	GtkSizeGroupMode mode;
	zval *php_mode = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_mode))
		return;

	if (php_mode && phpg_gvalue_get_enum(GTK_TYPE_SIZE_GROUP_MODE, php_mode, (gint *)&mode) == FAILURE) {
		return;
	}

    gtk_size_group_set_mode(GTK_SIZE_GROUP(PHPG_GOBJECT(this_ptr)), mode);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksizegroup_size_group_new, 0)
    ZEND_ARG_INFO(0, mode)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksizegroup_add_widget, 0)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksizegroup_remove_widget, 0)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtksizegroup_set_mode, 0)
    ZEND_ARG_INFO(0, mode)
ZEND_END_ARG_INFO();

static function_entry gtksizegroup_methods[] = {
	PHP_ME(GtkSizeGroup, __construct,          arginfo_gtk_gtksizegroup_size_group_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkSizeGroup, add_widget,           arginfo_gtk_gtksizegroup_add_widget, ZEND_ACC_PUBLIC)
	PHP_ME(GtkSizeGroup, get_mode,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkSizeGroup, remove_widget,        arginfo_gtk_gtksizegroup_remove_widget, ZEND_ACC_PUBLIC)
	PHP_ME(GtkSizeGroup, set_mode,             arginfo_gtk_gtksizegroup_set_mode, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkStyle, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkStyle);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkStyle);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}

#line 61 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, fg)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->fg TSRMLS_CC);

	return SUCCESS;
}

#line 10502 "ext/gtk+/gen_gtk.c"


#line 72 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, bg)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->bg TSRMLS_CC);

	return SUCCESS;
}

#line 10515 "ext/gtk+/gen_gtk.c"


#line 83 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, light)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->light TSRMLS_CC);

	return SUCCESS;
}

#line 10528 "ext/gtk+/gen_gtk.c"


#line 94 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, dark)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->dark TSRMLS_CC);

	return SUCCESS;
}

#line 10541 "ext/gtk+/gen_gtk.c"


#line 105 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, mid)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->mid TSRMLS_CC);

	return SUCCESS;
}

#line 10554 "ext/gtk+/gen_gtk.c"


#line 116 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, text)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->text TSRMLS_CC);

	return SUCCESS;
}

#line 10567 "ext/gtk+/gen_gtk.c"


#line 138 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, base)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->base TSRMLS_CC);

	return SUCCESS;
}

#line 10580 "ext/gtk+/gen_gtk.c"


#line 127 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, text_aa)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_COLOR_ARRAY, style->text_aa TSRMLS_CC);

	return SUCCESS;
}

#line 10593 "ext/gtk+/gen_gtk.c"



PHPG_PROP_READER(GtkStyle, white)
{
	GdkColor php_retval;

    php_retval = GTK_STYLE(((phpg_gobject_t *)object)->obj)->white;
	phpg_gboxed_new(&return_value, GDK_TYPE_COLOR, &php_retval, TRUE, TRUE TSRMLS_CC);

    return SUCCESS;
}


PHPG_PROP_READER(GtkStyle, black)
{
	GdkColor php_retval;

    php_retval = GTK_STYLE(((phpg_gobject_t *)object)->obj)->black;
	phpg_gboxed_new(&return_value, GDK_TYPE_COLOR, &php_retval, TRUE, TRUE TSRMLS_CC);

    return SUCCESS;
}


PHPG_PROP_READER(GtkStyle, font_desc)
{
	PangoFontDescription *php_retval;

    php_retval = GTK_STYLE(((phpg_gobject_t *)object)->obj)->font_desc;
	phpg_gboxed_new(&return_value, PANGO_TYPE_FONT_DESCRIPTION, php_retval, TRUE, TRUE TSRMLS_CC);

    return SUCCESS;
}


PHPG_PROP_READER(GtkStyle, xthickness)
{
	long php_retval;

    php_retval = GTK_STYLE(((phpg_gobject_t *)object)->obj)->xthickness;
	RETVAL_LONG(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkStyle, ythickness)
{
	long php_retval;

    php_retval = GTK_STYLE(((phpg_gobject_t *)object)->obj)->ythickness;
	RETVAL_LONG(php_retval);
    return SUCCESS;
}

#line 149 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, fg_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->fg_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10659 "ext/gtk+/gen_gtk.c"


#line 160 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, bg_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->bg_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10672 "ext/gtk+/gen_gtk.c"


#line 171 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, light_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->light_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10685 "ext/gtk+/gen_gtk.c"


#line 182 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, dark_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->dark_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10698 "ext/gtk+/gen_gtk.c"


#line 193 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, mid_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->mid_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10711 "ext/gtk+/gen_gtk.c"


#line 204 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, text_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->text_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10724 "ext/gtk+/gen_gtk.c"


#line 226 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, base_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->base_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10737 "ext/gtk+/gen_gtk.c"


#line 215 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, text_aa_gc)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_GC_ARRAY, style->text_aa_gc TSRMLS_CC);

	return SUCCESS;
}

#line 10750 "ext/gtk+/gen_gtk.c"



PHPG_PROP_READER(GtkStyle, white_gc)
{
	GdkGC* php_retval;

    php_retval = GTK_STYLE(((phpg_gobject_t *)object)->obj)->white_gc;
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
    return SUCCESS;
}


PHPG_PROP_READER(GtkStyle, black_gc)
{
	GdkGC* php_retval;

    php_retval = GTK_STYLE(((phpg_gobject_t *)object)->obj)->black_gc;
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
    return SUCCESS;
}

#line 237 "ext/gtk+/gtkstyle.overrides"
PHPG_PROP_READER(GtkStyle, bg_pixmap)
{
	GtkStyle *style = GTK_STYLE(((phpg_gobject_t *)object)->obj);

	phpg_create_style_helper(&return_value, style, STYLE_PIXMAP_ARRAY, style->bg_pixmap TSRMLS_CC);

	return SUCCESS;
}

#line 10783 "ext/gtk+/gen_gtk.c"



static prop_info_t gtkstyle_prop_info[] = {
	{ "fg", PHPG_PROP_READ_FN(GtkStyle, fg), NULL },
	{ "bg", PHPG_PROP_READ_FN(GtkStyle, bg), NULL },
	{ "light", PHPG_PROP_READ_FN(GtkStyle, light), NULL },
	{ "dark", PHPG_PROP_READ_FN(GtkStyle, dark), NULL },
	{ "mid", PHPG_PROP_READ_FN(GtkStyle, mid), NULL },
	{ "text", PHPG_PROP_READ_FN(GtkStyle, text), NULL },
	{ "base", PHPG_PROP_READ_FN(GtkStyle, base), NULL },
	{ "text_aa", PHPG_PROP_READ_FN(GtkStyle, text_aa), NULL },
	{ "white", PHPG_PROP_READ_FN(GtkStyle, white), NULL },
	{ "black", PHPG_PROP_READ_FN(GtkStyle, black), NULL },
	{ "font_desc", PHPG_PROP_READ_FN(GtkStyle, font_desc), NULL },
	{ "xthickness", PHPG_PROP_READ_FN(GtkStyle, xthickness), NULL },
	{ "ythickness", PHPG_PROP_READ_FN(GtkStyle, ythickness), NULL },
	{ "fg_gc", PHPG_PROP_READ_FN(GtkStyle, fg_gc), NULL },
	{ "bg_gc", PHPG_PROP_READ_FN(GtkStyle, bg_gc), NULL },
	{ "light_gc", PHPG_PROP_READ_FN(GtkStyle, light_gc), NULL },
	{ "dark_gc", PHPG_PROP_READ_FN(GtkStyle, dark_gc), NULL },
	{ "mid_gc", PHPG_PROP_READ_FN(GtkStyle, mid_gc), NULL },
	{ "text_gc", PHPG_PROP_READ_FN(GtkStyle, text_gc), NULL },
	{ "base_gc", PHPG_PROP_READ_FN(GtkStyle, base_gc), NULL },
	{ "text_aa_gc", PHPG_PROP_READ_FN(GtkStyle, text_aa_gc), NULL },
	{ "white_gc", PHPG_PROP_READ_FN(GtkStyle, white_gc), NULL },
	{ "black_gc", PHPG_PROP_READ_FN(GtkStyle, black_gc), NULL },
	{ "bg_pixmap", PHPG_PROP_READ_FN(GtkStyle, bg_pixmap), NULL },
	{ NULL, NULL, NULL },
};


static PHP_METHOD(GtkStyle, paint_arrow)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget, *php_arrow_type = NULL;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE, fill;
	GtkArrowType arrow_type;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuVbiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &php_arrow_type, &fill, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_arrow_type && phpg_gvalue_get_enum(GTK_TYPE_ARROW_TYPE, php_arrow_type, (gint *)&arrow_type) == FAILURE) {
		return;
	}

    gtk_paint_arrow(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, arrow_type, (gboolean)fill, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_box)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_box(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_box_gap)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget, *php_gap_side = NULL;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height, gap_x, gap_width;
	GtkPositionType gap_side;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiiiVii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height, &php_gap_side, &gap_x, &gap_width))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_gap_side && phpg_gvalue_get_enum(GTK_TYPE_POSITION_TYPE, php_gap_side, (gint *)&gap_side) == FAILURE) {
		return;
	}

    gtk_paint_box_gap(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height, gap_side, (gint)gap_x, (gint)gap_width);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_check)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_check(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_diamond)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_diamond(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_expander)
{
	zval *window, *php_state_type = NULL, *php_area = NULL, *php_widget, *php_expander_style = NULL;
	GtkStateType state_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y;
	GtkExpanderStyle expander_style;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVNuiiV", &window, gdkwindow_ce, &php_state_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &php_expander_style))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_expander_style && phpg_gvalue_get_enum(GTK_TYPE_EXPANDER_STYLE, php_expander_style, (gint *)&expander_style) == FAILURE) {
		return;
	}

    gtk_paint_expander(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, area, widget, detail, (gint)x, (gint)y, expander_style);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_extension)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget, *php_gap_side = NULL;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;
	GtkPositionType gap_side;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiiiV", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height, &php_gap_side))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_gap_side && phpg_gvalue_get_enum(GTK_TYPE_POSITION_TYPE, php_gap_side, (gint *)&gap_side) == FAILURE) {
		return;
	}

    gtk_paint_extension(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height, gap_side);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_flat_box)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_flat_box(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_focus)
{
	zval *window, *php_state_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_focus(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_handle)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget, *php_orientation = NULL;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;
	GtkOrientation orientation;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiiiV", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height, &php_orientation))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_orientation && phpg_gvalue_get_enum(GTK_TYPE_ORIENTATION, php_orientation, (gint *)&orientation) == FAILURE) {
		return;
	}

    gtk_paint_handle(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height, orientation);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_hline)
{
	zval *window, *php_state_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x1, x2, y;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVNuiii", &window, gdkwindow_ce, &php_state_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x1, &x2, &y))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_hline(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, area, widget, detail, (gint)x1, (gint)x2, (gint)y);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_layout)
{
	zval *window, *php_state_type = NULL, *php_area = NULL, *php_widget, *php_layout;
	GtkStateType state_type;
	zend_bool use_text, free_detail = FALSE;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	long x, y;
	PangoLayout *layout = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVbVNuiiN", &window, gdkwindow_ce, &php_state_type, &use_text, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &php_layout, pangolayout_ce))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));
    if (Z_TYPE_P(php_layout) != IS_NULL)
        layout = PANGO_LAYOUT(PHPG_GOBJECT(php_layout));

    gtk_paint_layout(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, (gboolean)use_text, area, widget, detail, (gint)x, (gint)y, layout);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_option)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_option(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}

#line 5 "ext/gtk+/gtkstyle.overrides"
static PHP_METHOD(GtkStyle, paint_polygon)
{
    zval *window, *php_state_type, *php_shadow_type, *php_area;
    GtkStateType state_type;
    GtkShadowType shadow_type;
    GdkRectangle area;
    zval *widget;
    const gchar *detail;
    zval *php_points;
    int npoints, i;
    GdkPoint *points;
    zend_bool fill;
    zval **item;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVOs!ab", &window, gdkwindow_ce,
                            &php_state_type, &php_shadow_type, &php_area, &widget,
                            gtkwidget_ce, &detail, &php_points, &fill)) {
        return;
    }

    if (phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
        return;
    }

    if (phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
        return;
    }

    if (phpg_rectangle_from_zval(php_area, &area TSRMLS_CC) == FAILURE) {
        return;
    }

    npoints = zend_hash_num_elements(Z_ARRVAL_P(php_area));
    points = g_new(GdkPoint, npoints);
    for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_points)), i = 0;
         zend_hash_get_current_data(Z_ARRVAL_P(php_points), (void**)&item) == SUCCESS;
         zend_hash_move_forward(Z_ARRVAL_P(php_points)), i++) {

		if (Z_TYPE_PP(item) != IS_ARRAY ||
            !php_gtk_parse_args_hash_quiet(*item, "ii", &points[i].x, &points[i].y)) {
			php_error_docref(NULL TSRMLS_CC, E_WARNING, "points have to be 2 element integer arrays");
            g_free(points);
            return;
        }
    }

    gtk_paint_polygon(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)),
                      state_type, shadow_type, &area, GTK_WIDGET(PHPG_GOBJECT(widget)),
                      detail, points, npoints, fill);
    g_free(points);
}

#line 11398 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkStyle, paint_resize_grip)
{
	zval *window, *php_state_type = NULL, *php_area = NULL, *php_widget, *php_edge = NULL;
	GtkStateType state_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	GdkWindowEdge edge;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVNuViiii", &window, gdkwindow_ce, &php_state_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &php_edge, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_edge && phpg_gvalue_get_enum(GDK_TYPE_WINDOW_EDGE, php_edge, (gint *)&edge) == FAILURE) {
		return;
	}

    gtk_paint_resize_grip(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, area, widget, detail, edge, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_shadow)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_shadow(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_shadow_gap)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget, *php_gap_side = NULL;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height, gap_x, gap_width;
	GtkPositionType gap_side;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiiiVii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height, &php_gap_side, &gap_x, &gap_width))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_gap_side && phpg_gvalue_get_enum(GTK_TYPE_POSITION_TYPE, php_gap_side, (gint *)&gap_side) == FAILURE) {
		return;
	}

    gtk_paint_shadow_gap(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height, gap_side, (gint)gap_x, (gint)gap_width);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_slider)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget, *php_orientation = NULL;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;
	GtkOrientation orientation;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiiiV", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height, &php_orientation))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

	if (php_orientation && phpg_gvalue_get_enum(GTK_TYPE_ORIENTATION, php_orientation, (gint *)&orientation) == FAILURE) {
		return;
	}

    gtk_paint_slider(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height, orientation);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_string)
{
	zval *window, *php_state_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail, *string;
	zend_bool free_detail = FALSE, free_string = FALSE;
	long x, y;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVNuiiu", &window, gdkwindow_ce, &php_state_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &string, &free_string))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_string(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, area, widget, detail, (gint)x, (gint)y, string);
	if (free_detail) g_free(detail);
	if (free_string) g_free(string);

}


static PHP_METHOD(GtkStyle, paint_tab)
{
	zval *window, *php_state_type = NULL, *php_shadow_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GtkShadowType shadow_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVVNuiiii", &window, gdkwindow_ce, &php_state_type, &php_shadow_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

	if (php_shadow_type && phpg_gvalue_get_enum(GTK_TYPE_SHADOW_TYPE, php_shadow_type, (gint *)&shadow_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_tab(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, shadow_type, area, widget, detail, (gint)x, (gint)y, (gint)width, (gint)height);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, paint_vline)
{
	zval *window, *php_state_type = NULL, *php_area = NULL, *php_widget;
	GtkStateType state_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	GtkWidget *widget = NULL;
	char *detail;
	zend_bool free_detail = FALSE;
	long y1, y2, x;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVNuiii", &window, gdkwindow_ce, &php_state_type, &php_area, &php_widget, gtkwidget_ce, &detail, &free_detail, &y1, &y2, &x))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }    if (Z_TYPE_P(php_widget) != IS_NULL)
        widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));

    gtk_paint_vline(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type, area, widget, detail, (gint)y1, (gint)y2, (gint)x);
	if (free_detail) g_free(detail);

}


static PHP_METHOD(GtkStyle, apply_default_background)
{
	zval *window, *php_state_type = NULL, *php_area = NULL;
	zend_bool set_bg;
	GtkStateType state_type;
	GdkRectangle area_arg = { 0, 0, 0, 0 }, *area;
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ObVViiii", &window, gdkwindow_ce, &set_bg, &php_state_type, &php_area, &x, &y, &width, &height))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    if (Z_TYPE_P(php_area) == IS_NULL) {
        area = NULL;
    } else if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area_arg TSRMLS_CC) == SUCCESS) {
        area = &area_arg;
    } else {
        php_error(E_WARNING, "%s::%s() expects area argument to be a 4-element array, a GdkRectangle object, or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
    gtk_style_apply_default_background(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), (gboolean)set_bg, state_type, area, (gint)x, (gint)y, (gint)width, (gint)height);

}


static PHP_METHOD(GtkStyle, apply_default_pixmap)
{
	zval *window, *php_area;
	zend_bool set_bg;
	GdkRectangle area = { 0, 0, 0, 0 };
	long x, y, width, height;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ObViiii", &window, gdkwindow_ce, &set_bg, &php_area, &x, &y, &width, &height))
		return;

    if (phpg_rectangle_from_zval(php_area, (GdkRectangle*)&area TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects area argument to be either a 4-element array or a GdkRectangle object", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }
	phpg_warn_deprecated("use GtkStyle::apply_default_background()" TSRMLS_CC);

    gtk_style_apply_default_pixmap(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), (gboolean)set_bg, &area, (gint)x, (gint)y, (gint)width, (gint)height);

}


static PHP_METHOD(GtkStyle, attach)
{
	zval *window;
	GtkStyle* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &window, gdkwindow_ce))
		return;

    php_retval = gtk_style_attach(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkStyle, copy)
{
	GtkStyle* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_style_copy(GTK_STYLE(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
    if (php_retval != NULL) {
        g_object_unref(php_retval);
    }
}


static PHP_METHOD(GtkStyle, detach)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_style_detach(GTK_STYLE(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkStyle, get_font)
{
	GdkFont *php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_style_get_font(GTK_STYLE(PHPG_GOBJECT(this_ptr)));
	phpg_gboxed_new(&return_value, GDK_TYPE_FONT, php_retval, TRUE, TRUE TSRMLS_CC);

}


static PHP_METHOD(GtkStyle, lookup_icon_set)
{
	char *stock_id;
	zend_bool free_stock_id = FALSE;
	GtkIconSet *php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &stock_id, &free_stock_id))
		return;

    php_retval = gtk_style_lookup_icon_set(GTK_STYLE(PHPG_GOBJECT(this_ptr)), stock_id);
	if (free_stock_id) g_free(stock_id);
	phpg_gboxed_new(&return_value, GTK_TYPE_ICON_SET, php_retval, TRUE, TRUE TSRMLS_CC);

}


static PHP_METHOD(GtkStyle, render_icon)
{
	GtkIconSource *source = NULL;
	zval *php_source, *php_direction = NULL, *php_state = NULL, *php_size = NULL, *php_widget = NULL;
	GtkTextDirection direction;
	GtkStateType state;
	GtkIconSize size;
	GtkWidget *widget = NULL;
	char *detail = NULL;
	zend_bool free_detail = FALSE;
	GdkPixbuf* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OVVV|Nu", &php_source, gboxed_ce, &php_direction, &php_state, &php_size, &php_widget, gtkwidget_ce, &detail, &free_detail))
		return;

    if (phpg_gboxed_check(php_source, GTK_TYPE_ICON_SOURCE, FALSE TSRMLS_CC)) {
        source = (GtkIconSource *) PHPG_GBOXED(php_source);
    } else {
        php_error(E_WARNING, "%s::%s() expects source argument to be a valid GtkIconSource object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

	if (php_direction && phpg_gvalue_get_enum(GTK_TYPE_TEXT_DIRECTION, php_direction, (gint *)&direction) == FAILURE) {
		return;
	}

	if (php_state && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state, (gint *)&state) == FAILURE) {
		return;
	}

	if (php_size && phpg_gvalue_get_enum(GTK_TYPE_ICON_SIZE, php_size, (gint *)&size) == FAILURE) {
		return;
	}
    if (php_widget) {
        if (Z_TYPE_P(php_widget) == IS_NULL)
            widget = NULL;
        else
            widget = GTK_WIDGET(PHPG_GOBJECT(php_widget));
    }

    php_retval = gtk_style_render_icon(GTK_STYLE(PHPG_GOBJECT(this_ptr)), source, direction, state, size, widget, detail);
	if (free_detail) g_free(detail);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkStyle, set_background)
{
	zval *window, *php_state_type = NULL;
	GtkStateType state_type;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OV", &window, gdkwindow_ce, &php_state_type))
		return;

	if (php_state_type && phpg_gvalue_get_enum(GTK_TYPE_STATE_TYPE, php_state_type, (gint *)&state_type) == FAILURE) {
		return;
	}

    gtk_style_set_background(GTK_STYLE(PHPG_GOBJECT(this_ptr)), GDK_WINDOW(PHPG_GOBJECT(window)), state_type);

}


static PHP_METHOD(GtkStyle, set_font)
{
	GdkFont *font = NULL;
	zval *php_font;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_font, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_font, GDK_TYPE_FONT, FALSE TSRMLS_CC)) {
        font = (GdkFont *) PHPG_GBOXED(php_font);
    } else {
        php_error(E_WARNING, "%s::%s() expects font argument to be a valid GdkFont object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_style_set_font(GTK_STYLE(PHPG_GOBJECT(this_ptr)), font);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_arrow, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, arrow_type)
    ZEND_ARG_INFO(0, fill)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_box, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_box_gap, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
    ZEND_ARG_INFO(0, gap_side)
    ZEND_ARG_INFO(0, gap_x)
    ZEND_ARG_INFO(0, gap_width)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_check, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_diamond, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_expander, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, expander_style)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_extension, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
    ZEND_ARG_INFO(0, gap_side)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_flat_box, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_focus, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_handle, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
    ZEND_ARG_INFO(0, orientation)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_hline, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x1)
    ZEND_ARG_INFO(0, x2)
    ZEND_ARG_INFO(0, y)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_layout, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, use_text)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_OBJ_INFO(0, layout, PangoLayout, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_option, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_resize_grip, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, edge)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_shadow, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_shadow_gap, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
    ZEND_ARG_INFO(0, gap_side)
    ZEND_ARG_INFO(0, gap_x)
    ZEND_ARG_INFO(0, gap_width)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_slider, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
    ZEND_ARG_INFO(0, orientation)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_string, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, string)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_tab, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_INFO(0, shadow_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_paint_vline, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
    ZEND_ARG_INFO(0, y1)
    ZEND_ARG_INFO(0, y2)
    ZEND_ARG_INFO(0, x)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_apply_default_background, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, set_bg)
    ZEND_ARG_INFO(0, state_type)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_apply_default_pixmap, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, set_bg)
    ZEND_ARG_OBJ_INFO(0, area, GdkRectangle, 1)
    ZEND_ARG_INFO(0, x)
    ZEND_ARG_INFO(0, y)
    ZEND_ARG_INFO(0, width)
    ZEND_ARG_INFO(0, height)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_attach, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_lookup_icon_set, 0)
    ZEND_ARG_INFO(0, stock_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtkstyle_render_icon, 0, 0, 4)
    ZEND_ARG_OBJ_INFO(0, source, GtkIconSource, 1)
    ZEND_ARG_INFO(0, direction)
    ZEND_ARG_INFO(0, state)
    ZEND_ARG_INFO(0, size)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, detail)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_set_background, 0)
    ZEND_ARG_OBJ_INFO(0, window, GdkWindow, 1)
    ZEND_ARG_INFO(0, state_type)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkstyle_set_font, 0)
    ZEND_ARG_OBJ_INFO(0, font, GdkFont, 1)
ZEND_END_ARG_INFO();

static function_entry gtkstyle_methods[] = {
	PHP_ME(GtkStyle, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, apply_default_background, arginfo_gtk_gtkstyle_apply_default_background, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, apply_default_pixmap, arginfo_gtk_gtkstyle_apply_default_pixmap, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, attach,               arginfo_gtk_gtkstyle_attach, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, copy,                 NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, detach,               NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, get_font,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, lookup_icon_set,      arginfo_gtk_gtkstyle_lookup_icon_set, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_arrow,          arginfo_gtk_gtkstyle_paint_arrow, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_box,            arginfo_gtk_gtkstyle_paint_box, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_box_gap,        arginfo_gtk_gtkstyle_paint_box_gap, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_check,          arginfo_gtk_gtkstyle_paint_check, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_diamond,        arginfo_gtk_gtkstyle_paint_diamond, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_expander,       arginfo_gtk_gtkstyle_paint_expander, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_extension,      arginfo_gtk_gtkstyle_paint_extension, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_flat_box,       arginfo_gtk_gtkstyle_paint_flat_box, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_focus,          arginfo_gtk_gtkstyle_paint_focus, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_handle,         arginfo_gtk_gtkstyle_paint_handle, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_hline,          arginfo_gtk_gtkstyle_paint_hline, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_layout,         arginfo_gtk_gtkstyle_paint_layout, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_option,         arginfo_gtk_gtkstyle_paint_option, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_polygon,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_resize_grip,    arginfo_gtk_gtkstyle_paint_resize_grip, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_shadow,         arginfo_gtk_gtkstyle_paint_shadow, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_shadow_gap,     arginfo_gtk_gtkstyle_paint_shadow_gap, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_slider,         arginfo_gtk_gtkstyle_paint_slider, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_string,         arginfo_gtk_gtkstyle_paint_string, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_tab,            arginfo_gtk_gtkstyle_paint_tab, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, paint_vline,          arginfo_gtk_gtkstyle_paint_vline, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, render_icon,          arginfo_gtk_gtkstyle_render_icon, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, set_background,       arginfo_gtk_gtkstyle_set_background, ZEND_ACC_PUBLIC)
	PHP_ME(GtkStyle, set_font,             arginfo_gtk_gtkstyle_set_font, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTextBuffer, __construct)
{
    GParameter params[1];
	zval *php_args[2] = { NULL, };
	char *prop_names[] = { "tag_table",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|^N", &php_args[0], gtktexttagtable_ce)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextBuffer);
    }

	memset(&params, 0, 1 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextBuffer);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextBuffer);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


PHPG_PROP_READER(GtkTextBuffer, tag_table)
{
	GtkTextTagTable* php_retval;

    php_retval = GTK_TEXT_BUFFER(((phpg_gobject_t *)object)->obj)->tag_table;
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
    return SUCCESS;
}


static prop_info_t gtktextbuffer_prop_info[] = {
	{ "tag_table", PHPG_PROP_READ_FN(GtkTextBuffer, tag_table), NULL },
	{ NULL, NULL, NULL },
};


static PHP_METHOD(GtkTextBuffer, add_selection_clipboard)
{
	zval *clipboard;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &clipboard, gtkclipboard_ce))
		return;

    gtk_text_buffer_add_selection_clipboard(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_CLIPBOARD(PHPG_GOBJECT(clipboard)));

}


static PHP_METHOD(GtkTextBuffer, apply_tag)
{
	zval *tag, *php_start, *php_end;
	GtkTextIter *start = NULL, *end = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOO", &tag, gtktexttag_ce, &php_start, gboxed_ce, &php_end, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_apply_tag(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_TEXT_TAG(PHPG_GOBJECT(tag)), start, end);

}


static PHP_METHOD(GtkTextBuffer, apply_tag_by_name)
{
	char *name;
	zend_bool free_name = FALSE;
	GtkTextIter *start = NULL, *end = NULL;
	zval *php_start, *php_end;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uOO", &name, &free_name, &php_start, gboxed_ce, &php_end, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_apply_tag_by_name(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), name, start, end);
	if (free_name) g_free(name);

}


static PHP_METHOD(GtkTextBuffer, backspace)
{
	GtkTextIter *iter = NULL;
	zval *php_iter;
	zend_bool interactive, default_editable;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Obb", &php_iter, gboxed_ce, &interactive, &default_editable))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_buffer_backspace(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter, (gboolean)interactive, (gboolean)default_editable);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextBuffer, begin_user_action)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_text_buffer_begin_user_action(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkTextBuffer, copy_clipboard)
{
	zval *clipboard;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &clipboard, gtkclipboard_ce))
		return;

    gtk_text_buffer_copy_clipboard(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_CLIPBOARD(PHPG_GOBJECT(clipboard)));

}


static PHP_METHOD(GtkTextBuffer, create_child_anchor)
{
	GtkTextIter *iter = NULL;
	zval *php_iter;
	GtkTextChildAnchor* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_buffer_create_child_anchor(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTextBuffer, create_mark)
{
	char *mark_name;
	zend_bool free_mark_name = FALSE, left_gravity = FALSE;
	GtkTextIter *where = NULL;
	zval *php_where;
	GtkTextMark* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uN|b", &mark_name, &free_mark_name, &php_where, gboxed_ce, &left_gravity))
		return;

    if (Z_TYPE_P(php_where) != IS_NULL) {
        if (phpg_gboxed_check(php_where, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
            where = (GtkTextIter *) PHPG_GBOXED(php_where);
        } else {
            php_error(E_WARNING, "%s::%s() expects where argument to be a valid GtkTextIter object or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    php_retval = gtk_text_buffer_create_mark(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), mark_name, where, (gboolean)left_gravity);
	if (free_mark_name) g_free(mark_name);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTextBuffer, cut_clipboard)
{
	zval *clipboard;
	zend_bool default_editable;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Ob", &clipboard, gtkclipboard_ce, &default_editable))
		return;

    gtk_text_buffer_cut_clipboard(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_CLIPBOARD(PHPG_GOBJECT(clipboard)), (gboolean)default_editable);

}


static PHP_METHOD(GtkTextBuffer, delete)
{
	GtkTextIter *start = NULL, *end = NULL;
	zval *php_start, *php_end;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_start, gboxed_ce, &php_end, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_delete(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), start, end);

}


static PHP_METHOD(GtkTextBuffer, delete_interactive)
{
	GtkTextIter *start_iter = NULL, *end_iter = NULL;
	zval *php_start_iter, *php_end_iter;
	zend_bool default_editable;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOb", &php_start_iter, gboxed_ce, &php_end_iter, gboxed_ce, &default_editable))
		return;

    if (phpg_gboxed_check(php_start_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start_iter = (GtkTextIter *) PHPG_GBOXED(php_start_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects start_iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end_iter = (GtkTextIter *) PHPG_GBOXED(php_end_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects end_iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_buffer_delete_interactive(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), start_iter, end_iter, (gboolean)default_editable);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextBuffer, delete_mark)
{
	zval *mark;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &mark, gtktextmark_ce))
		return;

    gtk_text_buffer_delete_mark(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_TEXT_MARK(PHPG_GOBJECT(mark)));

}


static PHP_METHOD(GtkTextBuffer, delete_mark_by_name)
{
	char *name;
	zend_bool free_name = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &name, &free_name))
		return;

    gtk_text_buffer_delete_mark_by_name(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), name);
	if (free_name) g_free(name);

}


static PHP_METHOD(GtkTextBuffer, delete_selection)
{
	zend_bool interactive, default_editable;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "bb", &interactive, &default_editable))
		return;

    php_retval = gtk_text_buffer_delete_selection(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), (gboolean)interactive, (gboolean)default_editable);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextBuffer, end_user_action)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_text_buffer_end_user_action(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));

}

#line 19 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_bounds)
{
    GtkTextIter start, end;
    zval *php_start = NULL;
    zval *php_end = NULL;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &start, &end);

    phpg_gboxed_new(&php_start, GTK_TYPE_TEXT_ITER, &start, TRUE, TRUE TSRMLS_CC);
    phpg_gboxed_new(&php_end, GTK_TYPE_TEXT_ITER, &end, TRUE, TRUE TSRMLS_CC);

    php_gtk_build_value(&return_value, "(NN)", php_start, php_end);
}

#line 12661 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTextBuffer, get_char_count)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_buffer_get_char_count(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}

#line 75 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_end_iter)
{
    GtkTextIter iter;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter);
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12691 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTextBuffer, get_insert)
{
	GtkTextMark* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_buffer_get_insert(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}

#line 127 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_iter_at_child_anchor)
{
    GtkTextIter iter;
    zval *anchor;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &anchor, gtktextchildanchor_ce))
        return;

    gtk_text_buffer_get_iter_at_child_anchor(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter,
                                     GTK_TEXT_CHILD_ANCHOR(PHPG_GOBJECT(anchor)));
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12723 "ext/gtk+/gen_gtk.c"


#line 96 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_iter_at_line)
{
    GtkTextIter iter;
    int line_number;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &line_number))
        return;

    gtk_text_buffer_get_iter_at_line(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter, line_number);
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12740 "ext/gtk+/gen_gtk.c"


#line 174 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_iter_at_line_index)
{
    GtkTextIter iter;
    int line_number, byte_offset = 0;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &line_number, byte_offset))
        return;

    gtk_text_buffer_get_iter_at_line_index(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter, line_number, byte_offset);
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12757 "ext/gtk+/gen_gtk.c"


#line 151 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_iter_at_line_offset)
{
    GtkTextIter iter;
    int line_number, char_offset;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ii", &line_number, &char_offset))
        return;

    gtk_text_buffer_get_iter_at_line_offset(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter, line_number, char_offset);
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12774 "ext/gtk+/gen_gtk.c"


#line 111 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_iter_at_mark)
{
    GtkTextIter iter;
    zval *mark;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &mark, gtktextmark_ce))
        return;

    gtk_text_buffer_get_iter_at_mark(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter,
                                     GTK_TEXT_MARK(PHPG_GOBJECT(mark)));
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12792 "ext/gtk+/gen_gtk.c"


#line 196 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_iter_at_offset)
{
    GtkTextIter iter;
    int char_offset;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &char_offset))
        return;

    gtk_text_buffer_get_iter_at_offset(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter, char_offset);
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12809 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTextBuffer, get_line_count)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_buffer_get_line_count(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkTextBuffer, get_mark)
{
	char *name;
	zend_bool free_name = FALSE;
	GtkTextMark* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &name, &free_name))
		return;

    php_retval = gtk_text_buffer_get_mark(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), name);
	if (free_name) g_free(name);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTextBuffer, get_modified)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_buffer_get_modified(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextBuffer, get_selection_bound)
{
	GtkTextMark* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_buffer_get_selection_bound(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}

#line 39 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_selection_bounds)
{
    GtkTextIter start, end;
    zval *php_start = NULL;
    zval *php_end = NULL;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    if (gtk_text_buffer_get_selection_bounds(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &start, &end)) {
        phpg_gboxed_new(&php_start, GTK_TYPE_TEXT_ITER, &start, TRUE, TRUE TSRMLS_CC);
        phpg_gboxed_new(&php_end, GTK_TYPE_TEXT_ITER, &end, TRUE, TRUE TSRMLS_CC);

        php_gtk_build_value(&return_value, "(NN)", php_start, php_end);
    } else {
        RETURN_FALSE;
    }
}

#line 12892 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTextBuffer, get_slice)
{
	GtkTextIter *start = NULL, *end = NULL;
	zval *php_start, *php_end;
	zend_bool include_hidden_chars = TRUE, free_result;
	gchar *php_retval, *cp_ret;
	gsize cp_len;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO|b", &php_start, gboxed_ce, &php_end, gboxed_ce, &include_hidden_chars))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_buffer_get_slice(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), start, end, (gboolean)include_hidden_chars);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}

#line 61 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, get_start_iter)
{
    GtkTextIter iter;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), &iter);
    phpg_gboxed_new(&return_value, GTK_TYPE_TEXT_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 12953 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTextBuffer, get_tag_table)
{
	GtkTextTagTable* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_buffer_get_tag_table(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTextBuffer, get_text)
{
	GtkTextIter *start = NULL, *end = NULL;
	zval *php_start, *php_end;
	zend_bool include_hidden_chars = TRUE, free_result;
	gchar *php_retval, *cp_ret;
	gsize cp_len;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO|b", &php_start, gboxed_ce, &php_end, gboxed_ce, &include_hidden_chars))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_buffer_get_text(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), start, end, (gboolean)include_hidden_chars);
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        g_free(php_retval);
        if (free_result)
            g_free(cp_ret);
    } else
        RETVAL_NULL();
}


static PHP_METHOD(GtkTextBuffer, insert)
{
	GtkTextIter *iter = NULL;
	zval *php_iter;
	char *text;
	zend_bool free_text = FALSE;
	long len = -1;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Ou|i", &php_iter, gboxed_ce, &text, &free_text, &len))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_insert(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter, text, (gint)len);
	if (free_text) g_free(text);

}


static PHP_METHOD(GtkTextBuffer, insert_at_cursor)
{
	char *text;
	zend_bool free_text = FALSE;
	long len = -1;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u|i", &text, &free_text, &len))
		return;

    gtk_text_buffer_insert_at_cursor(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), text, (gint)len);
	if (free_text) g_free(text);

}


static PHP_METHOD(GtkTextBuffer, insert_child_anchor)
{
	GtkTextIter *iter = NULL;
	zval *php_iter, *anchor;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_iter, gboxed_ce, &anchor, gtktextchildanchor_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_insert_child_anchor(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter, GTK_TEXT_CHILD_ANCHOR(PHPG_GOBJECT(anchor)));

}


static PHP_METHOD(GtkTextBuffer, insert_interactive)
{
	GtkTextIter *iter = NULL;
	zval *php_iter;
	char *text;
	zend_bool free_text = FALSE, default_editable;
	long len;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Ouib", &php_iter, gboxed_ce, &text, &free_text, &len, &default_editable))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_buffer_insert_interactive(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter, text, (gint)len, (gboolean)default_editable);
	if (free_text) g_free(text);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextBuffer, insert_interactive_at_cursor)
{
	char *text;
	zend_bool free_text = FALSE, default_editable;
	long len;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uib", &text, &free_text, &len, &default_editable))
		return;

    php_retval = gtk_text_buffer_insert_interactive_at_cursor(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), text, (gint)len, (gboolean)default_editable);
	if (free_text) g_free(text);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextBuffer, insert_pixbuf)
{
	GtkTextIter *iter = NULL;
	zval *php_iter, *pixbuf;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_iter, gboxed_ce, &pixbuf, gdkpixbuf_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_insert_pixbuf(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter, GDK_PIXBUF(PHPG_GOBJECT(pixbuf)));

}


static PHP_METHOD(GtkTextBuffer, insert_range)
{
	GtkTextIter *iter = NULL, *start = NULL, *end = NULL;
	zval *php_iter, *php_start, *php_end;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOO", &php_iter, gboxed_ce, &php_start, gboxed_ce, &php_end, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_insert_range(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter, start, end);

}


static PHP_METHOD(GtkTextBuffer, insert_range_interactive)
{
	GtkTextIter *iter = NULL, *start = NULL, *end = NULL;
	zval *php_iter, *php_start, *php_end;
	zend_bool default_editable;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOOb", &php_iter, gboxed_ce, &php_start, gboxed_ce, &php_end, gboxed_ce, &default_editable))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_buffer_insert_range_interactive(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), iter, start, end, (gboolean)default_editable);
	RETVAL_BOOL(php_retval);
}

#line 236 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, insert_with_tags_by_name)
{
    zval *tags = NULL, *php_iter, **tag;
    char *text;
    int text_len, start_offset;
    GtkTextIter *iter, start;
    GtkTextBuffer *buffer;
    zend_bool free_text;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args_quiet(ZEND_NUM_ARGS(), "Ou#a", &php_iter, gtktextiter_ce,
                                  &text, &text_len, &free_text, &tags) &&
        !php_gtk_parse_varargs(ZEND_NUM_ARGS(), 2, &tags, "Ou#", &php_iter, gtktextiter_ce,
                               &text, &text_len, &free_text)) {
        return;
    }

    iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    buffer = GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr));

    start_offset = gtk_text_iter_get_offset(iter);
    gtk_text_buffer_insert(buffer, iter, text, text_len);
    gtk_text_buffer_get_iter_at_offset(buffer, &start, start_offset);

    if (tags) {
        for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(tags));
             zend_hash_get_current_data(Z_ARRVAL_P(tags), (void **) &tag) == SUCCESS;
             zend_hash_move_forward(Z_ARRVAL_P(tags))) {

            convert_to_string_ex(tag);
            gtk_text_buffer_apply_tag_by_name(buffer, Z_STRVAL_PP(tag), &start, iter);
        }
    }
}

#line 13268 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTextBuffer, move_mark)
{
	zval *mark, *php_where;
	GtkTextIter *where = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &mark, gtktextmark_ce, &php_where, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_where, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        where = (GtkTextIter *) PHPG_GBOXED(php_where);
    } else {
        php_error(E_WARNING, "%s::%s() expects where argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_move_mark(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_TEXT_MARK(PHPG_GOBJECT(mark)), where);

}


static PHP_METHOD(GtkTextBuffer, move_mark_by_name)
{
	char *name;
	zend_bool free_name = FALSE;
	GtkTextIter *where = NULL;
	zval *php_where;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uO", &name, &free_name, &php_where, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_where, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        where = (GtkTextIter *) PHPG_GBOXED(php_where);
    } else {
        php_error(E_WARNING, "%s::%s() expects where argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_move_mark_by_name(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), name, where);
	if (free_name) g_free(name);

}


static PHP_METHOD(GtkTextBuffer, paste_clipboard)
{
	zval *clipboard, *php_override_location;
	GtkTextIter *override_location = NULL;
	zend_bool default_editable;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ONb", &clipboard, gtkclipboard_ce, &php_override_location, gboxed_ce, &default_editable))
		return;

    if (Z_TYPE_P(php_override_location) != IS_NULL) {
        if (phpg_gboxed_check(php_override_location, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
            override_location = (GtkTextIter *) PHPG_GBOXED(php_override_location);
        } else {
            php_error(E_WARNING, "%s::%s() expects override_location argument to be a valid GtkTextIter object or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    gtk_text_buffer_paste_clipboard(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_CLIPBOARD(PHPG_GOBJECT(clipboard)), override_location, (gboolean)default_editable);

}


static PHP_METHOD(GtkTextBuffer, place_cursor)
{
	GtkTextIter *where = NULL;
	zval *php_where;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_where, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_where, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        where = (GtkTextIter *) PHPG_GBOXED(php_where);
    } else {
        php_error(E_WARNING, "%s::%s() expects where argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_place_cursor(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), where);

}


static PHP_METHOD(GtkTextBuffer, remove_all_tags)
{
	GtkTextIter *start = NULL, *end = NULL;
	zval *php_start, *php_end;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_start, gboxed_ce, &php_end, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_remove_all_tags(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), start, end);

}


static PHP_METHOD(GtkTextBuffer, remove_selection_clipboard)
{
	zval *clipboard;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &clipboard, gtkclipboard_ce))
		return;

    gtk_text_buffer_remove_selection_clipboard(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_CLIPBOARD(PHPG_GOBJECT(clipboard)));

}


static PHP_METHOD(GtkTextBuffer, remove_tag)
{
	zval *tag, *php_start, *php_end;
	GtkTextIter *start = NULL, *end = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOO", &tag, gtktexttag_ce, &php_start, gboxed_ce, &php_end, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_remove_tag(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), GTK_TEXT_TAG(PHPG_GOBJECT(tag)), start, end);

}


static PHP_METHOD(GtkTextBuffer, remove_tag_by_name)
{
	char *name;
	zend_bool free_name = FALSE;
	GtkTextIter *start = NULL, *end = NULL;
	zval *php_start, *php_end;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "uOO", &name, &free_name, &php_start, gboxed_ce, &php_end, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_start, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        start = (GtkTextIter *) PHPG_GBOXED(php_start);
    } else {
        php_error(E_WARNING, "%s::%s() expects start argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_end, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        end = (GtkTextIter *) PHPG_GBOXED(php_end);
    } else {
        php_error(E_WARNING, "%s::%s() expects end argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_remove_tag_by_name(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), name, start, end);
	if (free_name) g_free(name);

}


static PHP_METHOD(GtkTextBuffer, select_range)
{
	GtkTextIter *ins = NULL, *bound = NULL;
	zval *php_ins, *php_bound;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_ins, gboxed_ce, &php_bound, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_ins, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        ins = (GtkTextIter *) PHPG_GBOXED(php_ins);
    } else {
        php_error(E_WARNING, "%s::%s() expects ins argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_bound, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        bound = (GtkTextIter *) PHPG_GBOXED(php_bound);
    } else {
        php_error(E_WARNING, "%s::%s() expects bound argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_text_buffer_select_range(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), ins, bound);

}


static PHP_METHOD(GtkTextBuffer, set_modified)
{
	zend_bool setting;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &setting))
		return;

    gtk_text_buffer_set_modified(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), (gboolean)setting);

}

#line 218 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextBuffer, set_text)
{
    char *text;
    int text_len;
    zend_bool free_text;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u#", &text, &text_len, &free_text))
        return;

    gtk_text_buffer_set_text(GTK_TEXT_BUFFER(PHPG_GOBJECT(this_ptr)), text, text_len);

    if (free_text) g_free(text);
}

#line 13540 "ext/gtk+/gen_gtk.c"



ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktextbuffer_gtk_text_buffer_new, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, tag_table, GtkTextTagTable, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_add_selection_clipboard, 0)
    ZEND_ARG_OBJ_INFO(0, clipboard, GtkClipboard, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_apply_tag, 0)
    ZEND_ARG_OBJ_INFO(0, tag, GtkTextTag, 1)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_apply_tag_by_name, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_backspace, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
    ZEND_ARG_INFO(0, interactive)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_copy_clipboard, 0)
    ZEND_ARG_OBJ_INFO(0, clipboard, GtkClipboard, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_create_child_anchor, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktextbuffer_create_mark, 0, 0, 2)
    ZEND_ARG_INFO(0, mark_name)
    ZEND_ARG_OBJ_INFO(0, where, GtkTextIter, 1)
    ZEND_ARG_INFO(0, left_gravity)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_cut_clipboard, 0)
    ZEND_ARG_OBJ_INFO(0, clipboard, GtkClipboard, 1)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_delete, 0)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_delete_interactive, 0)
    ZEND_ARG_OBJ_INFO(0, start_iter, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end_iter, GtkTextIter, 1)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_delete_mark, 0)
    ZEND_ARG_OBJ_INFO(0, mark, GtkTextMark, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_delete_mark_by_name, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_delete_selection, 0)
    ZEND_ARG_INFO(0, interactive)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_get_iter_at_line, 0)
    ZEND_ARG_INFO(0, line_number)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_get_iter_at_line_index, 0)
    ZEND_ARG_INFO(0, line_number)
    ZEND_ARG_INFO(0, byte_offset)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_get_iter_at_line_offset, 0)
    ZEND_ARG_INFO(0, line_number)
    ZEND_ARG_INFO(0, char_offset)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_get_iter_at_offset, 0)
    ZEND_ARG_INFO(0, char_offset)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_get_mark, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktextbuffer_get_slice, 0, 0, 2)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
    ZEND_ARG_INFO(0, include_hidden_chars)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktextbuffer_get_text, 0, 0, 2)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
    ZEND_ARG_INFO(0, include_hidden_chars)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktextbuffer_insert, 0, 0, 2)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
    ZEND_ARG_INFO(0, text)
    ZEND_ARG_INFO(0, len)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktextbuffer_insert_at_cursor, 0, 0, 1)
    ZEND_ARG_INFO(0, text)
    ZEND_ARG_INFO(0, len)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_insert_child_anchor, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, anchor, GtkTextChildAnchor, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_insert_interactive, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
    ZEND_ARG_INFO(0, text)
    ZEND_ARG_INFO(0, len)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_insert_interactive_at_cursor, 0)
    ZEND_ARG_INFO(0, text)
    ZEND_ARG_INFO(0, len)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_insert_pixbuf, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, pixbuf, GdkPixbuf, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_insert_range, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_insert_range_interactive, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_move_mark, 0)
    ZEND_ARG_OBJ_INFO(0, mark, GtkTextMark, 1)
    ZEND_ARG_OBJ_INFO(0, where, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_move_mark_by_name, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_OBJ_INFO(0, where, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_paste_clipboard, 0)
    ZEND_ARG_OBJ_INFO(0, clipboard, GtkClipboard, 1)
    ZEND_ARG_OBJ_INFO(0, override_location, GtkTextIter, 1)
    ZEND_ARG_INFO(0, default_editable)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_place_cursor, 0)
    ZEND_ARG_OBJ_INFO(0, where, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_remove_all_tags, 0)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_remove_selection_clipboard, 0)
    ZEND_ARG_OBJ_INFO(0, clipboard, GtkClipboard, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_remove_tag, 0)
    ZEND_ARG_OBJ_INFO(0, tag, GtkTextTag, 1)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_remove_tag_by_name, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_OBJ_INFO(0, start, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, end, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_select_range, 0)
    ZEND_ARG_OBJ_INFO(0, ins, GtkTextIter, 1)
    ZEND_ARG_OBJ_INFO(0, bound, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_set_modified, 0)
    ZEND_ARG_INFO(0, setting)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextbuffer_set_text, 0)
    ZEND_ARG_INFO(0, text)
ZEND_END_ARG_INFO();


static function_entry gtktextbuffer_methods[] = {
	PHP_ME(GtkTextBuffer, __construct,          arginfo_gtk_gtktextbuffer_gtk_text_buffer_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, add_selection_clipboard, arginfo_gtk_gtktextbuffer_add_selection_clipboard, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, apply_tag,            arginfo_gtk_gtktextbuffer_apply_tag, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, apply_tag_by_name,    arginfo_gtk_gtktextbuffer_apply_tag_by_name, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, backspace,            arginfo_gtk_gtktextbuffer_backspace, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, begin_user_action,    NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, copy_clipboard,       arginfo_gtk_gtktextbuffer_copy_clipboard, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, create_child_anchor,  arginfo_gtk_gtktextbuffer_create_child_anchor, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, create_mark,          arginfo_gtk_gtktextbuffer_create_mark, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, cut_clipboard,        arginfo_gtk_gtktextbuffer_cut_clipboard, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, delete,               arginfo_gtk_gtktextbuffer_delete, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, delete_interactive,   arginfo_gtk_gtktextbuffer_delete_interactive, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, delete_mark,          arginfo_gtk_gtktextbuffer_delete_mark, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, delete_mark_by_name,  arginfo_gtk_gtktextbuffer_delete_mark_by_name, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, delete_selection,     arginfo_gtk_gtktextbuffer_delete_selection, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, end_user_action,      NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_bounds,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_char_count,       NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_end_iter,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_insert,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_iter_at_child_anchor, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_iter_at_line,     arginfo_gtk_gtktextbuffer_get_iter_at_line, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_iter_at_line_index, arginfo_gtk_gtktextbuffer_get_iter_at_line_index, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_iter_at_line_offset, arginfo_gtk_gtktextbuffer_get_iter_at_line_offset, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_iter_at_mark,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_iter_at_offset,   arginfo_gtk_gtktextbuffer_get_iter_at_offset, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_line_count,       NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_mark,             arginfo_gtk_gtktextbuffer_get_mark, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_modified,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_selection_bound,  NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_selection_bounds, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_slice,            arginfo_gtk_gtktextbuffer_get_slice, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_start_iter,       NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_tag_table,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, get_text,             arginfo_gtk_gtktextbuffer_get_text, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert,               arginfo_gtk_gtktextbuffer_insert, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_at_cursor,     arginfo_gtk_gtktextbuffer_insert_at_cursor, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_child_anchor,  arginfo_gtk_gtktextbuffer_insert_child_anchor, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_interactive,   arginfo_gtk_gtktextbuffer_insert_interactive, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_interactive_at_cursor, arginfo_gtk_gtktextbuffer_insert_interactive_at_cursor, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_pixbuf,        arginfo_gtk_gtktextbuffer_insert_pixbuf, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_range,         arginfo_gtk_gtktextbuffer_insert_range, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_range_interactive, arginfo_gtk_gtktextbuffer_insert_range_interactive, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, insert_with_tags_by_name, NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, move_mark,            arginfo_gtk_gtktextbuffer_move_mark, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, move_mark_by_name,    arginfo_gtk_gtktextbuffer_move_mark_by_name, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, paste_clipboard,      arginfo_gtk_gtktextbuffer_paste_clipboard, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, place_cursor,         arginfo_gtk_gtktextbuffer_place_cursor, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, remove_all_tags,      arginfo_gtk_gtktextbuffer_remove_all_tags, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, remove_selection_clipboard, arginfo_gtk_gtktextbuffer_remove_selection_clipboard, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, remove_tag,           arginfo_gtk_gtktextbuffer_remove_tag, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, remove_tag_by_name,   arginfo_gtk_gtktextbuffer_remove_tag_by_name, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, select_range,         arginfo_gtk_gtktextbuffer_select_range, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, set_modified,         arginfo_gtk_gtktextbuffer_set_modified, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextBuffer, set_text,             arginfo_gtk_gtktextbuffer_set_text, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTextChildAnchor, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextChildAnchor);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextChildAnchor);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkTextChildAnchor, get_deleted)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_child_anchor_get_deleted(GTK_TEXT_CHILD_ANCHOR(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}

#line 518 "ext/gtk+/gtktextview.overrides"
static PHP_METHOD(GtkTextChildAnchor, get_widgets)
{
    GList *widgets;
    gint i, len;
    zval *php_item = NULL;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    widgets = gtk_text_child_anchor_get_widgets(GTK_TEXT_CHILD_ANCHOR(PHPG_GOBJECT(this_ptr)));
    len = g_list_length(widgets);

    array_init(return_value);
    for (i = 0; i < len; i++) {
        MAKE_STD_ZVAL(php_item);
        phpg_gobject_new(&php_item, (GObject *)g_list_nth_data(widgets, i) TSRMLS_CC);
        add_next_index_zval(return_value, php_item);
    }

    g_list_free(widgets);
}

#line 13903 "ext/gtk+/gen_gtk.c"



static function_entry gtktextchildanchor_methods[] = {
	PHP_ME(GtkTextChildAnchor, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextChildAnchor, get_deleted,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextChildAnchor, get_widgets,          NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTextMark, get_buffer)
{
	GtkTextBuffer* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_mark_get_buffer(GTK_TEXT_MARK(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTextMark, get_deleted)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_mark_get_deleted(GTK_TEXT_MARK(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextMark, get_left_gravity)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_mark_get_left_gravity(GTK_TEXT_MARK(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextMark, get_name)
{
	const gchar *php_retval;
	gchar *cp_ret;
	gsize cp_len;
	zend_bool free_result;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_mark_get_name(GTK_TEXT_MARK(PHPG_GOBJECT(this_ptr)));
    if (php_retval) {
        cp_ret = phpg_from_utf8(php_retval, strlen(php_retval), &cp_len, &free_result TSRMLS_CC);
        if (cp_ret) {
            RETVAL_STRINGL((char *)cp_ret, cp_len, 1);
        } else {
            php_error(E_WARNING, "%s::%s(): could not convert return value from UTF-8", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        }
        if (free_result)
            g_free(cp_ret);
    } else {
        RETVAL_NULL();
    }
}


static PHP_METHOD(GtkTextMark, get_visible)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_mark_get_visible(GTK_TEXT_MARK(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextMark, set_visible)
{
	zend_bool setting;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &setting))
		return;

    gtk_text_mark_set_visible(GTK_TEXT_MARK(PHPG_GOBJECT(this_ptr)), (gboolean)setting);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktextmark_set_visible, 0)
    ZEND_ARG_INFO(0, setting)
ZEND_END_ARG_INFO();

static function_entry gtktextmark_methods[] = {
	PHP_ME(GtkTextMark, get_buffer,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextMark, get_deleted,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextMark, get_left_gravity,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextMark, get_name,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextMark, get_visible,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextMark, set_visible,          arginfo_gtk_gtktextmark_set_visible, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTextTag, __construct)
{
    GParameter params[1];
	zval *php_args[2] = { NULL, };
	char *prop_names[] = { "name",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|^u", &php_args[0], &php_args[1])) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextTag);
    }

	memset(&params, 0, 1 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextTag);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextTag);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkTextTag, event)
{
	zval *event_object, *php_event, *php_iter;
	GdkEvent *event = NULL;
	GtkTextIter *iter = NULL;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OOO", &event_object, gobject_ce, &php_event, gboxed_ce, &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_event, GDK_TYPE_EVENT, FALSE TSRMLS_CC)) {
        event = (GdkEvent *) PHPG_GBOXED(php_event);
    } else {
        php_error(E_WARNING, "%s::%s() expects event argument to be a valid GdkEvent object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TEXT_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTextIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTextIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_text_tag_event(GTK_TEXT_TAG(PHPG_GOBJECT(this_ptr)), G_OBJECT(PHPG_GOBJECT(event_object)), event, iter);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTextTag, get_priority)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_tag_get_priority(GTK_TEXT_TAG(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkTextTag, set_priority)
{
	long priority;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &priority))
		return;

    gtk_text_tag_set_priority(GTK_TEXT_TAG(PHPG_GOBJECT(this_ptr)), (gint)priority);

}


ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktexttag_gtk_text_tag_new, 0, 0, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktexttag_event, 0)
    ZEND_ARG_OBJ_INFO(0, event_object, GObject, 1)
    ZEND_ARG_OBJ_INFO(0, event, GdkEvent, 1)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTextIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktexttag_set_priority, 0)
    ZEND_ARG_INFO(0, priority)
ZEND_END_ARG_INFO();

static function_entry gtktexttag_methods[] = {
	PHP_ME(GtkTextTag, __construct,          arginfo_gtk_gtktexttag_gtk_text_tag_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTag, event,                arginfo_gtk_gtktexttag_event, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTag, get_priority,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTag, set_priority,         arginfo_gtk_gtktexttag_set_priority, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTextTagTable, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextTagTable);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTextTagTable);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkTextTagTable, add)
{
	zval *tag;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &tag, gtktexttag_ce))
		return;

    gtk_text_tag_table_add(GTK_TEXT_TAG_TABLE(PHPG_GOBJECT(this_ptr)), GTK_TEXT_TAG(PHPG_GOBJECT(tag)));

}

#line 554 "ext/gtk+/gtktextview.overrides"
static void phpg_text_tag_table_foreach_func_marshal(GtkTextTagTable *table, gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_table = NULL;

    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_table,       (GObject*)table       TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 1, &n_args);
    args[0] = &php_table;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_table);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
}

static PHP_METHOD(GtkTextTagTable, foreach)
{
    zval *php_callback, *extra;
    phpg_cb_data_t *cb_data;
    GtkTextTagTableForeach callback;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &php_callback))
        return;

    zval_add_ref(&php_callback);
    cb_data  = phpg_cb_data_new(php_callback, extra TSRMLS_CC);
    callback = (GtkTextTagTableForeach)phpg_text_tag_table_foreach_func_marshal;

    gtk_text_tag_table_foreach(GTK_TEXT_TAG_TABLE(PHPG_GOBJECT(this_ptr)), callback, cb_data);
    phpg_cb_data_destroy(cb_data);
}


#line 14233 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTextTagTable, get_size)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_text_tag_table_get_size(GTK_TEXT_TAG_TABLE(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkTextTagTable, lookup)
{
	char *name;
	zend_bool free_name = FALSE;
	GtkTextTag* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "u", &name, &free_name))
		return;

    php_retval = gtk_text_tag_table_lookup(GTK_TEXT_TAG_TABLE(PHPG_GOBJECT(this_ptr)), name);
	if (free_name) g_free(name);
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTextTagTable, remove)
{
	zval *tag;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &tag, gtktexttag_ce))
		return;

    gtk_text_tag_table_remove(GTK_TEXT_TAG_TABLE(PHPG_GOBJECT(this_ptr)), GTK_TEXT_TAG(PHPG_GOBJECT(tag)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktexttagtable_add, 0)
    ZEND_ARG_OBJ_INFO(0, tag, GtkTextTag, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktexttagtable_foreach, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktexttagtable_lookup, 0)
    ZEND_ARG_INFO(0, name)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktexttagtable_remove, 0)
    ZEND_ARG_OBJ_INFO(0, tag, GtkTextTag, 1)
ZEND_END_ARG_INFO();

static function_entry gtktexttagtable_methods[] = {
	PHP_ME(GtkTextTagTable, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTagTable, add,                  arginfo_gtk_gtktexttagtable_add, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTagTable, foreach,              arginfo_gtk_gtktexttagtable_foreach, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTagTable, get_size,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTagTable, lookup,               arginfo_gtk_gtktexttagtable_lookup, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTextTagTable, remove,               arginfo_gtk_gtktexttagtable_remove, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkToggleAction, __construct)
{
    GParameter params[4];
	zval *php_args[5] = { NULL, };
	char *prop_names[] = { "name", "label", "tooltip", "stock_id",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "^u^u^u^u", &php_args[0], &php_args[1], &php_args[2], &php_args[3], &php_args[4], &php_args[5], &php_args[6], &php_args[7])) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkToggleAction);
    }

	memset(&params, 0, 4 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkToggleAction);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkToggleAction);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkToggleAction, get_active)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkToggleAction, get_draw_as_radio)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_toggle_action_get_draw_as_radio(GTK_TOGGLE_ACTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkToggleAction, set_active)
{
	zend_bool is_active;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &is_active))
		return;

    gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(PHPG_GOBJECT(this_ptr)), (gboolean)is_active);

}


static PHP_METHOD(GtkToggleAction, set_draw_as_radio)
{
	zend_bool draw_as_radio;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "b", &draw_as_radio))
		return;

    gtk_toggle_action_set_draw_as_radio(GTK_TOGGLE_ACTION(PHPG_GOBJECT(this_ptr)), (gboolean)draw_as_radio);

}


static PHP_METHOD(GtkToggleAction, toggled)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_toggle_action_toggled(GTK_TOGGLE_ACTION(PHPG_GOBJECT(this_ptr)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktoggleaction_gtk_toggle_action_new, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_INFO(0, label)
    ZEND_ARG_INFO(0, tooltip)
    ZEND_ARG_INFO(0, stock_id)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktoggleaction_set_active, 0)
    ZEND_ARG_INFO(0, is_active)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktoggleaction_set_draw_as_radio, 0)
    ZEND_ARG_INFO(0, draw_as_radio)
ZEND_END_ARG_INFO();

static function_entry gtktoggleaction_methods[] = {
	PHP_ME(GtkToggleAction, __construct,          arginfo_gtk_gtktoggleaction_gtk_toggle_action_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkToggleAction, get_active,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkToggleAction, get_draw_as_radio,    NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkToggleAction, set_active,           arginfo_gtk_gtktoggleaction_set_active, ZEND_ACC_PUBLIC)
	PHP_ME(GtkToggleAction, set_draw_as_radio,    arginfo_gtk_gtktoggleaction_set_draw_as_radio, ZEND_ACC_PUBLIC)
	PHP_ME(GtkToggleAction, toggled,              NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkRadioAction, __construct)
{
    GParameter params[5];
	zval *php_args[6] = { NULL, };
	char *prop_names[] = { "name", "label", "tooltip", "stock_id", "value",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "^u^u^u^u^i", &php_args[0], &php_args[1], &php_args[2], &php_args[3], &php_args[4], &php_args[5], &php_args[6], &php_args[7], &php_args[8])) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkRadioAction);
    }

	memset(&params, 0, 5 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkRadioAction);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkRadioAction);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkRadioAction, get_current_value)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_radio_action_get_current_value(GTK_RADIO_ACTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}

#line 4747 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkRadioAction, get_group)
{
    GSList *group, *current;
    zval *item;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    group = gtk_radio_action_get_group(GTK_RADIO_ACTION(PHPG_GOBJECT(this_ptr)));

    array_init(return_value);
    for (current = group; current; current = current->next) {
        MAKE_STD_ZVAL(item);
        phpg_gobject_new(&item, G_OBJECT(current->data) TSRMLS_CC);
        add_next_index_zval(return_value, item);
    }
}

#line 14505 "ext/gtk+/gen_gtk.c"


#line 4769 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkRadioAction, set_group)
{
    zval *php_action = NULL;
    GSList *list;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_action, gtkradioaction_ce))
        return;

    list = gtk_radio_action_get_group(GTK_RADIO_ACTION(PHPG_GOBJECT(php_action)));
    if (list == gtk_radio_action_get_group(GTK_RADIO_ACTION(PHPG_GOBJECT(this_ptr)))) {
        return;
    }
    gtk_radio_action_set_group(GTK_RADIO_ACTION(PHPG_GOBJECT(this_ptr)), list);
}

#line 14526 "ext/gtk+/gen_gtk.c"



ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtkradioaction_gtk_radio_action_new, 0)
    ZEND_ARG_INFO(0, name)
    ZEND_ARG_INFO(0, label)
    ZEND_ARG_INFO(0, tooltip)
    ZEND_ARG_INFO(0, stock_id)
    ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO();

static function_entry gtkradioaction_methods[] = {
	PHP_ME(GtkRadioAction, __construct,          arginfo_gtk_gtkradioaction_gtk_radio_action_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkRadioAction, get_current_value,    NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkRadioAction, get_group,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkRadioAction, set_group,            NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTooltips, __construct)
{
    GObject *wrapped_obj;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTooltips);
    }


    wrapped_obj = (GObject *) g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTooltips);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


PHPG_PROP_READER(GtkTooltips, tip_window)
{
	GtkWidget* php_retval;

    php_retval = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj)->tip_window;
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
    return SUCCESS;
}


PHPG_PROP_READER(GtkTooltips, tip_label)
{
	GtkWidget* php_retval;

    php_retval = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj)->tip_label;
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
    return SUCCESS;
}

#line 6497 "ext/gtk+/gtk.overrides"
PHPG_PROP_READER(GtkTooltips, active_tips_data)
{
	GtkTooltips *tooltips;
	GtkTooltipsData *data;
    zval *tool_widget, *widget;

	tooltips = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj);
    data = (GtkTooltipsData*)tooltips->active_tips_data;

    if (data == NULL) {
        RETVAL_NULL();
    } else {
        phpg_gobject_new(&tool_widget, (GObject *) data->tooltips TSRMLS_CC);
        phpg_gobject_new(&widget, (GObject *) data->widget TSRMLS_CC);
        php_gtk_build_value(&return_value, "(NNss)", tool_widget, widget, data->tip_text, data->tip_private);
    }

	return SUCCESS;
}

#line 14606 "ext/gtk+/gen_gtk.c"


#line 6473 "ext/gtk+/gtk.overrides"
PHPG_PROP_READER(GtkTooltips, tips_data_list)
{
	GtkTooltips *tooltips;
	GList *data, *current;

	tooltips = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj);
    array_init(return_value);
    
    data = tooltips->tips_data_list;
    for (current = data; current; current = current->next) {
		zval *data_array, *item, *tool_widget, *widget;
		GtkTooltipsData *tooltip = (GtkTooltipsData*)current->data;
		MAKE_STD_ZVAL(data_array);
		array_init(data_array);
		phpg_gobject_new(&tool_widget, (GObject *) tooltip->tooltips TSRMLS_CC);
		phpg_gobject_new(&widget, (GObject *) tooltip->widget TSRMLS_CC);
		php_gtk_build_value(&item, "(NNss)", tool_widget, widget, tooltip->tip_text, tooltip->tip_private);
        add_next_index_zval(return_value, data_array);
    }
	return SUCCESS;
}

#line 14632 "ext/gtk+/gen_gtk.c"



PHPG_PROP_READER(GtkTooltips, delay)
{
	long php_retval;

    php_retval = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj)->delay;
	RETVAL_LONG(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkTooltips, enabled)
{
	long php_retval;

    php_retval = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj)->enabled;
	RETVAL_LONG(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkTooltips, use_sticky_delay)
{
	long php_retval;

    php_retval = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj)->use_sticky_delay;
	RETVAL_LONG(php_retval);
    return SUCCESS;
}


PHPG_PROP_READER(GtkTooltips, timer_tag)
{
	long php_retval;

    php_retval = GTK_TOOLTIPS(((phpg_gobject_t *)object)->obj)->timer_tag;
	RETVAL_LONG(php_retval);
    return SUCCESS;
}


static prop_info_t gtktooltips_prop_info[] = {
	{ "tip_window", PHPG_PROP_READ_FN(GtkTooltips, tip_window), NULL },
	{ "tip_label", PHPG_PROP_READ_FN(GtkTooltips, tip_label), NULL },
	{ "active_tips_data", PHPG_PROP_READ_FN(GtkTooltips, active_tips_data), NULL },
	{ "tips_data_list", PHPG_PROP_READ_FN(GtkTooltips, tips_data_list), NULL },
	{ "delay", PHPG_PROP_READ_FN(GtkTooltips, delay), NULL },
	{ "enabled", PHPG_PROP_READ_FN(GtkTooltips, enabled), NULL },
	{ "use_sticky_delay", PHPG_PROP_READ_FN(GtkTooltips, use_sticky_delay), NULL },
	{ "timer_tag", PHPG_PROP_READ_FN(GtkTooltips, timer_tag), NULL },
	{ NULL, NULL, NULL },
};


static PHP_METHOD(GtkTooltips, disable)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tooltips_disable(GTK_TOOLTIPS(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkTooltips, enable)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tooltips_enable(GTK_TOOLTIPS(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkTooltips, force_window)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tooltips_force_window(GTK_TOOLTIPS(PHPG_GOBJECT(this_ptr)));

}

#line 6446 "ext/gtk+/gtk.overrides"
static PHP_METHOD(GtkTooltips, get_info_from_tip_window)
{
    zval *window;
    GtkTooltips *tooltips;
    GtkWidget *widget;
    gboolean ret;
    zval *php_tooltips = NULL, *php_widget = NULL;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &window, gtkwindow_ce)) {
        return;
    }

    ret = gtk_tooltips_get_info_from_tip_window(GTK_WINDOW(PHPG_GOBJECT(window)), &tooltips, &widget);
    if (ret) {
        phpg_gobject_new(&php_tooltips, (GObject *) tooltips TSRMLS_CC);
        phpg_gobject_new(&php_widget, (GObject *) widget TSRMLS_CC);
        php_gtk_build_value(&return_value, "(NN)", tooltips, widget);
    }

    RETURN_FALSE;
}
#line 14749 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTooltips, set_delay)
{
	long delay;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &delay))
		return;

    gtk_tooltips_set_delay(GTK_TOOLTIPS(PHPG_GOBJECT(this_ptr)), (guint)delay);

}


static PHP_METHOD(GtkTooltips, set_tip)
{
	zval *widget;
	char *tip_text, *tip_private = NULL;
	zend_bool free_tip_text = FALSE, free_tip_private = FALSE;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Ou|u", &widget, gtkwidget_ce, &tip_text, &free_tip_text, &tip_private, &free_tip_private))
		return;

    gtk_tooltips_set_tip(GTK_TOOLTIPS(PHPG_GOBJECT(this_ptr)), GTK_WIDGET(PHPG_GOBJECT(widget)), tip_text, tip_private);
	if (free_tip_text) g_free(tip_text);
	if (free_tip_private) g_free(tip_private);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktooltips_set_delay, 0)
    ZEND_ARG_INFO(0, delay)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktooltips_set_tip, 0, 0, 2)
    ZEND_ARG_OBJ_INFO(0, widget, GtkWidget, 1)
    ZEND_ARG_INFO(0, tip_text)
    ZEND_ARG_INFO(0, tip_private)
ZEND_END_ARG_INFO();

static function_entry gtktooltips_methods[] = {
	PHP_ME(GtkTooltips, __construct,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTooltips, disable,              NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTooltips, enable,               NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTooltips, force_window,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTooltips, get_info_from_tip_window, NULL, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
	PHP_ME(GtkTooltips, set_delay,            arginfo_gtk_gtktooltips_set_delay, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTooltips, set_tip,              arginfo_gtk_gtktooltips_set_tip, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};
#line 1577 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModelFilter, __construct)
{
    GObject *wrapped_obj;
    GtkTreePath *path = NULL;
    zval *php_model = NULL, *php_path = NULL;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O|V", &php_model, gtktreemodel_ce, &php_path))
        return;

    if (php_path && phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path argument to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    wrapped_obj = g_object_new(phpg_gtype_from_zval(this_ptr),
                               "child-model", GTK_TREE_MODEL(PHPG_GOBJECT(php_model)),
                               "virtual-root", path,
                               NULL);

    if (path) {
        gtk_tree_path_free(path);
    }

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeModelFilter);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}

#line 14838 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModelFilter, clear_cache)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_model_filter_clear_cache(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)));

}

#line 1616 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModelFilter, convert_child_iter_to_iter)
{
    GtkTreeIter filter_iter, *child_iter = NULL;
    zval *php_child_iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_child_iter, gboxed_ce))
        return;

    if (phpg_gboxed_check(php_child_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        child_iter = (GtkTreeIter *) PHPG_GBOXED(php_child_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects child_iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_filter_convert_child_iter_to_iter(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)), &filter_iter, child_iter);

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &filter_iter, TRUE, TRUE TSRMLS_CC);
}

#line 14878 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModelFilter, convert_child_path_to_path)
{
	GtkTreePath *child_path, *php_retval;
	zval *php_child_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_child_path))
		return;

    if (phpg_tree_path_from_zval(php_child_path, &child_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects child_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_filter_convert_child_path_to_path(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)), child_path);

    if (child_path)
        gtk_tree_path_free(child_path);

    if (php_retval) {
        phpg_tree_path_to_zval(php_retval, &return_value TSRMLS_CC);
    }

}

#line 1648 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModelFilter, convert_iter_to_child_iter)
{
    GtkTreeIter child_iter, *filter_iter = NULL;
    zval *php_filter_iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_filter_iter, gboxed_ce))
        return;

    if (phpg_gboxed_check(php_filter_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        filter_iter = (GtkTreeIter *) PHPG_GBOXED(php_filter_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects filter_iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)), &child_iter, filter_iter);

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &child_iter, TRUE, TRUE TSRMLS_CC);
}

#line 14932 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModelFilter, convert_path_to_child_path)
{
	GtkTreePath *filter_path, *php_retval;
	zval *php_filter_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_filter_path))
		return;

    if (phpg_tree_path_from_zval(php_filter_path, &filter_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects filter_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_filter_convert_path_to_child_path(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)), filter_path);

    if (filter_path)
        gtk_tree_path_free(filter_path);

    if (php_retval) {
        phpg_tree_path_to_zval(php_retval, &return_value TSRMLS_CC);
    }

}


static PHP_METHOD(GtkTreeModelFilter, get_model)
{
	GtkTreeModel* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_model_filter_get_model(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTreeModelFilter, refilter)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_model_filter_refilter(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkTreeModelFilter, set_visible_column)
{
	long column;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i", &column))
		return;

    gtk_tree_model_filter_set_visible_column(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)), (gint)column);

}

#line 1680 "ext/gtk+/gtktreeview.overrides"
static gboolean phpg_tree_model_filter_visible_func_marshal(GtkTreeModel *model, GtkTreeIter *iter, gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_model = NULL, *php_iter = NULL;
    gboolean show = TRUE;
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return 0;
    }

    phpg_gobject_new(&php_model,       (GObject*)model       TSRMLS_CC);
    phpg_gboxed_new(&php_iter, GTK_TYPE_TREE_ITER, iter, TRUE, TRUE TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 2, &n_args);
    args[0] = &php_model;
    args[1] = &php_iter;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_model);
    zval_ptr_dtor(&php_iter);

    if (retval) {
        show = zend_is_true(retval);
        zval_ptr_dtor(&retval);
    } else {
        show = TRUE;
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);

    return show;
}

static PHP_METHOD(GtkTreeModelFilter, set_visible_func)
{
    zval *callback, *extra;
    phpg_cb_data_t *cb_data;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &callback))
        return;

    zval_add_ref(&callback);
    cb_data = phpg_cb_data_new(callback, extra TSRMLS_CC);

    gtk_tree_model_filter_set_visible_func(GTK_TREE_MODEL_FILTER(PHPG_GOBJECT(this_ptr)),
                                                           (GtkTreeModelFilterVisibleFunc)phpg_tree_model_filter_visible_func_marshal,
                                                           cb_data, phpg_cb_data_destroy);
}

#line 15066 "ext/gtk+/gen_gtk.c"


ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreemodelfilter_gtk_tree_model_filter_new, 0, 0, 1)
    ZEND_ARG_OBJ_INFO(0, model, GtkTreeModel, 1)
    ZEND_ARG_INFO(0, root)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelfilter_convert_child_iter_to_iter, 0)
    ZEND_ARG_OBJ_INFO(0, child_iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelfilter_convert_child_path_to_path, 0)
    ZEND_ARG_INFO(0, child_path)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelfilter_convert_iter_to_child_iter, 0)
    ZEND_ARG_OBJ_INFO(0, filter_iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelfilter_convert_path_to_child_path, 0)
    ZEND_ARG_INFO(0, filter_path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelfilter_set_visible_column, 0)
    ZEND_ARG_INFO(0, column)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelfilter_set_visible_func, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


static function_entry gtktreemodelfilter_methods[] = {
	PHP_ME(GtkTreeModelFilter, __construct,          arginfo_gtk_gtktreemodelfilter_gtk_tree_model_filter_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, clear_cache,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, convert_child_iter_to_iter, arginfo_gtk_gtktreemodelfilter_convert_child_iter_to_iter, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, convert_child_path_to_path, arginfo_gtk_gtktreemodelfilter_convert_child_path_to_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, convert_iter_to_child_iter, arginfo_gtk_gtktreemodelfilter_convert_iter_to_child_iter, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, convert_path_to_child_path, arginfo_gtk_gtktreemodelfilter_convert_path_to_child_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, get_model,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, refilter,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, set_visible_column,   arginfo_gtk_gtktreemodelfilter_set_visible_column, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelFilter, set_visible_func,     arginfo_gtk_gtktreemodelfilter_set_visible_func, ZEND_ACC_PUBLIC)

	/***   GtkTreeModel interface implementations   ***/

	PHP_MALIAS(GtkTreeModel, foreach, foreach, arginfo_gtk_gtktreemodel_foreach, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get, get, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_column_type, get_column_type, arginfo_gtk_gtktreemodel_get_column_type, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_flags, get_flags, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter, get_iter, arginfo_gtk_gtktreemodel_get_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_first, get_iter_first, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_root, get_iter_root, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_from_string, get_iter_from_string, arginfo_gtk_gtktreemodel_get_iter_from_string, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_n_columns, get_n_columns, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_path, get_path, arginfo_gtk_gtktreemodel_get_path, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_string_from_iter, get_string_from_iter, arginfo_gtk_gtktreemodel_get_string_from_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_value, get_value, arginfo_gtk_gtktreemodel_get_value, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_children, iter_children, arginfo_gtk_gtktreemodel_iter_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_has_child, iter_has_child, arginfo_gtk_gtktreemodel_iter_has_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_n_children, iter_n_children, arginfo_gtk_gtktreemodel_iter_n_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_next, iter_next, arginfo_gtk_gtktreemodel_iter_next, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_nth_child, iter_nth_child, arginfo_gtk_gtktreemodel_iter_nth_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_parent, iter_parent, arginfo_gtk_gtktreemodel_iter_parent, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, ref_node, ref_node, arginfo_gtk_gtktreemodel_ref_node, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_changed, row_changed, arginfo_gtk_gtktreemodel_row_changed, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_deleted, row_deleted, arginfo_gtk_gtktreemodel_row_deleted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_has_child_toggled, row_has_child_toggled, arginfo_gtk_gtktreemodel_row_has_child_toggled, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_inserted, row_inserted, arginfo_gtk_gtktreemodel_row_inserted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, rows_reordered, rows_reordered, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, unref_node, unref_node, arginfo_gtk_gtktreemodel_unref_node, ZEND_ACC_PUBLIC)

	/***   GtkTreeDragSource interface implementations   ***/

	PHP_MALIAS(GtkTreeDragSource, drag_data_delete, drag_data_delete, arginfo_gtk_gtktreedragsource_drag_data_delete, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragSource, drag_data_get, drag_data_get, arginfo_gtk_gtktreedragsource_drag_data_get, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragSource, row_draggable, row_draggable, arginfo_gtk_gtktreedragsource_row_draggable, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTreeModelSort, __construct)
{
    GParameter params[1];
	zval *php_args[2] = { NULL, };
	char *prop_names[] = { "model",  NULL };
	GType gtype = phpg_gtype_from_zval(this_ptr);
    GObject *wrapped_obj;
    guint i, n_params;

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "^O", &php_args[0], gtktreemodel_ce)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeModelSort);
    }

	memset(&params, 0, 1 * sizeof(GParameter));
    if (!phpg_parse_ctor_props(gtype, php_args, params, &n_params, prop_names TSRMLS_CC)) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeModelSort);
    }

    wrapped_obj = (GObject *) g_object_newv(gtype, n_params, params);

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeModelSort);
    }

	for (i = 0; i < n_params; i++) {
		g_value_unset(&params[i].value);
    }
    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}


static PHP_METHOD(GtkTreeModelSort, clear_cache)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_model_sort_clear_cache(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)));

}

#line 1755 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModelSort, convert_child_iter_to_iter)
{
    GtkTreeIter sort_iter, *child_iter = NULL;
    zval *php_child_iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_child_iter, gboxed_ce))
        return;

    if (phpg_gboxed_check(php_child_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        child_iter = (GtkTreeIter *) PHPG_GBOXED(php_child_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects child_iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_sort_convert_child_iter_to_iter(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)), &sort_iter, child_iter);

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &sort_iter, TRUE, TRUE TSRMLS_CC);
}

#line 15221 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModelSort, convert_child_path_to_path)
{
	GtkTreePath *child_path, *php_retval;
	zval *php_child_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_child_path))
		return;

    if (phpg_tree_path_from_zval(php_child_path, &child_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects child_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_sort_convert_child_path_to_path(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)), child_path);

    if (child_path)
        gtk_tree_path_free(child_path);

    if (php_retval) {
        phpg_tree_path_to_zval(php_retval, &return_value TSRMLS_CC);
        gtk_tree_path_free(php_retval);
    }

}

#line 1787 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeModelSort, convert_iter_to_child_iter)
{
    GtkTreeIter child_iter, *sort_iter = NULL;
    zval *php_sort_iter;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_sort_iter, gboxed_ce))
        return;

    if (phpg_gboxed_check(php_sort_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        sort_iter = (GtkTreeIter *) PHPG_GBOXED(php_sort_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects sort_iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)), &child_iter, sort_iter);

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &child_iter, TRUE, TRUE TSRMLS_CC);
}

#line 15276 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeModelSort, convert_path_to_child_path)
{
	GtkTreePath *sorted_path, *php_retval;
	zval *php_sorted_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_sorted_path))
		return;

    if (phpg_tree_path_from_zval(php_sorted_path, &sorted_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects sorted_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_sort_convert_path_to_child_path(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)), sorted_path);

    if (sorted_path)
        gtk_tree_path_free(sorted_path);

    if (php_retval) {
        phpg_tree_path_to_zval(php_retval, &return_value TSRMLS_CC);
        gtk_tree_path_free(php_retval);
    }

}


static PHP_METHOD(GtkTreeModelSort, get_model)
{
	GtkTreeModel* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_model_sort_get_model(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTreeModelSort, iter_is_valid)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_model_sort_iter_is_valid(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeModelSort, reset_default_sort_func)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_model_sort_reset_default_sort_func(GTK_TREE_MODEL_SORT(PHPG_GOBJECT(this_ptr)));

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelsort_gtk_tree_model_sort_new_with_model, 0)
    ZEND_ARG_INFO(0, model)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelsort_convert_child_iter_to_iter, 0)
    ZEND_ARG_OBJ_INFO(0, child_iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelsort_convert_child_path_to_path, 0)
    ZEND_ARG_INFO(0, child_path)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelsort_convert_iter_to_child_iter, 0)
    ZEND_ARG_OBJ_INFO(0, sort_iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelsort_convert_path_to_child_path, 0)
    ZEND_ARG_INFO(0, sorted_path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreemodelsort_iter_is_valid, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

static function_entry gtktreemodelsort_methods[] = {
	PHP_ME(GtkTreeModelSort, __construct,          arginfo_gtk_gtktreemodelsort_gtk_tree_model_sort_new_with_model, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, clear_cache,          NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, convert_child_iter_to_iter, arginfo_gtk_gtktreemodelsort_convert_child_iter_to_iter, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, convert_child_path_to_path, arginfo_gtk_gtktreemodelsort_convert_child_path_to_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, convert_iter_to_child_iter, arginfo_gtk_gtktreemodelsort_convert_iter_to_child_iter, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, convert_path_to_child_path, arginfo_gtk_gtktreemodelsort_convert_path_to_child_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, get_model,            NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, iter_is_valid,        arginfo_gtk_gtktreemodelsort_iter_is_valid, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeModelSort, reset_default_sort_func, NULL, ZEND_ACC_PUBLIC)

	/***   GtkTreeModel interface implementations   ***/

	PHP_MALIAS(GtkTreeModel, foreach, foreach, arginfo_gtk_gtktreemodel_foreach, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get, get, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_column_type, get_column_type, arginfo_gtk_gtktreemodel_get_column_type, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_flags, get_flags, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter, get_iter, arginfo_gtk_gtktreemodel_get_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_first, get_iter_first, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_root, get_iter_root, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_from_string, get_iter_from_string, arginfo_gtk_gtktreemodel_get_iter_from_string, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_n_columns, get_n_columns, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_path, get_path, arginfo_gtk_gtktreemodel_get_path, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_string_from_iter, get_string_from_iter, arginfo_gtk_gtktreemodel_get_string_from_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_value, get_value, arginfo_gtk_gtktreemodel_get_value, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_children, iter_children, arginfo_gtk_gtktreemodel_iter_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_has_child, iter_has_child, arginfo_gtk_gtktreemodel_iter_has_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_n_children, iter_n_children, arginfo_gtk_gtktreemodel_iter_n_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_next, iter_next, arginfo_gtk_gtktreemodel_iter_next, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_nth_child, iter_nth_child, arginfo_gtk_gtktreemodel_iter_nth_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_parent, iter_parent, arginfo_gtk_gtktreemodel_iter_parent, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, ref_node, ref_node, arginfo_gtk_gtktreemodel_ref_node, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_changed, row_changed, arginfo_gtk_gtktreemodel_row_changed, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_deleted, row_deleted, arginfo_gtk_gtktreemodel_row_deleted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_has_child_toggled, row_has_child_toggled, arginfo_gtk_gtktreemodel_row_has_child_toggled, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_inserted, row_inserted, arginfo_gtk_gtktreemodel_row_inserted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, rows_reordered, rows_reordered, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, unref_node, unref_node, arginfo_gtk_gtktreemodel_unref_node, ZEND_ACC_PUBLIC)

	/***   GtkTreeSortable interface implementations   ***/

	PHP_MALIAS(GtkTreeSortable, get_sort_column_id, get_sort_column_id, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, has_default_sort_func, has_default_sort_func, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_default_sort_func, set_default_sort_func, arginfo_gtk_gtktreesortable_set_default_sort_func, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_sort_column_id, set_sort_column_id, arginfo_gtk_gtktreesortable_set_sort_column_id, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_sort_func, set_sort_func, arginfo_gtk_gtktreesortable_set_sort_func, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, sort_column_changed, sort_column_changed, NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};

static PHP_METHOD(GtkTreeSelection, count_selected_rows)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_selection_count_selected_rows(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkTreeSelection, get_mode)
{
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_selection_get_mode(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)));
	RETVAL_LONG(php_retval);
}

#line 1816 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeSelection, get_selected)
{
    GtkTreeSelection *sel;
    GtkTreeIter iter;
    GtkTreeModel *model = NULL;
    zval *php_iter = NULL, *php_model = NULL;
    int result;

    NOT_STATIC_METHOD();

    sel = GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr));
    if (gtk_tree_selection_get_mode(sel) == GTK_SELECTION_MULTIPLE) {
        php_error(E_WARNING, "%s::%s() cannot be used because the selection mode is Gtk::SELECTION_MULTIPLE",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    result = gtk_tree_selection_get_selected(sel, &model, &iter);
    phpg_gobject_new(&php_model, (GObject *)model TSRMLS_CC);
    if (result) {
        phpg_gboxed_new(&php_iter, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
        php_gtk_build_value(&return_value, "(NN)", php_model, php_iter);
    } else {
        php_gtk_build_value(&return_value, "(Nn)", php_model);
    }
}

#line 15497 "ext/gtk+/gen_gtk.c"


#line 1848 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeSelection, get_selected_rows)
{
    GtkTreeModel *model = NULL;
    GList *selected, *tmp;
    zval *php_selected = NULL, *php_model = NULL;

    NOT_STATIC_METHOD();
    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
        return;

    selected = gtk_tree_selection_get_selected_rows(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), &model);
    phpg_gobject_new(&php_model, (GObject *)model TSRMLS_CC);
    if (selected) {
        MAKE_STD_ZVAL(php_selected);
        array_init(php_selected);
        for (tmp = selected; tmp != NULL; tmp = tmp->next) {
            GtkTreePath *path = tmp->data;
            zval *item = NULL;

            phpg_tree_path_to_zval(path, &item TSRMLS_CC);
            add_next_index_zval(php_selected, item);
            gtk_tree_path_free(path);
        }
        php_gtk_build_value(&return_value, "(NN)", php_model, php_selected);
        g_list_free(selected);
    } else {
        php_gtk_build_value(&return_value, "(Nn)", php_model);
    }
}

#line 15531 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeSelection, get_tree_view)
{
	GtkTreeView* php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_selection_get_tree_view(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)));
    phpg_gobject_new(&return_value, (GObject *)php_retval TSRMLS_CC);
}


static PHP_METHOD(GtkTreeSelection, iter_is_selected)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_selection_iter_is_selected(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeSelection, path_is_selected)
{
	GtkTreePath *path;
	zval *php_path;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_selection_path_is_selected(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), path);

    if (path)
        gtk_tree_path_free(path);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeSelection, select_all)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_selection_select_all(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkTreeSelection, select_iter)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_selection_select_iter(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), iter);

}


static PHP_METHOD(GtkTreeSelection, select_path)
{
	GtkTreePath *path;
	zval *php_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_selection_select_path(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), path);

    if (path)
        gtk_tree_path_free(path);

}


static PHP_METHOD(GtkTreeSelection, select_range)
{
	GtkTreePath *start_path, *end_path;
	zval *php_start_path, *php_end_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VV", &php_start_path, &php_end_path))
		return;

    if (phpg_tree_path_from_zval(php_start_path, &start_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects start_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_tree_path_from_zval(php_end_path, &end_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects end_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_selection_select_range(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), start_path, end_path);

    if (start_path)
        gtk_tree_path_free(start_path);

    if (end_path)
        gtk_tree_path_free(end_path);

}

#line 1887 "ext/gtk+/gtktreeview.overrides"
static void phpg_tree_selection_foreach_func_marshal (GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_model = NULL, *php_path = NULL, *php_iter = NULL;

    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return;
    }

    phpg_gobject_new(&php_model,       (GObject*)model       TSRMLS_CC);
    phpg_tree_path_to_zval(path, &php_path TSRMLS_CC);
    phpg_gboxed_new(&php_iter, GTK_TYPE_TREE_ITER, iter, TRUE, TRUE TSRMLS_CC);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 3, &n_args);
    args[0] = &php_model;
    args[1] = &php_path;
    args[2] = &php_iter;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_model);
    zval_ptr_dtor(&php_path);
    zval_ptr_dtor(&php_iter);

    if (retval) {
        zval_ptr_dtor(&retval);
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);
}

static PHP_METHOD(GtkTreeSelection, selected_foreach)
{
    zval *php_callback, *extra;
    phpg_cb_data_t *cb_data;
    GtkTreeSelectionForeachFunc callback;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &php_callback))
        return;

    zval_add_ref(&php_callback);
    cb_data  = phpg_cb_data_new(php_callback, extra TSRMLS_CC);
    callback = (GtkTreeSelectionForeachFunc)phpg_tree_selection_foreach_func_marshal;

    gtk_tree_selection_selected_foreach(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), callback, cb_data);
    phpg_cb_data_destroy(cb_data);
}

#line 15748 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeSelection, set_mode)
{
	GtkSelectionMode type;
	zval *php_type = NULL;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_type))
		return;

	if (php_type && phpg_gvalue_get_enum(GTK_TYPE_SELECTION_MODE, php_type, (gint *)&type) == FAILURE) {
		return;
	}

    gtk_tree_selection_set_mode(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), type);

}

#line 1957 "ext/gtk+/gtktreeview.overrides"
static gboolean phpg_tree_selection_func_marshal(GtkTreeSelection *selection,
                                                 GtkTreeModel *model,
                                                 GtkTreePath *path,
                                                 gboolean path_currently_selected,
                                                 gpointer data)
{
    phpg_cb_data_t *cbd = (phpg_cb_data_t *) data;
    zval *retval = NULL;
    zval ***args = NULL;
    int n_args = 0;
    char *callback_name;
    zval *php_selection = NULL, *php_model = NULL, *php_path = NULL, *php_path_currently_selected;
    gboolean allow_toggle = TRUE;
    TSRMLS_FETCH();

    if (!zend_is_callable(cbd->callback, 0, &callback_name)) {
        php_error(E_WARNING, "Unable to invoke callback '%s' specified in %s on line %ld", callback_name, cbd->src_filename, cbd->src_lineno);
        efree(callback_name);
        return 0;
    }

    phpg_gobject_new(&php_selection,   (GObject*)selection   TSRMLS_CC);
    phpg_gobject_new(&php_model,       (GObject*)model       TSRMLS_CC);
    phpg_tree_path_to_zval(path,       &php_path             TSRMLS_CC);
    MAKE_STD_ZVAL(php_path_currently_selected);
    ZVAL_BOOL(php_path_currently_selected, path_currently_selected);

    args = php_gtk_hash_as_array_offset(cbd->user_args, 4, &n_args);
    args[0] = &php_selection;
    args[1] = &php_model;
    args[2] = &php_path;
    args[3] = &php_path_currently_selected;

    call_user_function_ex(EG(function_table), NULL, cbd->callback, &retval, n_args, args, 0, NULL TSRMLS_CC);

    zval_ptr_dtor(&php_selection);
    zval_ptr_dtor(&php_model);
    zval_ptr_dtor(&php_path);
    zval_ptr_dtor(&php_path_currently_selected);

    if (retval) {
        allow_toggle = zend_is_true(retval);
        zval_ptr_dtor(&retval);
    } else {
        allow_toggle = TRUE;
    }

    phpg_handle_marshaller_exception(TSRMLS_C);

    efree(callback_name);
    efree(args);

    return allow_toggle;
}

static PHP_METHOD(GtkTreeSelection, set_select_function)
{
    zval *php_callback, *extra;
    phpg_cb_data_t *cb_data;
    GtkTreeSelectionFunc callback;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_varargs(ZEND_NUM_ARGS(), 1, &extra, "V", &php_callback))
        return;

    if (php_callback) {
        if (Z_TYPE_P(php_callback) == IS_NULL) {
            cb_data  = NULL;
            callback = NULL;
        } else {
            zval_add_ref(&php_callback);
            cb_data  = phpg_cb_data_new(php_callback, extra TSRMLS_CC);
            callback = (GtkTreeSelectionFunc)phpg_tree_selection_func_marshal;
        }
    }

    gtk_tree_selection_set_select_function(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)),
                                                           callback,
                                                           cb_data, phpg_cb_data_destroy);
}

#line 15853 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeSelection, unselect_all)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_selection_unselect_all(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)));

}


static PHP_METHOD(GtkTreeSelection, unselect_iter)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_selection_unselect_iter(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), iter);

}


static PHP_METHOD(GtkTreeSelection, unselect_path)
{
	GtkTreePath *path;
	zval *php_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "V", &php_path))
		return;

    if (phpg_tree_path_from_zval(php_path, &path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_selection_unselect_path(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), path);

    if (path)
        gtk_tree_path_free(path);

}


static PHP_METHOD(GtkTreeSelection, unselect_range)
{
	GtkTreePath *start_path, *end_path;
	zval *php_start_path, *php_end_path;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "VV", &php_start_path, &php_end_path))
		return;

    if (phpg_tree_path_from_zval(php_start_path, &start_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects start_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_tree_path_from_zval(php_end_path, &end_path TSRMLS_CC) == FAILURE) {
        php_error(E_WARNING, "%s::%s() expects end_path to be a valid tree path specification", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_selection_unselect_range(GTK_TREE_SELECTION(PHPG_GOBJECT(this_ptr)), start_path, end_path);

    if (start_path)
        gtk_tree_path_free(start_path);

    if (end_path)
        gtk_tree_path_free(end_path);

}


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_iter_is_selected, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_path_is_selected, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_select_iter, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_select_path, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_select_range, 0)
    ZEND_ARG_INFO(0, start_path)
    ZEND_ARG_INFO(0, end_path)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_selected_foreach, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_set_mode, 0)
    ZEND_ARG_INFO(0, type)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_set_select_function, 0)
    ZEND_ARG_INFO(0, callback)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_unselect_iter, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_unselect_path, 0)
    ZEND_ARG_INFO(0, path)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreeselection_unselect_range, 0)
    ZEND_ARG_INFO(0, start_path)
    ZEND_ARG_INFO(0, end_path)
ZEND_END_ARG_INFO();

static function_entry gtktreeselection_methods[] = {
	PHP_ME(GtkTreeSelection, count_selected_rows,  NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, get_mode,             NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, get_selected,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, get_selected_rows,    NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, get_tree_view,        NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, iter_is_selected,     arginfo_gtk_gtktreeselection_iter_is_selected, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, path_is_selected,     arginfo_gtk_gtktreeselection_path_is_selected, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, select_all,           NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, select_iter,          arginfo_gtk_gtktreeselection_select_iter, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, select_path,          arginfo_gtk_gtktreeselection_select_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, select_range,         arginfo_gtk_gtktreeselection_select_range, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, selected_foreach,     arginfo_gtk_gtktreeselection_selected_foreach, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, set_mode,             arginfo_gtk_gtktreeselection_set_mode, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, set_select_function,  arginfo_gtk_gtktreeselection_set_select_function, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, unselect_all,         NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, unselect_iter,        arginfo_gtk_gtktreeselection_unselect_iter, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, unselect_path,        arginfo_gtk_gtktreeselection_unselect_path, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeSelection, unselect_range,       arginfo_gtk_gtktreeselection_unselect_range, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};
#line 765 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, __construct)
{
    zval ***args;
    GType *column_types;
    GObject *wrapped_obj;
    int i, argc = ZEND_NUM_ARGS();

    if (argc > 0) {
        args = php_gtk_func_args(argc);
        column_types = emalloc(argc * sizeof(GType));

        for (i = 0; i < argc; i++) {
            column_types[i] = phpg_gtype_from_zval(*args[i]);
            if (column_types[i] == 0) {
                efree(column_types);
                PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeStore);
            }
        }

        wrapped_obj = g_object_newv(phpg_gtype_from_zval(this_ptr), 0, NULL);
        gtk_tree_store_set_column_types(GTK_TREE_STORE(wrapped_obj), argc, column_types);

        efree(column_types);
        efree(args);
    } else {
        wrapped_obj = g_object_new(phpg_gtype_from_zval(this_ptr), NULL);
    }

    if (!wrapped_obj) {
        PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeStore);
    }

    phpg_gobject_set_wrapper(this_ptr, wrapped_obj TSRMLS_CC);
}

#line 16061 "ext/gtk+/gen_gtk.c"


#line 1103 "ext/gtk+/gtktreeview.overrides"

static zval* phpg_gtktreestore_read_dimension_handler(zval *object, zval *offset, int type TSRMLS_DC)
{
    return phpg_gtktreemodel_read_dimension_handler(object, offset, type TSRMLS_CC);
}

#line 16071 "ext/gtk+/gen_gtk.c"


#line 1111 "ext/gtk+/gtktreeview.overrides"

static void phpg_gtktreestore_write_dimension_handler(zval *object, zval *offset, zval *value TSRMLS_DC)
{
    phpg_gtktreemodel_write_dimension_handler(object, offset, value TSRMLS_CC);
}

#line 16081 "ext/gtk+/gen_gtk.c"


#line 1095 "ext/gtk+/gtktreeview.overrides"

static int phpg_gtktreestore_has_dimension_handler(zval *object, zval *offset, int check_empty TSRMLS_DC)
{
    return phpg_gtktreemodel_has_dimension_handler(object, offset, check_empty TSRMLS_CC);
}

#line 16091 "ext/gtk+/gen_gtk.c"


#line 1119 "ext/gtk+/gtktreeview.overrides"

static void phpg_gtktreestore_unset_dimension_handler(zval *object, zval *offset TSRMLS_DC)
{
    phpg_gtktreemodel_write_dimension_handler(object, offset, NULL TSRMLS_CC);
}

#line 16101 "ext/gtk+/gen_gtk.c"


#line 1086 "ext/gtk+/gtktreeview.overrides"

static int phpg_gtktreestore_count_elements_handler(zval *object, long *count TSRMLS_DC)
{
    return phpg_gtktreemodel_count_elements_handler(object, count TSRMLS_CC);
}


#line 16112 "ext/gtk+/gen_gtk.c"



static zend_object_handlers gtktreestore_object_handlers;

static zend_object_value phpg_create_gtktreestore(zend_class_entry *ce TSRMLS_DC)
{
    zend_object_value zov;

    zov = phpg_create_gobject(ce TSRMLS_CC);
    zov.handlers = &gtktreestore_object_handlers;

    return zov;
}
#line 849 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, append)
{
    GtkTreeIter iter;
    zval *items = NULL;
    zval *php_parent_iter = NULL;
    GtkTreeIter *parent_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|Na", &php_parent_iter, gtktreeiter_ce, &items))
        return;

    if (php_parent_iter && IS_OBJECT == Z_TYPE_P(php_parent_iter)) {
        parent_iter = (GtkTreeIter *) PHPG_GBOXED(php_parent_iter);
    }

    gtk_tree_store_append(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), &iter, parent_iter);

    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items TSRMLS_CC) == FAILURE)
        return;

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}


#line 16153 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeStore, clear)
{

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    gtk_tree_store_clear(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)));

}

#line 885 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, insert)
{
    GtkTreeIter iter;
    gint position;
    zval *items = NULL;
    zval *php_parent_iter = NULL;
    GtkTreeIter *parent_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "i|Na", &position, &php_parent_iter, gtktreeiter_ce, &items))
        return;

    if (php_parent_iter && IS_OBJECT == Z_TYPE_P(php_parent_iter)) {
        parent_iter = (GtkTreeIter *) PHPG_GBOXED(php_parent_iter);
    }

    gtk_tree_store_insert(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), &iter, parent_iter, position);

    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items TSRMLS_CC) == FAILURE)
        return;

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}


#line 16196 "ext/gtk+/gen_gtk.c"


#line 961 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, insert_after)
{
    GtkTreeIter iter;
    zval *items = NULL;
    zval *php_parent_iter = NULL, *php_sibling_iter = NULL;
    GtkTreeIter *parent_iter = NULL, *sibling_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|NNa", &php_parent_iter, gtktreeiter_ce, &php_sibling_iter, gtktreeiter_ce, &items))
        return;

    if (php_parent_iter && IS_OBJECT == Z_TYPE_P(php_parent_iter)) {
        parent_iter = (GtkTreeIter *) PHPG_GBOXED(php_parent_iter);
    }
    if (php_sibling_iter && IS_OBJECT == Z_TYPE_P(php_sibling_iter)) {
        sibling_iter = (GtkTreeIter *) PHPG_GBOXED(php_sibling_iter);
    }

    gtk_tree_store_insert_after(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), &iter, parent_iter, sibling_iter);

    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items TSRMLS_CC) == FAILURE)
        return;

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}


#line 16228 "ext/gtk+/gen_gtk.c"


#line 922 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, insert_before)
{
    GtkTreeIter iter;
    zval *items = NULL;
    zval *php_parent_iter = NULL, *php_sibling_iter = NULL;
    GtkTreeIter *parent_iter = NULL, *sibling_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|NNa", &php_parent_iter, gtktreeiter_ce, &php_sibling_iter, gtktreeiter_ce, &items))
        return;

    if (php_parent_iter && IS_OBJECT == Z_TYPE_P(php_parent_iter)) {
        parent_iter = (GtkTreeIter *) PHPG_GBOXED(php_parent_iter);
    }
    if (php_sibling_iter && IS_OBJECT == Z_TYPE_P(php_sibling_iter)) {
        sibling_iter = (GtkTreeIter *) PHPG_GBOXED(php_sibling_iter);
    }

    gtk_tree_store_insert_before(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), &iter, parent_iter, sibling_iter);

    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items TSRMLS_CC) == FAILURE)
        return;

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}


#line 16260 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeStore, is_ancestor)
{
	GtkTreeIter *iter = NULL, *descendant = NULL;
	zval *php_iter, *php_descendant;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_iter, gboxed_ce, &php_descendant, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_descendant, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        descendant = (GtkTreeIter *) PHPG_GBOXED(php_descendant);
    } else {
        php_error(E_WARNING, "%s::%s() expects descendant argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_store_is_ancestor(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), iter, descendant);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeStore, iter_depth)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	long php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_store_iter_depth(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_LONG(php_retval);
}


static PHP_METHOD(GtkTreeStore, iter_is_valid)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_store_iter_is_valid(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeStore, move_after)
{
	GtkTreeIter *iter = NULL, *position = NULL;
	zval *php_iter, *php_position;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ON", &php_iter, gboxed_ce, &php_position, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (Z_TYPE_P(php_position) != IS_NULL) {
        if (phpg_gboxed_check(php_position, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
            position = (GtkTreeIter *) PHPG_GBOXED(php_position);
        } else {
            php_error(E_WARNING, "%s::%s() expects position argument to be a valid GtkTreeIter object or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    gtk_tree_store_move_after(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), iter, position);

}


static PHP_METHOD(GtkTreeStore, move_before)
{
	GtkTreeIter *iter = NULL, *position = NULL;
	zval *php_iter, *php_position;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "ON", &php_iter, gboxed_ce, &php_position, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (Z_TYPE_P(php_position) != IS_NULL) {
        if (phpg_gboxed_check(php_position, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
            position = (GtkTreeIter *) PHPG_GBOXED(php_position);
        } else {
            php_error(E_WARNING, "%s::%s() expects position argument to be a valid GtkTreeIter object or null", get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            return;
        }
    }

    gtk_tree_store_move_before(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), iter, position);

}

#line 999 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, prepend)
{
    GtkTreeIter iter;
    zval *items = NULL;
    zval *php_parent_iter = NULL;
    GtkTreeIter *parent_iter = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|Na", &php_parent_iter, gtktreeiter_ce, &items))
        return;

    if (php_parent_iter && IS_OBJECT == Z_TYPE_P(php_parent_iter)) {
        parent_iter = (GtkTreeIter *) PHPG_GBOXED(php_parent_iter);
    }

    gtk_tree_store_prepend(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), &iter, parent_iter);

    if (items && phpg_model_set_row(GTK_TREE_MODEL(PHPG_GOBJECT(this_ptr)), &iter, items TSRMLS_CC) == FAILURE)
        return;

    phpg_gboxed_new(&return_value, GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE TSRMLS_CC);
}

#line 16432 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeStore, remove)
{
	GtkTreeIter *iter = NULL;
	zval *php_iter;
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &php_iter, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    php_retval = gtk_tree_store_remove(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), iter);
	RETVAL_BOOL(php_retval);
}

#line 1043 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, reorder)
{
    zval *php_parent, *php_order, **elem;
    GtkTreeStore *store;
    GtkTreeIter *parent = NULL;
    gint *order;
    int i, n_elems, n_children;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O!a/", &php_parent, gtktreeiter_ce, &php_order))
        return;

    store = GTK_TREE_STORE(PHPG_GOBJECT(this_ptr));
    n_children = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(store), parent);
    n_elems = zend_hash_num_elements(Z_ARRVAL_P(php_order));

    if (n_elems != n_children) {
        php_error_docref(NULL TSRMLS_CC, E_WARNING, "new order array size (%d) not the same as the number of children of parent iterator (%d)", n_elems, n_children);
        return;
    }

    order = safe_emalloc(n_children, sizeof(gint), 0);
    for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_order)), i = 0;
         zend_hash_get_current_data(Z_ARRVAL_P(php_order), (void **) &elem) == SUCCESS;
         zend_hash_move_forward(Z_ARRVAL_P(php_order)), i++) {

        convert_to_long(*elem);
        if (Z_LVAL_PP(elem) < 0 || Z_LVAL_PP(elem) >= n_children) {
            php_error_docref(NULL TSRMLS_CC, E_WARNING, "position index out of range 0-%d", n_children);
            efree(order);
            return;
        }
        order[i] = Z_LVAL_PP(elem);
    }

    gtk_tree_store_reorder(store, parent, order);
    efree(order);
}


#line 16501 "ext/gtk+/gen_gtk.c"


#line 1036 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, set)
{
    phpg_store_set_impl(INTERNAL_FUNCTION_PARAM_PASSTHRU, TRUE);
}

#line 16510 "ext/gtk+/gen_gtk.c"


#line 802 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeStore, set_column_types)
{
    zval *php_types, **item;
    GType *column_types;
    int i, n;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "a", &php_types)) {
        return;
    }

    n = zend_hash_num_elements(Z_ARRVAL_P(php_types));

    if (n == 0) {
        php_error(E_WARNING, "number of columns has to be > 0");
        return;
    }

    column_types = safe_emalloc(n, sizeof(GType), 0);
    for (i = 0, zend_hash_internal_pointer_reset(Z_ARRVAL_P(php_types));
         zend_hash_get_current_data(Z_ARRVAL_P(php_types), (void**)&item) == SUCCESS;
         zend_hash_move_forward(Z_ARRVAL_P(php_types)), i++) {

        column_types[i] = phpg_gtype_from_zval(*item);
        if (column_types[i] == 0) {
            efree(column_types);
            php_error(E_WARNING, "could not set column types for GtkTreeStore");
            return;
        }
    }

    gtk_tree_store_set_column_types(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), i, column_types);

    efree(column_types);
}

#line 16551 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeStore, swap)
{
	GtkTreeIter *a = NULL, *b = NULL;
	zval *php_a, *php_b;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OO", &php_a, gboxed_ce, &php_b, gboxed_ce))
		return;

    if (phpg_gboxed_check(php_a, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        a = (GtkTreeIter *) PHPG_GBOXED(php_a);
    } else {
        php_error(E_WARNING, "%s::%s() expects a argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    if (phpg_gboxed_check(php_b, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        b = (GtkTreeIter *) PHPG_GBOXED(php_b);
    } else {
        php_error(E_WARNING, "%s::%s() expects b argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_store_swap(GTK_TREE_STORE(PHPG_GOBJECT(this_ptr)), a, b);

}

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreestore_gtk_tree_store_new, 0, 0, 1)
    ZEND_ARG_INFO(0, type_col_0)
    ZEND_ARG_INFO(0, type_col_1)
    ZEND_ARG_INFO(0, ...)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreestore_append, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreestore_insert, 0, 0, 1)
    ZEND_ARG_INFO(0, position)
    ZEND_ARG_OBJ_INFO(0, parent, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreestore_insert_after, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, parent, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, sibling, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreestore_insert_before, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, parent, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, sibling, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreestore_is_ancestor, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, descendant, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreestore_iter_depth, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreestore_iter_is_valid, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreestore_move_after, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, position, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreestore_move_before, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, position, GtkTreeIter, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreestore_prepend, 0, 0, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, items)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreestore_remove, 0)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
ZEND_END_ARG_INFO();
ZEND_BEGIN_ARG_INFO_EX(arginfo_gtk_gtktreestore_set, 0, 0, 3)
    ZEND_ARG_OBJ_INFO(0, iter, GtkTreeIter, 1)
    ZEND_ARG_INFO(0, column)
    ZEND_ARG_INFO(0, value)
    ZEND_ARG_INFO(0, column)
    ZEND_ARG_INFO(0, value)
ZEND_END_ARG_INFO();


ZEND_BEGIN_ARG_INFO(arginfo_gtk_gtktreestore_swap, 0)
    ZEND_ARG_OBJ_INFO(0, a, GtkTreeIter, 1)
    ZEND_ARG_OBJ_INFO(0, b, GtkTreeIter, 1)
ZEND_END_ARG_INFO();

static function_entry gtktreestore_methods[] = {
	PHP_ME(GtkTreeStore, __construct,          arginfo_gtk_gtktreestore_gtk_tree_store_new, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, append,               arginfo_gtk_gtktreestore_append, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, clear,                NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, insert,               arginfo_gtk_gtktreestore_insert, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, insert_after,         arginfo_gtk_gtktreestore_insert_after, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, insert_before,        arginfo_gtk_gtktreestore_insert_before, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, is_ancestor,          arginfo_gtk_gtktreestore_is_ancestor, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, iter_depth,           arginfo_gtk_gtktreestore_iter_depth, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, iter_is_valid,        arginfo_gtk_gtktreestore_iter_is_valid, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, move_after,           arginfo_gtk_gtktreestore_move_after, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, move_before,          arginfo_gtk_gtktreestore_move_before, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, prepend,              arginfo_gtk_gtktreestore_prepend, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, remove,               arginfo_gtk_gtktreestore_remove, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, reorder,              NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, set,                  arginfo_gtk_gtktreestore_set, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, set_column_types,     NULL, ZEND_ACC_PUBLIC)
	PHP_ME(GtkTreeStore, swap,                 arginfo_gtk_gtktreestore_swap, ZEND_ACC_PUBLIC)

	/***   GtkTreeModel interface implementations   ***/

	PHP_MALIAS(GtkTreeModel, foreach, foreach, arginfo_gtk_gtktreemodel_foreach, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get, get, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_column_type, get_column_type, arginfo_gtk_gtktreemodel_get_column_type, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_flags, get_flags, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter, get_iter, arginfo_gtk_gtktreemodel_get_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_first, get_iter_first, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_root, get_iter_root, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_iter_from_string, get_iter_from_string, arginfo_gtk_gtktreemodel_get_iter_from_string, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_n_columns, get_n_columns, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_path, get_path, arginfo_gtk_gtktreemodel_get_path, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_string_from_iter, get_string_from_iter, arginfo_gtk_gtktreemodel_get_string_from_iter, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, get_value, get_value, arginfo_gtk_gtktreemodel_get_value, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_children, iter_children, arginfo_gtk_gtktreemodel_iter_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_has_child, iter_has_child, arginfo_gtk_gtktreemodel_iter_has_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_n_children, iter_n_children, arginfo_gtk_gtktreemodel_iter_n_children, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_next, iter_next, arginfo_gtk_gtktreemodel_iter_next, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_nth_child, iter_nth_child, arginfo_gtk_gtktreemodel_iter_nth_child, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, iter_parent, iter_parent, arginfo_gtk_gtktreemodel_iter_parent, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, ref_node, ref_node, arginfo_gtk_gtktreemodel_ref_node, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_changed, row_changed, arginfo_gtk_gtktreemodel_row_changed, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_deleted, row_deleted, arginfo_gtk_gtktreemodel_row_deleted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_has_child_toggled, row_has_child_toggled, arginfo_gtk_gtktreemodel_row_has_child_toggled, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, row_inserted, row_inserted, arginfo_gtk_gtktreemodel_row_inserted, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, rows_reordered, rows_reordered, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeModel, unref_node, unref_node, arginfo_gtk_gtktreemodel_unref_node, ZEND_ACC_PUBLIC)

	/***   GtkTreeDragSource interface implementations   ***/

	PHP_MALIAS(GtkTreeDragSource, drag_data_delete, drag_data_delete, arginfo_gtk_gtktreedragsource_drag_data_delete, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragSource, drag_data_get, drag_data_get, arginfo_gtk_gtktreedragsource_drag_data_get, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragSource, row_draggable, row_draggable, arginfo_gtk_gtktreedragsource_row_draggable, ZEND_ACC_PUBLIC)

	/***   GtkTreeDragDest interface implementations   ***/

	PHP_MALIAS(GtkTreeDragDest, drag_data_received, drag_data_received, arginfo_gtk_gtktreedragdest_drag_data_received, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeDragDest, row_drop_possible, row_drop_possible, arginfo_gtk_gtktreedragdest_row_drop_possible, ZEND_ACC_PUBLIC)

	/***   GtkTreeSortable interface implementations   ***/

	PHP_MALIAS(GtkTreeSortable, get_sort_column_id, get_sort_column_id, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, has_default_sort_func, has_default_sort_func, NULL, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_default_sort_func, set_default_sort_func, arginfo_gtk_gtktreesortable_set_default_sort_func, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_sort_column_id, set_sort_column_id, arginfo_gtk_gtktreesortable_set_sort_column_id, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, set_sort_func, set_sort_func, arginfo_gtk_gtktreesortable_set_sort_func, ZEND_ACC_PUBLIC)
	PHP_MALIAS(GtkTreeSortable, sort_column_changed, sort_column_changed, NULL, ZEND_ACC_PUBLIC)
	{ NULL, NULL, NULL }
};
#line 2905 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeViewColumn, __construct)
{
    char *title = NULL;
    zval *php_cell = NULL;
    GtkCellRenderer *cell = NULL;
    GtkTreeViewColumn *tvc = NULL;
    zval ***args = NULL;
    zend_bool free_title = FALSE;
    int i, argc = ZEND_NUM_ARGS();

    if (argc <= 2) {
        if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "|uN", &title, &free_title, &php_cell, gtkcellrenderer_ce)) {
            PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeViewColumn);
        }
    } else {
        if (!php_gtk_parse_args(2, "|uN", &title, &free_title, &php_cell, gtkcellrenderer_ce)) {
            PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeViewColumn);
        }
    }

    tvc = GTK_TREE_VIEW_COLUMN(g_object_new(phpg_gtype_from_zval(this_ptr), NULL));
    if (php_cell && Z_TYPE_P(php_cell) != IS_NULL) {
        cell = GTK_CELL_RENDERER(PHPG_GOBJECT(php_cell));
    }

    if (title)
        gtk_tree_view_column_set_title(tvc, title);
    if (cell)
        gtk_tree_view_column_pack_start(tvc, cell, TRUE);

    if (argc > 2) {
        if (argc % 2) {
            php_error(E_WARNING, "%s::%s() requires arguments 3-n to be attribute/column pairs",
                      get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
            PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeViewColumn);
        }

        args = php_gtk_func_args(argc);
        for (i = 2; i < argc; i += 2) {
            zval *attr = *args[i];
            zval *column = *args[i+1];

            if (Z_TYPE_P(attr) != IS_STRING) {
                php_error(E_WARNING, "%s::%s() requires argument %d to be a string, %s given",
                          get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                          i, zend_zval_type_name(attr));
                efree(args);
                PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeViewColumn);
            }
            if (Z_TYPE_P(column) != IS_LONG) {
                php_error(E_WARNING, "%s::%s() requires argument %d to be an integer, %s given",
                          get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C),
                          i, zend_zval_type_name(column));
                efree(args);
                PHPG_THROW_CONSTRUCT_EXCEPTION(GtkTreeViewColumn);
            }

            gtk_tree_view_column_add_attribute(tvc, cell, Z_STRVAL_P(attr), Z_LVAL_P(column));
        }
        efree(args);
    }

    phpg_gobject_set_wrapper(this_ptr, (GObject *)tvc TSRMLS_CC);
    if (free_title) g_free(title);
}



#line 16811 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeViewColumn, add_attribute)
{
	zval *cell_renderer;
	char *attribute;
	zend_bool free_attribute = FALSE;
	long column;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "Oui", &cell_renderer, gtkcellrenderer_ce, &attribute, &free_attribute, &column))
		return;

    gtk_tree_view_column_add_attribute(GTK_TREE_VIEW_COLUMN(PHPG_GOBJECT(this_ptr)), GTK_CELL_RENDERER(PHPG_GOBJECT(cell_renderer)), attribute, (gint)column);
	if (free_attribute) g_free(attribute);

}

#line 2982 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeViewColumn, cell_get_position)
{
    gint start_pos, width;
    zval *cellrenderer;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "O", &cellrenderer, gtkcellrenderer_ce))
        return;

    if (gtk_tree_view_column_cell_get_position(GTK_TREE_VIEW_COLUMN(PHPG_GOBJECT(this_ptr)), GTK_CELL_RENDERER(PHPG_GOBJECT(cellrenderer)), &start_pos, &width)) {
        php_gtk_build_value(&return_value, "(ii)", start_pos, width);
    } else {
        RETURN_FALSE;
    }
}


#line 16851 "ext/gtk+/gen_gtk.c"


#line 3002 "ext/gtk+/gtktreeview.overrides"
static PHP_METHOD(GtkTreeViewColumn, cell_get_size)
{
    gint x_offset, y_offset, width, height;
    GdkRectangle cell_area;
    zval *php_cell_area = NULL;

    NOT_STATIC_METHOD();

    if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "")) {
        return;
    }

    gtk_tree_view_column_cell_get_size(GTK_TREE_VIEW_COLUMN(PHPG_GOBJECT(this_ptr)), &cell_area, &x_offset, &y_offset, &width, &height);

    phpg_gboxed_new(&php_cell_area, GDK_TYPE_RECTANGLE, &cell_area, TRUE, TRUE TSRMLS_CC);

    php_gtk_build_value(&return_value, "(Niiii)", php_cell_area, x_offset, y_offset, width, height);
}


#line 16875 "ext/gtk+/gen_gtk.c"



static PHP_METHOD(GtkTreeViewColumn, cell_is_visible)
{
	gboolean php_retval;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), ""))
		return;

    php_retval = gtk_tree_view_column_cell_is_visible(GTK_TREE_VIEW_COLUMN(PHPG_GOBJECT(this_ptr)));
	RETVAL_BOOL(php_retval);
}


static PHP_METHOD(GtkTreeViewColumn, cell_set_cell_data)
{
	zval *tree_model, *php_iter;
	GtkTreeIter *iter = NULL;
	zend_bool is_expander, is_expanded;

    NOT_STATIC_METHOD();

	if (!php_gtk_parse_args(ZEND_NUM_ARGS(), "OObb", &tree_model, gtktreemodel_ce, &php_iter, gboxed_ce, &is_expander, &is_expanded))
		return;

    if (phpg_gboxed_check(php_iter, GTK_TYPE_TREE_ITER, FALSE TSRMLS_CC)) {
        iter = (GtkTreeIter *) PHPG_GBOXED(php_iter);
    } else {
        php_error(E_WARNING, "%s::%s() expects iter argument to be a valid GtkTreeIter object",
                  get_active_class_name(NULL TSRMLS_CC), get_active_function_name(TSRMLS_C));
        return;
    }

    gtk_tree_view_column_cell_set_cell_data(GTK_TREE_VIEW_COLUMN(PHPG_GOBJECT(this_ptr)), GTK_TREE_MODEL(PHPG_GOBJECT(tree_model)), iter, (gboolean)is_expander, (gboolean)is_expanded);

}


static PHP_METHOD(GtkTreeViewColumn, clear_attributes)
{
	zval *cell