/*******************************************************************************
 * Copyright (c) 2000, 2021 IBM Corporation and others.
 *
 * This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License 2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/legal/epl-2.0/
 *
 * SPDX-License-Identifier: EPL-2.0
 *
 * Contributors:
 *    IBM Corporation - initial API and implementation
 *******************************************************************************/

/* Note: This file was auto-generated by org.eclipse.swt.tools.internal.JNIGenerator */
/* DO NOT EDIT - your changes will be lost. */

#ifdef NATIVE_STATS
extern int GTK4_nativeFunctionCount;
extern int GTK4_nativeFunctionCallCount[];
extern char* GTK4_nativeFunctionNames[];
#define GTK4_NATIVE_ENTER(env, that, func) GTK4_nativeFunctionCallCount[func]++;
#define GTK4_NATIVE_EXIT(env, that, func) 
#else
#ifndef GTK4_NATIVE_ENTER
#define GTK4_NATIVE_ENTER(env, that, func) 
#endif
#ifndef GTK4_NATIVE_EXIT
#define GTK4_NATIVE_EXIT(env, that, func) 
#endif
#endif

typedef enum {
	gdk_1content_1formats_1builder_1add_1mime_1type_FUNC,
	gdk_1content_1formats_1builder_1free_1to_1formats_FUNC,
	gdk_1content_1formats_1builder_1new_FUNC,
	gdk_1toplevel_1focus_FUNC,
	gdk_1toplevel_1get_1state_FUNC,
	gdk_1toplevel_1lower_FUNC,
	gdk_1toplevel_1set_1icon_1list_FUNC,
	gtk_1box_1append_FUNC,
	gtk_1box_1insert_1child_1after_FUNC,
	gtk_1box_1prepend_FUNC,
	gtk_1button_1new_1from_1icon_1name_FUNC,
	gtk_1button_1set_1child_FUNC,
	gtk_1calendar_1get_1date_FUNC,
	gtk_1calendar_1select_1day_FUNC,
	gtk_1calendar_1set_1show_1day_1names_FUNC,
	gtk_1calendar_1set_1show_1heading_FUNC,
	gtk_1calendar_1set_1show_1week_1numbers_FUNC,
	gtk_1check_1button_1get_1active_FUNC,
	gtk_1check_1button_1set_1active_FUNC,
	gtk_1check_1button_1set_1group_FUNC,
	gtk_1check_1button_1set_1inconsistent_FUNC,
	gtk_1check_1button_1set_1use_1underline_FUNC,
	gtk_1combo_1box_1get_1child_FUNC,
	gtk_1css_1provider_1load_1from_1data_FUNC,
	gtk_1drag_1source_1new_FUNC,
	gtk_1drag_1source_1set_1actions_FUNC,
	gtk_1drag_1source_1set_1icon_FUNC,
	gtk_1drop_1target_1async_1new_FUNC,
	gtk_1drop_1target_1async_1set_1formats_FUNC,
	gtk_1entry_1get_1buffer_FUNC,
	gtk_1entry_1set_1buffer_FUNC,
	gtk_1event_1controller_1focus_1new_FUNC,
	gtk_1event_1controller_1get_1current_1event_FUNC,
	gtk_1event_1controller_1key_1new_FUNC,
	gtk_1event_1controller_1motion_1new_FUNC,
	gtk_1event_1controller_1scroll_1new_FUNC,
	gtk_1expander_1set_1child_FUNC,
	gtk_1file_1chooser_1get_1file_FUNC,
	gtk_1file_1chooser_1get_1files_FUNC,
	gtk_1file_1chooser_1set_1current_1folder_FUNC,
	gtk_1file_1chooser_1set_1file_FUNC,
	gtk_1frame_1set_1child_FUNC,
	gtk_1gesture_1click_1new_FUNC,
	gtk_1hsv_1to_1rgb_FUNC,
	gtk_1icon_1paintable_1get_1file_FUNC,
	gtk_1icon_1theme_1get_1for_1display_FUNC,
	gtk_1icon_1theme_1lookup_1icon_FUNC,
	gtk_1im_1context_1filter_1keypress_FUNC,
	gtk_1image_1clear_FUNC,
	gtk_1image_1new_1from_1icon_1name_FUNC,
	gtk_1image_1set_1from_1paintable_FUNC,
	gtk_1init_1check_FUNC,
	gtk_1keyval_1trigger_1new_FUNC,
	gtk_1named_1action_1new_FUNC,
	gtk_1native_1get_1surface_FUNC,
	gtk_1picture_1new_FUNC,
	gtk_1picture_1set_1can_1shrink_FUNC,
	gtk_1picture_1set_1paintable_FUNC,
	gtk_1popover_1menu_1bar_1new_1from_1model_FUNC,
	gtk_1popover_1menu_1new_1from_1model_1full_FUNC,
	gtk_1popover_1menu_1set_1menu_1model_FUNC,
	gtk_1popover_1set_1has_1arrow_FUNC,
	gtk_1rgb_1to_1hsv_FUNC,
	gtk_1scrollbar_1get_1adjustment_FUNC,
	gtk_1scrolled_1window_1get_1has_1frame_FUNC,
	gtk_1scrolled_1window_1new_FUNC,
	gtk_1scrolled_1window_1set_1child_FUNC,
	gtk_1scrolled_1window_1set_1has_1frame_FUNC,
	gtk_1shortcut_1controller_1add_1shortcut_FUNC,
	gtk_1shortcut_1controller_1new_FUNC,
	gtk_1shortcut_1controller_1remove_1shortcut_FUNC,
	gtk_1shortcut_1controller_1set_1scope_FUNC,
	gtk_1shortcut_1new_FUNC,
	gtk_1snapshot_1append_1cairo_FUNC,
	gtk_1text_1get_1buffer_FUNC,
	gtk_1widget_1action_1set_1enabled_FUNC,
	gtk_1widget_1activate_1action_FUNC,
	gtk_1widget_1add_1controller_FUNC,
	gtk_1widget_1class_1add_1binding_1signal_FUNC,
	gtk_1widget_1get_1first_1child_FUNC,
	gtk_1widget_1get_1last_1child_FUNC,
	gtk_1widget_1get_1native_FUNC,
	gtk_1widget_1get_1next_1sibling_FUNC,
	gtk_1widget_1get_1prev_1sibling_FUNC,
	gtk_1widget_1get_1receives_1default_FUNC,
	gtk_1widget_1get_1root_FUNC,
	gtk_1widget_1measure_FUNC,
	gtk_1widget_1set_1cursor_FUNC,
	gtk_1widget_1snapshot_1child_FUNC,
	gtk_1widget_1translate_1coordinates_FUNC,
	gtk_1window_1destroy_FUNC,
	gtk_1window_1get_1icon_1name_FUNC,
	gtk_1window_1minimize_FUNC,
	gtk_1window_1new_FUNC,
	gtk_1window_1set_1child_FUNC,
	gtk_1window_1set_1default_1widget_FUNC,
	gtk_1window_1set_1icon_1name_FUNC,
	gtk_1window_1unminimize_FUNC,
} GTK4_FUNCS;
