/*******************************************************************************
 * 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 GTK3_nativeFunctionCount;
extern int GTK3_nativeFunctionCallCount[];
extern char* GTK3_nativeFunctionNames[];
#define GTK3_NATIVE_ENTER(env, that, func) GTK3_nativeFunctionCallCount[func]++;
#define GTK3_NATIVE_EXIT(env, that, func) 
#else
#ifndef GTK3_NATIVE_ENTER
#define GTK3_NATIVE_ENTER(env, that, func) 
#endif
#ifndef GTK3_NATIVE_EXIT
#define GTK3_NATIVE_EXIT(env, that, func) 
#endif
#endif

typedef enum {
	GTK_1IS_1MENU_1ITEM_FUNC,
	GTK_1TYPE_1MENU_FUNC,
	gtk_1accel_1label_1new_FUNC,
	gtk_1accel_1label_1set_1accel_FUNC,
	gtk_1accel_1label_1set_1accel_1widget_FUNC,
	gtk_1bin_1get_1child_FUNC,
	gtk_1box_1pack_1end_FUNC,
	gtk_1box_1reorder_1child_FUNC,
	gtk_1box_1set_1child_1packing_FUNC,
	gtk_1button_1set_1image_FUNC,
	gtk_1calendar_1get_1date_FUNC,
	gtk_1calendar_1select_1day_FUNC,
	gtk_1calendar_1select_1month_FUNC,
	gtk_1calendar_1set_1display_1options_FUNC,
	gtk_1check_1menu_1item_1get_1active_FUNC,
	gtk_1check_1menu_1item_1new_FUNC,
	gtk_1check_1menu_1item_1set_1active_FUNC,
	gtk_1clipboard_1clear_FUNC,
	gtk_1clipboard_1get_FUNC,
	gtk_1clipboard_1set_1can_1store_FUNC,
	gtk_1clipboard_1set_1with_1owner_FUNC,
	gtk_1clipboard_1store_FUNC,
	gtk_1clipboard_1wait_1for_1contents_FUNC,
	gtk_1container_1add_FUNC,
	gtk_1container_1forall_FUNC,
	gtk_1container_1get_1border_1width_FUNC,
	gtk_1container_1get_1children_FUNC,
	gtk_1container_1propagate_1draw_FUNC,
	gtk_1container_1remove_FUNC,
	gtk_1container_1set_1border_1width_FUNC,
	gtk_1dialog_1run_FUNC,
	gtk_1drag_1begin_1with_1coordinates_FUNC,
	gtk_1drag_1check_1threshold_FUNC,
	gtk_1drag_1dest_1set_FUNC,
	gtk_1drag_1dest_1unset_FUNC,
	gtk_1drag_1finish_FUNC,
	gtk_1drag_1get_1data_FUNC,
	gtk_1drag_1set_1icon_1surface_FUNC,
	gtk_1editable_1copy_1clipboard_FUNC,
	gtk_1editable_1cut_1clipboard_FUNC,
	gtk_1editable_1paste_1clipboard_FUNC,
	gtk_1entry_1get_1layout_FUNC,
	gtk_1entry_1get_1layout_1offsets_FUNC,
	gtk_1entry_1get_1text_FUNC,
	gtk_1entry_1set_1text_FUNC,
	gtk_1entry_1set_1width_1chars_FUNC,
	gtk_1entry_1text_1index_1to_1layout_1index_FUNC,
	gtk_1event_1controller_1handle_1event_FUNC,
	gtk_1events_1pending_FUNC,
	gtk_1file_1chooser_1get_1filename_FUNC,
	gtk_1file_1chooser_1get_1filenames_FUNC,
	gtk_1file_1chooser_1get_1uri_FUNC,
	gtk_1file_1chooser_1get_1uris_FUNC,
	gtk_1file_1chooser_1set_1current_1folder_FUNC,
	gtk_1file_1chooser_1set_1current_1folder_1uri_FUNC,
	gtk_1file_1chooser_1set_1do_1overwrite_1confirmation_FUNC,
	gtk_1file_1chooser_1set_1extra_1widget_FUNC,
	gtk_1file_1chooser_1set_1filename_FUNC,
	gtk_1file_1chooser_1set_1local_1only_FUNC,
	gtk_1file_1chooser_1set_1uri_FUNC,
	gtk_1frame_1set_1shadow_1type_FUNC,
	gtk_1get_1current_1event_FUNC,
	gtk_1get_1current_1event_1state_FUNC,
	gtk_1get_1event_1widget_FUNC,
	gtk_1grab_1add_FUNC,
	gtk_1grab_1get_1current_FUNC,
	gtk_1grab_1remove_FUNC,
	gtk_1hsv_1to_1rgb_FUNC,
	gtk_1icon_1info_1load_1icon_FUNC,
	gtk_1icon_1theme_1get_1default_FUNC,
	gtk_1icon_1theme_1load_1icon_FUNC,
	gtk_1icon_1theme_1lookup_1by_1gicon_FUNC,
	gtk_1im_1context_1filter_1keypress_FUNC,
	gtk_1init_1check_FUNC,
	gtk_1main_1do_1event_FUNC,
	gtk_1main_1iteration_1do_FUNC,
	gtk_1menu_1bar_1new_FUNC,
	gtk_1menu_1item_1get_1submenu_FUNC,
	gtk_1menu_1item_1new_FUNC,
	gtk_1menu_1item_1set_1submenu_FUNC,
	gtk_1menu_1new_FUNC,
	gtk_1menu_1popdown_FUNC,
	gtk_1menu_1shell_1deactivate_FUNC,
	gtk_1menu_1shell_1insert_FUNC,
	gtk_1menu_1shell_1set_1take_1focus_FUNC,
	gtk_1menu_1tool_1button_1new_FUNC,
	gtk_1native_1dialog_1run_FUNC,
	gtk_1radio_1button_1get_1group_FUNC,
	gtk_1radio_1button_1new_FUNC,
	gtk_1radio_1menu_1item_1get_1group_FUNC,
	gtk_1radio_1menu_1item_1new_FUNC,
	gtk_1rgb_1to_1hsv_FUNC,
	gtk_1scrolled_1window_1get_1shadow_1type_FUNC,
	gtk_1scrolled_1window_1new_FUNC,
	gtk_1scrolled_1window_1set_1shadow_1type_FUNC,
	gtk_1selection_1data_1free_FUNC,
	gtk_1selection_1data_1get_1data_FUNC,
	gtk_1selection_1data_1get_1data_1type_FUNC,
	gtk_1selection_1data_1get_1format_FUNC,
	gtk_1selection_1data_1get_1length_FUNC,
	gtk_1selection_1data_1get_1target_FUNC,
	gtk_1selection_1data_1set_FUNC,
	gtk_1separator_1menu_1item_1new_FUNC,
	gtk_1separator_1tool_1item_1new_FUNC,
	gtk_1separator_1tool_1item_1set_1draw_FUNC,
	gtk_1status_1icon_1get_1visible_FUNC,
	gtk_1status_1icon_1new_FUNC,
	gtk_1status_1icon_1set_1from_1pixbuf_FUNC,
	gtk_1status_1icon_1set_1tooltip_1text_FUNC,
	gtk_1status_1icon_1set_1visible_FUNC,
	gtk_1target_1list_1new_FUNC,
	gtk_1target_1list_1unref_FUNC,
	gtk_1toggle_1tool_1button_1get_1active_FUNC,
	gtk_1toggle_1tool_1button_1new_FUNC,
	gtk_1toggle_1tool_1button_1set_1active_FUNC,
	gtk_1tool_1button_1new_FUNC,
	gtk_1tool_1button_1set_1icon_1widget_FUNC,
	gtk_1tool_1button_1set_1label_1widget_FUNC,
	gtk_1tool_1button_1set_1use_1underline_FUNC,
	gtk_1tool_1item_1get_1proxy_1menu_1item_FUNC,
	gtk_1tool_1item_1retrieve_1proxy_1menu_1item_FUNC,
	gtk_1tool_1item_1set_1homogeneous_FUNC,
	gtk_1tool_1item_1set_1is_1important_FUNC,
	gtk_1tool_1item_1set_1proxy_1menu_1item_FUNC,
	gtk_1toolbar_1insert_FUNC,
	gtk_1toolbar_1new_FUNC,
	gtk_1toolbar_1set_1icon_1size_FUNC,
	gtk_1toolbar_1set_1show_1arrow_FUNC,
	gtk_1toolbar_1set_1style_FUNC,
	gtk_1viewport_1set_1shadow_1type_FUNC,
	gtk_1widget_1get_1accessible_FUNC,
	gtk_1window_1activate_1default_FUNC,
	gtk_1window_1add_1accel_1group_FUNC,
	gtk_1window_1deiconify_FUNC,
	gtk_1window_1get_1icon_1list_FUNC,
	gtk_1window_1get_1mnemonic_1modifier_FUNC,
	gtk_1window_1get_1position_FUNC,
	gtk_1window_1get_1size_FUNC,
	gtk_1window_1iconify_FUNC,
	gtk_1window_1move_FUNC,
	gtk_1window_1new_FUNC,
	gtk_1window_1remove_1accel_1group_FUNC,
	gtk_1window_1resize_FUNC,
	gtk_1window_1set_1attached_1to_FUNC,
	gtk_1window_1set_1default_FUNC,
	gtk_1window_1set_1icon_1list_FUNC,
	gtk_1window_1set_1keep_1above_FUNC,
	gtk_1window_1set_1skip_1taskbar_1hint_FUNC,
	gtk_1window_1set_1type_1hint_FUNC,
} GTK3_FUNCS;
