###############################################################################
# Copyright (c) 2000, 2007 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
org_eclipse_swt_internal_BidiUtil=flags=no_gen

org_eclipse_swt_internal_C=
C_PTR_sizeof=

C_free=
C_free_0=cast=(void *)

C_getenv=
C_getenv_0=cast=(const char *)

C_malloc=
C_malloc_0=

C_memmove__III=
C_memmove__III_0=cast=(void *)
C_memmove__III_1=cast=(const void *)
C_memmove__III_2=cast=(size_t)

C_memmove__I_3BI=
C_memmove__I_3BI_0=cast=(void *)
C_memmove__I_3BI_1=cast=(const void *),flags=no_out critical
C_memmove__I_3BI_2=cast=(size_t)

C_memmove__I_3CI=
C_memmove__I_3CI_0=cast=(void *)
C_memmove__I_3CI_1=cast=(const void *),flags=no_out critical
C_memmove__I_3CI_2=cast=(size_t)

C_memmove__I_3DI=
C_memmove__I_3DI_0=cast=(void *)
C_memmove__I_3DI_1=cast=(const void *),flags=no_out critical
C_memmove__I_3DI_2=cast=(size_t)

C_memmove__I_3FI=
C_memmove__I_3FI_0=cast=(void *)
C_memmove__I_3FI_1=cast=(const void *),flags=no_out critical
C_memmove__I_3FI_2=cast=(size_t)

C_memmove__I_3II=
C_memmove__I_3II_0=cast=(void *)
C_memmove__I_3II_1=cast=(const void *),flags=no_out critical
C_memmove__I_3II_2=cast=(size_t)

C_memmove__I_3JI=
C_memmove__I_3JI_0=cast=(void *)
C_memmove__I_3JI_1=cast=(const void *),flags=no_out critical
C_memmove__I_3JI_2=cast=(size_t)

C_memmove__I_3SI=
C_memmove__I_3SI_0=cast=(void *)
C_memmove__I_3SI_1=cast=(const void *),flags=no_out critical
C_memmove__I_3SI_2=cast=(size_t)

C_memmove___3BII=
C_memmove___3BII_0=cast=(void *),flags=no_in critical
C_memmove___3BII_1=cast=(const void *)
C_memmove___3BII_2=cast=(size_t)

C_memmove___3B_3CI=
C_memmove___3B_3CI_0=cast=(void *),flags=no_in critical
C_memmove___3B_3CI_1=cast=(const void *),flags=no_out critical
C_memmove___3B_3CI_2=cast=(size_t)

C_memmove___3CII=
C_memmove___3CII_0=cast=(void *),flags=no_in critical
C_memmove___3CII_1=cast=(const void *)
C_memmove___3CII_2=cast=(size_t)

C_memmove___3DII=
C_memmove___3DII_0=cast=(void *),flags=no_in critical
C_memmove___3DII_1=cast=(const void *)
C_memmove___3DII_2=cast=(size_t)

C_memmove___3FII=
C_memmove___3FII_0=cast=(void *),flags=no_in critical
C_memmove___3FII_1=cast=(const void *)
C_memmove___3FII_2=cast=(size_t)

C_memmove___3III=
C_memmove___3III_0=cast=(void *),flags=no_in critical
C_memmove___3III_1=cast=(const void *)
C_memmove___3III_2=cast=(size_t)

C_memmove___3I_3BI=
C_memmove___3I_3BI_0=cast=(void *),flags=no_in critical
C_memmove___3I_3BI_1=cast=(const void *)
C_memmove___3I_3BI_2=cast=(size_t)

C_memmove___3JII=
C_memmove___3JII_0=cast=(void *),flags=no_in critical
C_memmove___3JII_1=cast=(const void *)
C_memmove___3JII_2=cast=(size_t)

C_memmove___3SII=
C_memmove___3SII_0=cast=(void *),flags=no_in critical
C_memmove___3SII_1=cast=(const void *)
C_memmove___3SII_2=cast=(size_t)

C_memset=
C_memset_0=cast=(void *),flags=critical
C_memset_1=
C_memset_2=cast=(size_t)

C_strlen=
C_strlen_0=cast=(char *)


org_eclipse_swt_internal_Callback=flags=no_gen
Callback_bind=
Callback_bind_0=
Callback_bind_1=
Callback_bind_2=
Callback_bind_3=
Callback_bind_4=
Callback_bind_5=
Callback_bind_6=
Callback_bind_7=

Callback_getEnabled=

Callback_getEntryCount=

Callback_getPlatform=

Callback_reset=

Callback_setEnabled=
Callback_setEnabled_0=

Callback_unbind=
Callback_unbind_0=


org_eclipse_swt_internal_CloneableCompatibility=flags=no_gen

org_eclipse_swt_internal_Compatibility=flags=no_gen

org_eclipse_swt_internal_LONG=flags=no_gen
LONG_value=

org_eclipse_swt_internal_Library=flags=no_gen

org_eclipse_swt_internal_Lock=flags=no_gen

org_eclipse_swt_internal_Platform=flags=no_gen

org_eclipse_swt_internal_SWTEventListener=flags=no_gen

org_eclipse_swt_internal_SWTEventObject=flags=no_gen

org_eclipse_swt_internal_SerializableCompatibility=flags=no_gen

