/*******************************************************************************
 * Copyright (c) 2000, 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 ATK_nativeFunctionCount;
extern int ATK_nativeFunctionCallCount[];
extern char* ATK_nativeFunctionNames[];
#define ATK_NATIVE_ENTER(env, that, func) ATK_nativeFunctionCallCount[func]++;
#define ATK_NATIVE_EXIT(env, that, func) 
#else
#ifndef ATK_NATIVE_ENTER
#define ATK_NATIVE_ENTER(env, that, func) 
#endif
#ifndef ATK_NATIVE_EXIT
#define ATK_NATIVE_EXIT(env, that, func) 
#endif
#endif

typedef enum {
	ATK_1ACTION_1GET_1IFACE_FUNC,
	ATK_1COMPONENT_1GET_1IFACE_FUNC,
	ATK_1EDITABLE_1TEXT_1GET_1IFACE_FUNC,
	ATK_1HYPERTEXT_1GET_1IFACE_FUNC,
	ATK_1SELECTION_1GET_1IFACE_FUNC,
	ATK_1TABLE_1GET_1IFACE_FUNC,
	ATK_1TEXT_1GET_1IFACE_FUNC,
	ATK_1TYPE_1ACTION_FUNC,
	ATK_1TYPE_1COMPONENT_FUNC,
	ATK_1TYPE_1EDITABLE_1TEXT_FUNC,
	ATK_1TYPE_1HYPERTEXT_FUNC,
	ATK_1TYPE_1SELECTION_FUNC,
	ATK_1TYPE_1TABLE_FUNC,
	ATK_1TYPE_1TEXT_FUNC,
	ATK_1TYPE_1VALUE_FUNC,
	ATK_1VALUE_1GET_1IFACE_FUNC,
	AtkAttribute_1sizeof_FUNC,
	AtkTextRange_1sizeof_FUNC,
	AtkTextRectangle_1sizeof_FUNC,
	atk_1object_1add_1relationship_FUNC,
	atk_1object_1notify_1state_1change_FUNC,
	atk_1object_1remove_1relationship_FUNC,
	atk_1state_1set_1add_1state_FUNC,
	atk_1text_1attribute_1get_1name_FUNC,
	atk_1text_1attribute_1get_1value_FUNC,
	call__JJ_FUNC,
	call__JJJ_FUNC,
	call__JJJJ_FUNC,
	call__JJJJJJ_FUNC,
	memmove__JLorg_eclipse_swt_internal_accessibility_gtk_AtkAttribute_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_accessibility_gtk_AtkTextRange_2I_FUNC,
	memmove__JLorg_eclipse_swt_internal_accessibility_gtk_AtkTextRectangle_2I_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkActionIface_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkAttribute_2JI_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkComponentIface_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkEditableTextIface_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkHypertextIface_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkObjectClass_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkSelectionIface_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkTableIface_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkTextIface_2J_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkTextRange_2JI_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkTextRectangle_2JI_FUNC,
	memmove__Lorg_eclipse_swt_internal_accessibility_gtk_AtkValueIface_2J_FUNC,
} ATK_FUNCS;
