/*******************************************************************************
 * Copyright (c) 2009, 2020 IBM Corporation and others. All rights reserved.
 * The contents of this file are made available under the terms
 * of the GNU Lesser General Public License (LGPL) Version 2.1 that
 * accompanies this distribution (lgpl-v21.txt).  The LGPL is also
 * available at http://www.gnu.org/licenses/lgpl.html.  If the version
 * of the LGPL at http://www.gnu.org is different to the version of
 * the LGPL accompanying this distribution and there is any conflict
 * between the two license versions, the terms of the LGPL accompanying
 * this distribution shall govern.
 * 
 * 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 WebKitGTK_nativeFunctionCount;
extern int WebKitGTK_nativeFunctionCallCount[];
extern char* WebKitGTK_nativeFunctionNames[];
#define WebKitGTK_NATIVE_ENTER(env, that, func) WebKitGTK_nativeFunctionCallCount[func]++;
#define WebKitGTK_NATIVE_EXIT(env, that, func) 
#else
#ifndef WebKitGTK_NATIVE_ENTER
#define WebKitGTK_NATIVE_ENTER(env, that, func) 
#endif
#ifndef WebKitGTK_NATIVE_EXIT
#define WebKitGTK_NATIVE_EXIT(env, that, func) 
#endif
#endif

typedef enum {
	GdkRectangle_1sizeof_FUNC,
	JSObjectGetProperty_FUNC,
	JSObjectGetPropertyAtIndex_FUNC,
	JSObjectMakeArray_FUNC,
	JSStringCreateWithUTF8CString_FUNC,
	JSStringGetMaximumUTF8CStringSize_FUNC,
	JSStringGetUTF8CString_FUNC,
	JSStringRelease_FUNC,
	JSValueGetType_FUNC,
	JSValueMakeBoolean_FUNC,
	JSValueMakeNumber_FUNC,
	JSValueMakeString_FUNC,
	JSValueMakeUndefined_FUNC,
	JSValueToNumber_FUNC,
	JSValueToStringCopy_FUNC,
	soup_1cookie_1get_1name_FUNC,
	soup_1cookie_1get_1value_FUNC,
	soup_1cookie_1parse_FUNC,
	soup_1message_1headers_1append_FUNC,
	soup_1uri_1free_FUNC,
	soup_1uri_1new_FUNC,
	webkit_1authentication_1request_1authenticate_FUNC,
	webkit_1authentication_1request_1cancel_FUNC,
	webkit_1authentication_1request_1is_1retry_FUNC,
	webkit_1cookie_1manager_1add_1cookie_FUNC,
	webkit_1cookie_1manager_1add_1cookie_1finish_FUNC,
	webkit_1cookie_1manager_1get_1cookies_FUNC,
	webkit_1cookie_1manager_1get_1cookies_1finish_FUNC,
	webkit_1credential_1free_FUNC,
	webkit_1credential_1new_FUNC,
	webkit_1dom_1event_1target_1add_1event_1listener_FUNC,
	webkit_1dom_1mouse_1event_1get_1alt_1key_FUNC,
	webkit_1dom_1mouse_1event_1get_1button_FUNC,
	webkit_1dom_1mouse_1event_1get_1ctrl_1key_FUNC,
	webkit_1dom_1mouse_1event_1get_1meta_1key_FUNC,
	webkit_1dom_1mouse_1event_1get_1screen_1x_FUNC,
	webkit_1dom_1mouse_1event_1get_1screen_1y_FUNC,
	webkit_1dom_1mouse_1event_1get_1shift_1key_FUNC,
	webkit_1dom_1ui_1event_1get_1char_1code_FUNC,
	webkit_1dom_1ui_1event_1get_1detail_FUNC,
	webkit_1dom_1ui_1event_1get_1key_1code_FUNC,
	webkit_1download_1cancel_FUNC,
	webkit_1download_1get_1received_1data_1length_FUNC,
	webkit_1download_1get_1request_FUNC,
	webkit_1download_1get_1response_FUNC,
	webkit_1download_1get_1type_FUNC,
	webkit_1download_1get_1web_1view_FUNC,
	webkit_1download_1set_1allow_1overwrite_FUNC,
	webkit_1download_1set_1destination_FUNC,
	webkit_1get_1major_1version_FUNC,
	webkit_1get_1micro_1version_FUNC,
	webkit_1get_1minor_1version_FUNC,
	webkit_1hit_1test_1result_1context_1is_1link_FUNC,
	webkit_1hit_1test_1result_1get_1link_1title_FUNC,
	webkit_1hit_1test_1result_1get_1link_1uri_FUNC,
	webkit_1javascript_1result_1get_1global_1context_FUNC,
	webkit_1javascript_1result_1get_1value_FUNC,
	webkit_1javascript_1result_1unref_FUNC,
	webkit_1navigation_1policy_1decision_1get_1request_FUNC,
	webkit_1policy_1decision_1download_FUNC,
	webkit_1policy_1decision_1ignore_FUNC,
	webkit_1response_1policy_1decision_1get_1request_FUNC,
	webkit_1response_1policy_1decision_1get_1response_FUNC,
	webkit_1uri_1request_1get_1http_1headers_FUNC,
	webkit_1uri_1request_1get_1uri_FUNC,
	webkit_1uri_1request_1new_FUNC,
	webkit_1uri_1response_1get_1content_1length_FUNC,
	webkit_1uri_1response_1get_1mime_1type_FUNC,
	webkit_1web_1context_1allow_1tls_1certificate_1for_1host_FUNC,
	webkit_1web_1context_1get_1cookie_1manager_FUNC,
	webkit_1web_1context_1get_1default_FUNC,
	webkit_1web_1context_1get_1type_FUNC,
	webkit_1web_1context_1get_1website_1data_1manager_FUNC,
	webkit_1web_1context_1set_1tls_1errors_1policy_FUNC,
	webkit_1web_1context_1set_1web_1extensions_1directory_FUNC,
	webkit_1web_1context_1set_1web_1extensions_1initialization_1user_1data_FUNC,
	webkit_1web_1resource_1get_1data_FUNC,
	webkit_1web_1resource_1get_1data_1finish_FUNC,
	webkit_1web_1view_1can_1go_1back_FUNC,
	webkit_1web_1view_1can_1go_1forward_FUNC,
	webkit_1web_1view_1can_1show_1mime_1type_FUNC,
	webkit_1web_1view_1get_1context_FUNC,
	webkit_1web_1view_1get_1estimated_1load_1progress_FUNC,
	webkit_1web_1view_1get_1main_1resource_FUNC,
	webkit_1web_1view_1get_1page_1id_FUNC,
	webkit_1web_1view_1get_1settings_FUNC,
	webkit_1web_1view_1get_1title_FUNC,
	webkit_1web_1view_1get_1uri_FUNC,
	webkit_1web_1view_1get_1window_1properties_FUNC,
	webkit_1web_1view_1go_1back_FUNC,
	webkit_1web_1view_1go_1forward_FUNC,
	webkit_1web_1view_1load_1bytes_FUNC,
	webkit_1web_1view_1load_1html_FUNC,
	webkit_1web_1view_1load_1request_FUNC,
	webkit_1web_1view_1load_1uri_FUNC,
	webkit_1web_1view_1new_FUNC,
	webkit_1web_1view_1reload_FUNC,
	webkit_1web_1view_1run_1javascript_FUNC,
	webkit_1web_1view_1run_1javascript_1finish_FUNC,
	webkit_1web_1view_1stop_1loading_FUNC,
	webkit_1website_1data_1manager_1clear_FUNC,
	webkit_1window_1properties_1get_1geometry_FUNC,
} WebKitGTK_FUNCS;
