static DBusMessage * impl_getSelectedColumns (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkTable *table = (AtkTable *) user_data; gint *selected_columns = NULL; gint count; DBusMessage *reply; g_return_val_if_fail (ATK_IS_TABLE (user_data), droute_not_yet_handled_error (message)); count = atk_table_get_selected_columns (table, &selected_columns); if (!selected_columns) count = 0; reply = dbus_message_new_method_return (message); if (reply) { /* tbd - figure out if this is safe for a 0-length array */ dbus_message_append_args (reply, DBUS_TYPE_ARRAY, DBUS_TYPE_INT32, &selected_columns, count, DBUS_TYPE_INVALID); } if (selected_columns) g_free (selected_columns); return reply; }
static dbus_bool_t impl_get_NSelectedColumns (DBusMessageIter * iter, void *user_data) { AtkTable *table = (AtkTable *) user_data; gint *selected_columns = NULL; int count; g_return_val_if_fail (ATK_IS_TABLE (user_data), FALSE); count = atk_table_get_selected_columns (table, &selected_columns); if (selected_columns) g_free (selected_columns); return droute_return_v_int32 (iter, count); }
static VALUE rg_selected_columns(VALUE self) { gint ret; gint* selected; VALUE result = Qnil; ret = atk_table_get_selected_columns(_SELF(self), &selected); if (ret > 0){ gint i; result = rb_ary_new2(ret); for (i = 0; i < ret; i++){ rb_ary_push(result, INT2NUM(selected[i])); } } return result; }