/*******************************************************************************
 * Copyright (c) 2020 Equo
 *
 * 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:
 *    Guillermo Zunino, Equo - initial 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 ChromiumLib_nativeFunctionCount;
extern int ChromiumLib_nativeFunctionCallCount[];
extern char* ChromiumLib_nativeFunctionNames[];
#define ChromiumLib_NATIVE_ENTER(env, that, func) ChromiumLib_nativeFunctionCallCount[func]++;
#define ChromiumLib_NATIVE_EXIT(env, that, func) 
#else
#ifndef ChromiumLib_NATIVE_ENTER
#define ChromiumLib_NATIVE_ENTER(env, that, func) 
#endif
#ifndef ChromiumLib_NATIVE_EXIT
#define ChromiumLib_NATIVE_EXIT(env, that, func) 
#endif
#endif

typedef enum {
	cef_1app_1t_1sizeof_FUNC,
	cef_1browser_1process_1handler_1t_1sizeof_FUNC,
	cef_1client_1t_1sizeof_FUNC,
	cef_1context_1menu_1handler_1t_1sizeof_FUNC,
	cef_1cookie_1visitor_1t_1sizeof_FUNC,
	cef_1display_1handler_1t_1sizeof_FUNC,
	cef_1focus_1handler_1t_1sizeof_FUNC,
	cef_1jsdialog_1handler_1t_1sizeof_FUNC,
	cef_1life_1span_1handler_1t_1sizeof_FUNC,
	cef_1load_1handler_1t_1sizeof_FUNC,
	cef_1popup_1features_1t_1sizeof_FUNC,
	cef_1request_1handler_1t_1sizeof_FUNC,
	cef_1string_1visitor_1t_1sizeof_FUNC,
	cefswt_1auth_1callback_FUNC,
	cefswt_1cefstring_1to_1java_FUNC,
	cefswt_1close_1browser_FUNC,
	cefswt_1context_1menu_1cancel_FUNC,
	cefswt_1cookie_1to_1java_FUNC,
	cefswt_1cookie_1value_FUNC,
	cefswt_1create_1browser_FUNC,
	cefswt_1cstring_1to_1java_FUNC,
	cefswt_1delete_1cookies_FUNC,
	cefswt_1dialog_1close_FUNC,
	cefswt_1do_1message_1loop_1work_FUNC,
	cefswt_1eval_FUNC,
	cefswt_1execute_FUNC,
	cefswt_1free_FUNC,
	cefswt_1function_FUNC,
	cefswt_1function_1arg_FUNC,
	cefswt_1function_1id_FUNC,
	cefswt_1function_1return_FUNC,
	cefswt_1get_1cookie_FUNC,
	cefswt_1get_1id_FUNC,
	cefswt_1get_1text_FUNC,
	cefswt_1get_1url_FUNC,
	cefswt_1go_1back_FUNC,
	cefswt_1go_1forward_FUNC,
	cefswt_1init_FUNC,
	cefswt_1is_1main_1frame_FUNC,
	cefswt_1is_1same_FUNC,
	cefswt_1load_1url_FUNC,
	cefswt_1reload_FUNC,
	cefswt_1request_1to_1java_FUNC,
	cefswt_1resized_FUNC,
	cefswt_1set_1cookie_FUNC,
	cefswt_1set_1focus_FUNC,
	cefswt_1set_1window_1info_1parent_FUNC,
	cefswt_1shutdown_FUNC,
	cefswt_1stop_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1app_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1browser_1process_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1client_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1context_1menu_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1cookie_1visitor_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1display_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1focus_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1jsdialog_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1life_1span_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1load_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1request_1handler_1t_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_chromium_lib_cef_1string_1visitor_1t_2I_FUNC,
	memmove__Lorg_eclipse_swt_internal_chromium_lib_cef_1popup_1features_1t_2JI_FUNC,
} ChromiumLib_FUNCS;
